diff --git a/.deepsource.toml b/.deepsource.toml new file mode 100644 index 0000000000..4f240cc9a6 --- /dev/null +++ b/.deepsource.toml @@ -0,0 +1,33 @@ +version = 1 +exclude_patterns = [ + "docs/docs/javascripts/**", # Docs: Helpers + "docs/ci/**", # Docs: CI + "InvenTree/InvenTree/static/**", # Backend: CUI static files + "ci/**", # Backend: CI + "InvenTree/**/migrations/*.py", # Backend: Migration files + "src/frontend/src/locales/**", # Frontend: Translations +] +test_patterns = ["**/test_*.py", "**/test.py", "**/tests.py"] + + +[[analyzers]] +name = "shell" + +[[analyzers]] +name = "javascript" + +[analyzers.meta] +plugins = ["react"] + +[[analyzers]] +name = "python" + +[analyzers.meta] +runtime_version = "3.x.x" + +[[analyzers]] +name = "docker" + +[[analyzers]] +name = "test-coverage" +enabled = false diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 977ce8b122..375396bcfc 100755 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -7,7 +7,7 @@ FROM mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT} ARG WORKSPACE="/workspaces/InvenTree" # [Choice] Node.js version: none, lts/*, 16, 14, 12, 10 -ARG NODE_VERSION="none" +ARG NODE_VERSION="18" RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi # [Optional] If your pip requirements rarely change, uncomment this section to add them to the image. @@ -28,18 +28,21 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive && \ # PostgreSQL support libpq-dev \ # MySQL / MariaDB support - default-libmysqlclient-dev mariadb-client && \ - apt-get autoclean && apt-get autoremove + default-libmysqlclient-dev mariadb-client \ + # LDAP support + libldap2-dev libsasl2-dev && \ + apt-get autoclean && apt-get autoremove && \ + rm -rf /var/lib/apt/lists/* # [Optional] Uncomment this line to install global node packages. # RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1 # Update pip -RUN pip install --upgrade pip +RUN pip install --no-cache-dir --upgrade pip # Install required base-level python packages COPY ./docker/requirements.txt base_requirements.txt -RUN pip install --disable-pip-version-check -U -r base_requirements.txt +RUN pip install --disable-pip-version-check --no-cache-dir -U -r base_requirements.txt # preserve command history between container starts # Ref: https://code.visualstudio.com/remote/advancedcontainers/persist-bash-history diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 8b13e7d7f5..4a3ca63168 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -68,7 +68,7 @@ "remoteEnv": { // InvenTree config "INVENTREE_DEBUG": "True", - "INVENTREE_DEBUG_LEVEL": "INFO", + "INVENTREE_LOG_LEVEL": "INFO", "INVENTREE_DB_ENGINE": "sqlite3", "INVENTREE_DB_NAME": "${containerWorkspaceFolder}/dev/database.sqlite3", "INVENTREE_MEDIA_ROOT": "${containerWorkspaceFolder}/dev/media", diff --git a/.devcontainer/postCreateCommand.sh b/.devcontainer/postCreateCommand.sh index e5e78d6b0c..611ac2ffb3 100755 --- a/.devcontainer/postCreateCommand.sh +++ b/.devcontainer/postCreateCommand.sh @@ -14,8 +14,9 @@ python3 -m venv dev/venv # setup InvenTree server pip install invoke -invoke update +invoke update --no-frontend invoke setup-dev +invoke frontend-install # remove existing gitconfig created by "Avoiding Dubious Ownership" step # so that it gets copied from host to the container to have your global diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index af858fdcdc..ff3198174d 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,4 @@ github: inventree ko_fi: inventree patreon: inventree +custom: [paypal.me/inventree] diff --git a/.github/actions/migration/action.yaml b/.github/actions/migration/action.yaml index be2baf28c4..ca90ef0cd2 100644 --- a/.github/actions/migration/action.yaml +++ b/.github/actions/migration/action.yaml @@ -1,5 +1,5 @@ name: 'Migration test' -description: 'Run migration test sequenze' +description: 'Run migration test sequence' author: 'InvenTree' runs: diff --git a/.github/actions/setup/action.yaml b/.github/actions/setup/action.yaml index 1d030f1ef4..17f48dbf79 100644 --- a/.github/actions/setup/action.yaml +++ b/.github/actions/setup/action.yaml @@ -35,12 +35,12 @@ runs: using: 'composite' steps: - name: Checkout Code - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 # Python installs - name: Set up Python ${{ env.python_version }} if: ${{ inputs.python == 'true' }} - uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # pin@v4.3.0 + uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # pin@v4.7.1 with: python-version: ${{ env.python_version }} cache: pip @@ -58,7 +58,7 @@ runs: # NPM installs - name: Install node.js ${{ env.node_version }} if: ${{ inputs.npm == 'true' }} - uses: actions/setup-node@969bd2663942d722d85b6a8626225850c2f7be4b # pin to v3.5.0 + uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # pin to v3.8.2 with: node-version: ${{ env.node_version }} cache: 'npm' diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index d44a811465..cd97cccf9f 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -7,7 +7,7 @@ name: Backport on: pull_request_target: - types: ["labeled", "closed"] + types: [ "labeled", "closed" ] jobs: backport: @@ -22,7 +22,7 @@ jobs: ) steps: - name: Backport Action - uses: sqren/backport-github-action@v8.9.3 + uses: sqren/backport-github-action@f54e19901f2a57f8b82360f2490d47ee82ec82c6 # pin@v9.2.2 with: github_token: ${{ secrets.GITHUB_TOKEN }} auto_backport_label_prefix: backport-to- diff --git a/.github/workflows/check_translations.yaml b/.github/workflows/check_translations.yaml index b408ab5d74..37990fa230 100644 --- a/.github/workflows/check_translations.yaml +++ b/.github/workflows/check_translations.yaml @@ -25,9 +25,9 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Set Up Python ${{ env.python_version }} - uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # pin@v4.3.0 + uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # pin@v4.7.1 with: python-version: ${{ env.python_version }} cache: 'pip' diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 4e814cbcca..7d29563ae9 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -20,7 +20,6 @@ on: push: branches: - 'master' - # pull_request: # branches: # - 'master' @@ -39,9 +38,9 @@ jobs: python_version: 3.9 steps: - name: Check out repo - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Set Up Python ${{ env.python_version }} - uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # pin@v4.3.0 + uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # pin@v4.7.1 with: python-version: ${{ env.python_version }} - name: Version Check @@ -60,7 +59,7 @@ jobs: docker-compose run inventree-dev-server invoke update docker-compose run inventree-dev-server invoke setup-dev docker-compose up -d - docker-compose run inventree-dev-server pip install --upgrade setuptools + docker-compose run inventree-dev-server pip install setuptools==68.1.2 docker-compose run inventree-dev-server invoke wait - name: Check Data Directory # The following file structure should have been created by the docker image @@ -78,26 +77,27 @@ jobs: run: | echo "GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> docker.dev.env docker-compose run inventree-dev-server invoke test --disable-pty + docker-compose run inventree-dev-server invoke test --migrations --disable-pty docker-compose down - name: Set up QEMU if: github.event_name != 'pull_request' - uses: docker/setup-qemu-action@e81a89b1732b9c48d79cd809d8d81d79c4647a18 # pin@v2.1.0 + 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@95cb08cb2672c73d4ffd2f422e6d11953d2a9c70 # pin@v2.1.0 + uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # pin@v3.0.0 - name: Set up cosign if: github.event_name != 'pull_request' - uses: sigstore/cosign-installer@7cc35d7fdbe70d4278a0c96779081e6fac665f88 # pin@v2.8.0 + uses: sigstore/cosign-installer@11086d25041f77fe8fe7b9ea4e48e3b9192b8f19 # pin@v3.1.2 - name: Login to Dockerhub if: github.event_name != 'pull_request' - uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a # pin@v2.1.0 + uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # pin@v3.0.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Log into registry ghcr.io if: github.event_name != 'pull_request' - uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a # pin@v2 + uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # pin@v3.0.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -106,7 +106,7 @@ jobs: - name: Extract Docker metadata if: github.event_name != 'pull_request' id: meta - uses: docker/metadata-action@12cce9efe0d49980455aaaca9b071c0befcdd702 # pin@v4.1.0 + uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # pin@v5.0.0 with: images: | inventree/inventree @@ -115,7 +115,7 @@ jobs: - name: Build and Push id: build-and-push if: github.event_name != 'pull_request' - uses: docker/build-push-action@c56af957549030174b10d6867f20e78cfd7debc5 # pin@v3.2.0 + uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # pin@v5.0.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -132,5 +132,4 @@ jobs: if: ${{ false }} # github.event_name != 'pull_request' env: COSIGN_EXPERIMENTAL: "true" - run: cosign sign ${{ steps.meta.outputs.tags }}@${{ - steps.build-and-push.outputs.digest }} + run: cosign sign ${{ steps.meta.outputs.tags }}@${{ steps.build-and-push.outputs.digest }} diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml index c89cf7a8f2..80ad555380 100644 --- a/.github/workflows/qc_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -4,9 +4,9 @@ name: QC on: push: - branches-ignore: ['l10*'] + branches-ignore: [ 'l10*' ] pull_request: - branches-ignore: ['l10*'] + branches-ignore: [ 'l10*' ] env: python_version: 3.9 @@ -28,17 +28,24 @@ jobs: outputs: server: ${{ steps.filter.outputs.server }} + migrations: ${{ steps.filter.outputs.migrations }} + frontend: ${{ steps.filter.outputs.frontend }} steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 - - uses: dorny/paths-filter@v2 - id: filter - with: - filters: | - server: - - 'InvenTree/**' - - 'requirements.txt' - - 'requirements-dev.txt' + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # pin@v2.11.1 + id: filter + with: + filters: | + server: + - 'InvenTree/**' + - 'requirements.txt' + - 'requirements-dev.txt' + migrations: + - '**/migrations/**' + - '.github/workflows**' + frontend: + - 'src/frontend/**' pep_style: name: Style [Python] @@ -48,7 +55,7 @@ jobs: if: needs.paths-filter.outputs.server == 'true' steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Environment Setup uses: ./.github/actions/setup with: @@ -57,13 +64,13 @@ jobs: run: flake8 InvenTree --extend-ignore=D javascript: - name: Style [JS] + name: Style - Classic UI [JS] runs-on: ubuntu-20.04 - needs: pep_style + needs: [ 'pep_style', 'pre-commit' ] steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Environment Setup uses: ./.github/actions/setup with: @@ -81,13 +88,13 @@ jobs: pre-commit: name: Style [pre-commit] runs-on: ubuntu-20.04 - - needs: pep_style + needs: paths-filter + if: needs.paths-filter.outputs.server == 'true' || needs.paths-filter.outputs.frontend == 'true' steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Set up Python ${{ env.python_version }} - uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # pin@v4.3.0 + uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # pin@v4.7.1 with: python-version: ${{ env.python_version }} cache: 'pip' @@ -106,9 +113,9 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Set up Python ${{ env.python_version }} - uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # pin@v4.3.0 + uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # pin@v4.7.1 with: python-version: ${{ env.python_version }} - name: Check Config @@ -138,16 +145,16 @@ jobs: INVENTREE_PYTHON_TEST_PASSWORD: testpassword steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Environment Setup uses: ./.github/actions/setup with: apt-dependency: gettext poppler-utils dev-install: true update: true + npm: true - name: Download Python Code For `${{ env.wrapper_name }}` - run: git clone --depth 1 https://github.com/inventree/${{ env.wrapper_name }} - ./${{ env.wrapper_name }} + run: git clone --depth 1 https://github.com/inventree/${{ env.wrapper_name }} ./${{ env.wrapper_name }} - name: Start InvenTree Server run: | invoke delete-data -f @@ -168,7 +175,7 @@ jobs: continue-on-error: true steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Environment Setup uses: ./.github/actions/setup with: @@ -180,7 +187,7 @@ jobs: name: Tests - DB [SQLite] + Coverage runs-on: ubuntu-20.04 - needs: [ 'javascript', 'pre-commit' ] + needs: [ 'pep_style', 'pre-commit' ] continue-on-error: true # continue if a step fails so that coverage gets pushed env: @@ -190,7 +197,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Environment Setup uses: ./.github/actions/setup with: @@ -204,16 +211,16 @@ jobs: - name: Check Migration Files run: python3 ci/check_migration_files.py - name: Coverage Tests - run: invoke coverage + run: invoke test --coverage - name: Upload Coverage Report - uses: coverallsapp/github-action@v2 + uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949 # pin@v2.2.3 with: github-token: ${{ secrets.GITHUB_TOKEN }} postgres: name: Tests - DB [PostgreSQL] runs-on: ubuntu-20.04 - needs: [ 'javascript', 'pre-commit' ] + needs: [ 'pep_style', 'pre-commit' ] env: INVENTREE_DB_ENGINE: django.db.backends.postgresql @@ -240,7 +247,7 @@ jobs: - 6379:6379 steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Environment Setup uses: ./.github/actions/setup with: @@ -257,8 +264,7 @@ jobs: name: Tests - DB [MySQL] runs-on: ubuntu-20.04 - needs: [ 'javascript', 'pre-commit' ] - if: github.event_name == 'push' + needs: [ 'pep_style', 'pre-commit' ] env: # Database backend configuration @@ -279,13 +285,12 @@ jobs: MYSQL_USER: inventree MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password - options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s - --health-retries=3 + options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 ports: - 3306:3306 steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Environment Setup uses: ./.github/actions/setup with: @@ -297,3 +302,148 @@ jobs: run: invoke test - name: Data Export Test uses: ./.github/actions/migration + + migration-tests: + name: Tests - Migrations [PostgreSQL] + runs-on: ubuntu-latest + needs: paths-filter + if: github.ref == 'refs/heads/master' && needs.paths-filter.outputs.migrations == 'true' + + env: + INVENTREE_DB_ENGINE: django.db.backends.postgresql + INVENTREE_DB_NAME: inventree + INVENTREE_DB_USER: inventree + INVENTREE_DB_PASSWORD: password + INVENTREE_DB_HOST: '127.0.0.1' + INVENTREE_DB_PORT: 5432 + INVENTREE_DEBUG: info + INVENTREE_PLUGINS_ENABLED: false + + services: + postgres: + image: postgres:14 + env: + POSTGRES_USER: inventree + POSTGRES_PASSWORD: password + ports: + - 5432:5432 + + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - name: Environment Setup + uses: ./.github/actions/setup + with: + apt-dependency: gettext poppler-utils libpq-dev + pip-dependency: psycopg2 + dev-install: true + update: true + - name: Run Tests + run: invoke test --migrations --report + + migrations-checks: + name: Tests - Full Migration [SQLite] + runs-on: ubuntu-latest + needs: paths-filter + if: github.ref == 'refs/heads/master' && needs.paths-filter.outputs.migrations == 'true' + + env: + INVENTREE_DB_ENGINE: sqlite3 + INVENTREE_DB_NAME: /home/runner/work/InvenTree/db.sqlite3 + INVENTREE_DEBUG: info + INVENTREE_PLUGINS_ENABLED: false + + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + name: Checkout Code + - name: Environment Setup + uses: ./.github/actions/setup + with: + install: true + - name: Fetch Database + run: git clone --depth 1 https://github.com/inventree/test-db ./test-db + + - name: Latest Database + run: | + cp test-db/latest.sqlite3 /home/runner/work/InvenTree/db.sqlite3 + chmod +rw /home/runner/work/InvenTree/db.sqlite3 + invoke migrate + + - name: 0.10.0 Database + run: | + rm /home/runner/work/InvenTree/db.sqlite3 + cp test-db/stable_0.10.0.sqlite3 /home/runner/work/InvenTree/db.sqlite3 + chmod +rw /home/runner/work/InvenTree/db.sqlite3 + invoke migrate + + - name: 0.11.0 Database + run: | + rm /home/runner/work/InvenTree/db.sqlite3 + cp test-db/stable_0.11.0.sqlite3 /home/runner/work/InvenTree/db.sqlite3 + chmod +rw /home/runner/work/InvenTree/db.sqlite3 + invoke migrate + + - name: 0.12.0 Database + run: | + rm /home/runner/work/InvenTree/db.sqlite3 + cp test-db/stable_0.12.0.sqlite3 /home/runner/work/InvenTree/db.sqlite3 + chmod +rw /home/runner/work/InvenTree/db.sqlite3 + invoke migrate + + platform_ui: + name: Tests - Platform UI + runs-on: ubuntu-20.04 + timeout-minutes: 60 + needs: [ 'pre-commit', 'paths-filter' ] + if: needs.paths-filter.outputs.frontend == 'true' + env: + INVENTREE_DB_ENGINE: sqlite3 + INVENTREE_DB_NAME: /home/runner/work/InvenTree/db.sqlite3 + INVENTREE_DEBUG: True + INVENTREE_PLUGINS_ENABLED: false + + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - name: Environment Setup + uses: ./.github/actions/setup + with: + npm: true + install: true + update: true + - name: Set up test data + run: invoke setup-test -i + - name: Install dependencies + run: inv frontend-compile + - name: Install Playwright Browsers + run: cd src/frontend && npx playwright install --with-deps + - name: Run Playwright tests + run: cd src/frontend && npx playwright test + - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # pin@v3.1.3 + if: always() + with: + name: playwright-report + path: src/frontend/playwright-report/ + retention-days: 30 + + platform_ui_build: + name: Build - UI Platform + runs-on: ubuntu-20.04 + timeout-minutes: 60 + + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - name: Environment Setup + uses: ./.github/actions/setup + with: + npm: true + - name: Install dependencies + run: cd src/frontend && yarn install + - name: Build frontend + run: cd src/frontend && npm run build + - name: Zip frontend + run: | + cd InvenTree/web/static + zip -r frontend-build.zip web/ + - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # pin@v3.1.3 + with: + name: frontend-build + path: InvenTree/web/static/web diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 15ae18ed10..b22280b195 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,15 +13,39 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - name: Checkout Code - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Version Check run: | pip install requests python3 ci/version_check.py - name: Push to Stable Branch - uses: ad-m/github-push-action@4dcce6dea3e3c8187237fc86b7dfdc93e5aaae58 # pin@master + uses: ad-m/github-push-action@d91a481090679876dfc4178fef17f286781251df # pin@v0.8.0 if: env.stable_release == 'true' with: github_token: ${{ secrets.GITHUB_TOKEN }} branch: stable force: true + + publish-build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 + - name: Environment Setup + uses: ./.github/actions/setup + with: + npm: true + - name: Install dependencies + run: cd src/frontend && yarn install + - name: Build frontend + run: cd src/frontend && npm run build + - name: Zip frontend + run: | + cd InvenTree/web/static/web + zip -r ../frontend-build.zip * + - uses: svenstaro/upload-release-action@1beeb572c19a9242f4361f4cee78f8e0d9aec5df # pin@2.7.0 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: InvenTree/web/static/frontend-build.zip + asset_name: frontend-build.zip + tag: ${{ github.ref }} + overwrite: true diff --git a/.github/workflows/sponsors.yml b/.github/workflows/sponsors.yml new file mode 100644 index 0000000000..a074753380 --- /dev/null +++ b/.github/workflows/sponsors.yml @@ -0,0 +1,33 @@ +name: Generate Sponsors README +on: + workflow_dispatch: + schedule: + - cron: 30 15 * * 0-6 +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + + - name: Generate Sponsors + uses: JamesIves/github-sponsors-readme-action@a2d75a8d58b117b19777a910e284ccb082aaf117 + with: + token: ${{ secrets.INVENTREE_SPONSORS_TOKEN }} + file: 'README.md' + organization: true + + - name: Commit files + run: | + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git checkout -b sponsors + git add README.md + git commit -m "updated sponsors" + + - name: Push Changes + uses: ad-m/github-push-action@d91a481090679876dfc4178fef17f286781251df + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: sponsors + force: true diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index eefed27ed7..64433876ef 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -14,11 +14,10 @@ jobs: pull-requests: write steps: - - uses: actions/stale@5ebf00ea0e4c1561e9b43a292ed34424fb1d4578 # pin@v6.0.1 + - uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84 # pin@v8.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'This issue seems stale. Please react to show this is still - important.' + stale-issue-message: 'This issue seems stale. Please react to show this is still important.' stale-pr-message: 'This PR seems stale. Please react to show this is still important.' stale-issue-label: 'inactive' stale-pr-label: 'inactive' diff --git a/.github/workflows/translations.yml b/.github/workflows/translations.yml index 52d0398102..16e0721dba 100644 --- a/.github/workflows/translations.yml +++ b/.github/workflows/translations.yml @@ -21,11 +21,15 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Set up Python 3.9 - uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984 # pin@v4.3.0 + uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # pin@v4.7.1 with: python-version: 3.9 + - name: Set up Node 16 + uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # pin to v3.8.2 + with: + node-version: 16 - name: Install Dependencies run: | sudo apt-get update @@ -33,8 +37,7 @@ jobs: pip3 install invoke invoke install - name: Make Translations - run: | - invoke translate + run: invoke translate - name: Commit files run: | git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" @@ -43,7 +46,7 @@ jobs: git add "*.po" git commit -m "updated translation base" - name: Push changes - uses: ad-m/github-push-action@4dcce6dea3e3c8187237fc86b7dfdc93e5aaae58 # pin@master + uses: ad-m/github-push-action@d91a481090679876dfc4178fef17f286781251df # pin@v0.8.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} branch: l10 diff --git a/.github/workflows/update.yml.disabled b/.github/workflows/update.yml.disabled index 50cfe65196..a3cecb147e 100644 --- a/.github/workflows/update.yml.disabled +++ b/.github/workflows/update.yml.disabled @@ -9,14 +9,13 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # pin@v3.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Setup run: pip install -r requirements-dev.txt - name: Update requirements.txt run: pip-compile --output-file=requirements.txt requirements.in -U - name: Update requirements-dev.txt - run: pip-compile --generate-hashes --output-file=requirements-dev.txt - requirements-dev.in -U + run: pip-compile --generate-hashes --output-file=requirements-dev.txt requirements-dev.in -U - uses: stefanzweifel/git-auto-commit-action@fd157da78fa13d9383e5580d1fd1184d89554b51 # pin@v4.15.1 with: commit_message: "[Bot] Updated dependency" diff --git a/.gitignore b/.gitignore index 38dea68006..d54279ccd4 100644 --- a/.gitignore +++ b/.gitignore @@ -40,9 +40,11 @@ inventree-demo-dataset/ inventree-data/ dummy_image.* _tmp.csv -inventree/label.pdf -inventree/label.png -inventree/my_special* +InvenTree/label.pdf +InvenTree/label.png +label.pdf +label.png +InvenTree/my_special* _tests*.txt # Local static and media file storage (only when running in development mode) @@ -101,3 +103,6 @@ InvenTree/plugins/ # Compiled translation files *.mo + +# web frontend (static files) +InvenTree/web/static diff --git a/.pkgr.yml b/.pkgr.yml index ef91326b82..f00c5b2d92 100644 --- a/.pkgr.yml +++ b/.pkgr.yml @@ -19,8 +19,9 @@ before: - contrib/packager.io/before.sh dependencies: - curl - - python3 - - python3-venv + - python3.9 + - python3.9-venv + - python3.9-dev - python3-pip - python3-cffi - python3-brotli @@ -35,3 +36,4 @@ dependencies: targets: ubuntu-20.04: true debian-11: true + debian-12: true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 43fb414092..bd43f93b65 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,18 +3,19 @@ exclude: | (?x)^( InvenTree/InvenTree/static/.*| - InvenTree/locale/.* + InvenTree/locale/.*| + src/frontend/src/locales/.* )$ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.4.0 + rev: v4.5.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - id: mixed-line-ending - repo: https://github.com/pycqa/flake8 - rev: '6.0.0' + rev: '6.1.0' hooks: - id: flake8 additional_dependencies: [ @@ -23,14 +24,15 @@ repos: 'flake8-docstrings', 'flake8-string-format', 'flake8-tidy-imports', - 'pep8-naming' + 'pep8-naming', + 'flake8-logging' ] - repo: https://github.com/pycqa/isort rev: '5.12.0' hooks: - id: isort - repo: https://github.com/jazzband/pip-tools - rev: 6.13.0 + rev: 7.3.0 hooks: - id: pip-compile name: pip-compile requirements-dev.in @@ -41,16 +43,37 @@ repos: args: [requirements.in, -o, requirements.txt] files: ^requirements\.(in|txt)$ - repo: https://github.com/Riverside-Healthcare/djLint - rev: v1.29.0 + rev: v1.34.0 hooks: - id: djlint-django - repo: https://github.com/codespell-project/codespell - rev: v2.2.4 + rev: v2.2.6 hooks: - id: codespell exclude: > (?x)^( docs/docs/stylesheets/.*| docs/docs/javascripts/.*| - docs/docs/webfonts/.* + docs/docs/webfonts/.* | + src/frontend/src/locales/.* | )$ +- repo: https://github.com/pre-commit/mirrors-prettier + rev: "v3.0.3" + hooks: + - id: prettier + files: ^src/frontend/.*\.(js|jsx|ts|tsx)$ + additional_dependencies: + - "prettier@^2.4.1" + - "@trivago/prettier-plugin-sort-imports" +- repo: https://github.com/pre-commit/mirrors-eslint + rev: "v8.51.0" + hooks: + - id: eslint + additional_dependencies: + - eslint@^8.41.0 + - eslint-config-google@^0.14.0 + - eslint-plugin-react@6.10.3 + - babel-eslint@6.1.2 + - "@typescript-eslint/eslint-plugin@latest" + - "@typescript-eslint/parser" + files: ^src/frontend/.*\.(js|jsx|ts|tsx)$ diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 8eb8c3ca13..35a9d40f84 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -6,6 +6,12 @@ "version": "2.0.0", "tasks": [ + { + "label": "worker", + "type": "shell", + "command": "inv worker", + "problemMatcher": [], + }, { "label": "clean-settings", "type": "shell", diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2f6f6599b7..78fd74a5b1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,7 +19,7 @@ pip install invoke && invoke setup-dev --tests ```bash git clone https://github.com/inventree/InvenTree.git && cd InvenTree docker compose run inventree-dev-server invoke install -docker compose run inventree-dev-server invoke setup-test +docker compose run inventree-dev-server invoke setup-test --dev docker compose up -d ``` @@ -33,7 +33,7 @@ Run the following command to set up all toolsets for development. invoke setup-dev ``` -*We recommend you run this command before starting to contribute. This will install and set up `pre-commit` to run some checks before each commit and help reduce the style errors.* +*We recommend you run this command before starting to contribute. This will install and set up `pre-commit` to run some checks before each commit and help reduce errors.* ## Branches and Versioning @@ -82,10 +82,11 @@ The HEAD of the "stable" branch represents the latest stable release code. ## Environment ### Target version We are currently targeting: -| Name | Minimum version | -|---|---| -| Python | 3.9 | -| Django | 3.2 | +| Name | Minimum version | Note | +|---|---| --- | +| Python | 3.9 | | +| Django | 3.2 | | +| Node | 18 | Only needed for frontend development | ### Auto creating updates The following tools can be used to auto-upgrade syntax that was depreciated in new versions: @@ -135,10 +136,27 @@ To run only partial tests, for example for a module use: invoke test --runtest order ``` +To see all the available options: + +``` +invoke test --help +``` + ## Code Style -Submitted Python code is automatically checked against PEP style guidelines. Locally you can run `invoke style` to ensure the style checks will pass, before submitting the PR. -Please write docstrings for each function and class - we follow the [google doc-style](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings) for python. Docstrings for general javascript code is encouraged! Docstyles are checked by `invoke style`. +Code style is automatically checked as part of the project's CI pipeline on GitHub. This means that any pull requests which do not conform to the style guidelines will fail CI checks. + +### Backend Code + +Backend code (Python) is checked against the [PEP style guidelines](https://peps.python.org/pep-0008/). Please write docstrings for each function and class - we follow the [google doc-style](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings) for python. + +### Frontend Code + +Frontend code (Javascript) is checked using [eslint](https://eslint.org/). While docstrings are not enforced for front-end code, good code documentation is encouraged! + +### Running Checks Locally + +If you have followed the setup devtools procedure, then code style checking is performend automatically whenever you commit changes to the code. ### Django templates @@ -193,8 +211,11 @@ HTML and javascript files are passed through the django templating engine. Trans ``` ## Github use + ### Tags + The tags describe issues and PRs in multiple areas: + | Area | Name | Description | | --- | --- | --- | | Triage Labels | | | diff --git a/Dockerfile b/Dockerfile index b07a769b86..84709ab034 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,7 @@ # - Runs InvenTree web server under django development server # - Monitors source files for any changes, and live-reloads server -FROM python:3.9-slim as inventree_base +FROM python:3.10-alpine3.18 as inventree_base # Build arguments for this image ARG commit_hash="" @@ -17,6 +17,8 @@ ARG commit_date="" ARG commit_tag="" ENV PYTHONUNBUFFERED 1 +ENV PIP_DISABLE_PIP_VERSION_CHECK 1 +ENV INVOKE_RUN_SHELL="/bin/ash" ENV INVENTREE_LOG_LEVEL="WARNING" ENV INVENTREE_DOCKER="true" @@ -51,44 +53,64 @@ LABEL org.label-schema.schema-version="1.0" \ org.label-schema.vcs-url="https://github.com/inventree/InvenTree.git" \ org.label-schema.vcs-ref=${commit_tag} -# RUN apt-get upgrade && apt-get update -RUN apt-get update - -# Install required system packages -RUN apt-get install -y --no-install-recommends \ - git gcc g++ gettext gnupg libffi-dev libssl-dev \ - # Weasyprint requirements : https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#debian-11 - poppler-utils libpango-1.0-0 libpangoft2-1.0-0 \ +RUN apk add --no-cache \ + git gettext py-cryptography \ # Image format support - libjpeg-dev webp libwebp-dev \ + libjpeg libwebp zlib \ + # Weasyprint requirements : https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#alpine-3-12 + py3-pip py3-pillow py3-cffi py3-brotli pango poppler-utils openldap \ # SQLite support - sqlite3 \ + sqlite \ # PostgreSQL support - libpq-dev postgresql-client \ + postgresql-libs postgresql-client \ # MySQL / MariaDB support - default-libmysqlclient-dev mariadb-client && \ - apt-get autoclean && apt-get autoremove + mariadb-connector-c-dev mariadb-client && \ + # fonts + apk --update --upgrade --no-cache add fontconfig ttf-freefont font-noto terminus-font && fc-cache -f -# Update pip -RUN pip install --upgrade pip +EXPOSE 8000 -# For ARMv7 architecture, add the pinwheels repo (for cryptography library) +RUN mkdir -p ${INVENTREE_HOME} +WORKDIR ${INVENTREE_HOME} + +COPY ./docker/requirements.txt base_requirements.txt +COPY ./requirements.txt ./ + +# For ARMv7 architecture, add the piwheels repo (for cryptography library) # Otherwise, we have to build from source, which is difficult # Ref: https://github.com/inventree/InvenTree/pull/4598 -RUN \ - if [ `dpkg --print-architecture` = "armhf" ]; then \ - printf "[global]\nextra-index-url=https://www.piwheels.org/simple\n" > /etc/pip.conf ; \ - fi +RUN if [ `apk --print-arch` = "armv7" ]; then \ + printf "[global]\nextra-index-url=https://www.piwheels.org/simple\n" > /etc/pip.conf ; \ + fi -# Install required base-level python packages -COPY ./docker/requirements.txt base_requirements.txt -RUN pip install --disable-pip-version-check -U -r base_requirements.txt +RUN apk add --no-cache --virtual .build-deps \ + gcc g++ musl-dev openssl-dev libffi-dev cargo python3-dev openldap-dev \ + # Image format dev libs + jpeg-dev openjpeg-dev libwebp-dev zlib-dev \ + # DB specific dev libs + postgresql-dev sqlite-dev mariadb-dev && \ + pip install -r base_requirements.txt -r requirements.txt --no-cache-dir && \ + apk --purge del .build-deps + +COPY tasks.py docker/gunicorn.conf.py docker/init.sh ./ + +RUN chmod +x init.sh + +ENTRYPOINT ["/bin/sh", "./init.sh"] + +# Frontend builder image: +FROM inventree_base as frontend + +RUN apk add --no-cache --update nodejs npm && npm install -g yarn +RUN yarn config set network-timeout 600000 -g +COPY InvenTree ${INVENTREE_HOME}/InvenTree +COPY src ${INVENTREE_HOME}/src +COPY tasks.py ${INVENTREE_HOME}/tasks.py +RUN cd ${INVENTREE_HOME}/InvenTree && inv frontend-compile # InvenTree production image: # - Copies required files from local directory -# - Installs required python packages from requirements.txt # - Starts a gunicorn webserver - FROM inventree_base as production ENV INVENTREE_DEBUG=False @@ -98,35 +120,22 @@ ENV INVENTREE_COMMIT_HASH="${commit_hash}" ENV INVENTREE_COMMIT_DATE="${commit_date}" # Copy source code -COPY InvenTree ${INVENTREE_HOME}/InvenTree - -# Copy other key files -COPY requirements.txt ${INVENTREE_HOME}/requirements.txt -COPY tasks.py ${INVENTREE_HOME}/tasks.py -COPY docker/gunicorn.conf.py ${INVENTREE_HOME}/gunicorn.conf.py -COPY docker/init.sh ${INVENTREE_MNG_DIR}/init.sh - -# Need to be running from within this directory -WORKDIR ${INVENTREE_MNG_DIR} - -# Drop to the inventree user for the production image -#RUN adduser inventree -#RUN chown -R inventree:inventree ${INVENTREE_HOME} -#USER inventree - -# Install InvenTree packages -RUN pip3 install --user --disable-pip-version-check -r ${INVENTREE_HOME}/requirements.txt - -# Server init entrypoint -ENTRYPOINT ["/bin/bash", "./init.sh"] +COPY InvenTree ./InvenTree +COPY --from=frontend ${INVENTREE_HOME}/InvenTree/web/static/web ./InvenTree/web/static/web # Launch the production server # TODO: Work out why environment variables cannot be interpolated in this command # TODO: e.g. -b ${INVENTREE_WEB_ADDR}:${INVENTREE_WEB_PORT} fails here CMD gunicorn -c ./gunicorn.conf.py InvenTree.wsgi -b 0.0.0.0:8000 --chdir ./InvenTree + FROM inventree_base as dev +# Install nodejs / npm / yarn + +RUN apk add --no-cache --update nodejs npm && npm install -g yarn +RUN yarn config set network-timeout 600000 -g + # The development image requires the source code to be mounted to /home/inventree/ # So from here, we don't actually "do" anything, apart from some file management @@ -139,7 +148,7 @@ ENV INVENTREE_PY_ENV="${INVENTREE_DATA_DIR}/env" WORKDIR ${INVENTREE_HOME} # Entrypoint ensures that we are running in the python virtual environment -ENTRYPOINT ["/bin/bash", "./docker/init.sh"] +ENTRYPOINT ["/bin/ash", "./docker/init.sh"] # Launch the development server CMD ["invoke", "server", "-a", "${INVENTREE_WEB_ADDR}:${INVENTREE_WEB_PORT}"] diff --git a/InvenTree/InvenTree/admin.py b/InvenTree/InvenTree/admin.py index 2d5798a9d1..a9b68ece4f 100644 --- a/InvenTree/InvenTree/admin.py +++ b/InvenTree/InvenTree/admin.py @@ -1,5 +1,11 @@ """Admin classes""" +from django.contrib import admin +from django.http.request import HttpRequest + +from djmoney.contrib.exchange.admin import RateAdmin +from djmoney.contrib.exchange.models import Rate +from import_export.exceptions import ImportExportError from import_export.resources import ModelResource @@ -10,8 +16,38 @@ class InvenTreeResource(ModelResource): Ref: https://owasp.org/www-community/attacks/CSV_Injection """ + MAX_IMPORT_ROWS = 1000 + MAX_IMPORT_COLS = 100 + + def import_data_inner( + self, + dataset, + dry_run, + raise_errors, + using_transactions, + collect_failed_rows, + rollback_on_validation_errors=None, + **kwargs + ): + """Override the default import_data_inner function to provide better error handling""" + if len(dataset) > self.MAX_IMPORT_ROWS: + raise ImportExportError(f"Dataset contains too many rows (max {self.MAX_IMPORT_ROWS})") + + if len(dataset.headers) > self.MAX_IMPORT_COLS: + raise ImportExportError(f"Dataset contains too many columns (max {self.MAX_IMPORT_COLS})") + + return super().import_data_inner( + dataset, + dry_run, + raise_errors, + using_transactions, + collect_failed_rows, + rollback_on_validation_errors=rollback_on_validation_errors, + **kwargs + ) + def export_resource(self, obj): - """Custom function to override default row export behaviour. + """Custom function to override default row export behavior. Specifically, strip illegal leading characters to prevent formula injection """ @@ -31,3 +67,26 @@ class InvenTreeResource(ModelResource): row[idx] = val return row + + def get_fields(self, **kwargs): + """Return fields, with some common exclusions""" + fields = super().get_fields(**kwargs) + + fields_to_exclude = [ + 'metadata', + 'lft', 'rght', 'tree_id', 'level', + ] + + return [f for f in fields if f.column_name not in fields_to_exclude] + + +class CustomRateAdmin(RateAdmin): + """Admin interface for the Rate class""" + + def has_add_permission(self, request: HttpRequest) -> bool: + """Disable the 'add' permission for Rate objects""" + return False + + +admin.site.unregister(Rate) +admin.site.register(Rate, CustomRateAdmin) diff --git a/InvenTree/InvenTree/api.py b/InvenTree/InvenTree/api.py index 75c4e4b4f0..2c47b338ad 100644 --- a/InvenTree/InvenTree/api.py +++ b/InvenTree/InvenTree/api.py @@ -6,25 +6,87 @@ from django.http import JsonResponse from django.utils.translation import gettext_lazy as _ from django_q.models import OrmQ -from rest_framework import permissions +from drf_spectacular.utils import OpenApiResponse, extend_schema +from rest_framework import permissions, serializers from rest_framework.response import Response from rest_framework.serializers import ValidationError from rest_framework.views import APIView +import InvenTree.version import users.models from InvenTree.filters import SEARCH_ORDER_FILTER from InvenTree.mixins import ListCreateAPI from InvenTree.permissions import RolePermission from part.templatetags.inventree_extras import plugins_info from plugin.serializers import MetadataSerializer +from users.models import ApiToken -from .mixins import RetrieveUpdateAPI -from .status import is_worker_running -from .version import (inventreeApiVersion, inventreeInstanceName, - inventreeVersion) +from .email import is_email_configured +from .mixins import ListAPI, RetrieveUpdateAPI +from .status import check_system_health, is_worker_running +from .version import inventreeApiText from .views import AjaxView +class VersionView(APIView): + """Simple JSON endpoint for InvenTree version information.""" + + permission_classes = [ + permissions.IsAdminUser, + ] + + def get(self, request, *args, **kwargs): + """Return information about the InvenTree server.""" + return JsonResponse({ + 'dev': InvenTree.version.isInvenTreeDevelopmentVersion(), + 'up_to_date': InvenTree.version.isInvenTreeUpToDate(), + 'version': { + 'server': InvenTree.version.inventreeVersion(), + 'api': InvenTree.version.inventreeApiVersion(), + 'commit_hash': InvenTree.version.inventreeCommitHash(), + 'commit_date': InvenTree.version.inventreeCommitDate(), + 'commit_branch': InvenTree.version.inventreeBranch(), + 'python': InvenTree.version.inventreePythonVersion(), + 'django': InvenTree.version.inventreeDjangoVersion() + }, + 'links': { + 'doc': InvenTree.version.inventreeDocUrl(), + 'code': InvenTree.version.inventreeGithubUrl(), + 'credit': InvenTree.version.inventreeCreditsUrl(), + 'app': InvenTree.version.inventreeAppUrl(), + 'bug': f'{InvenTree.version.inventreeGithubUrl()}/issues' + } + }) + + +class VersionSerializer(serializers.Serializer): + """Serializer for a single version.""" + version = serializers.CharField() + date = serializers.CharField() + gh = serializers.CharField() + text = serializers.CharField() + latest = serializers.BooleanField() + + class Meta: + """Meta class for VersionSerializer.""" + fields = ['version', 'date', 'gh', 'text', 'latest'] + + +class VersionApiSerializer(serializers.Serializer): + """Serializer for the version api endpoint.""" + VersionSerializer(many=True) + + +class VersionTextView(ListAPI): + """Simple JSON endpoint for InvenTree version text.""" + permission_classes = [permissions.IsAdminUser] + + @extend_schema(responses={200: OpenApiResponse(response=VersionApiSerializer)}) + def list(self, request, *args, **kwargs): + """Return information about the InvenTree server.""" + return JsonResponse(inventreeApiText()) + + class InfoView(AjaxView): """Simple JSON endpoint for InvenTree information. @@ -35,38 +97,95 @@ class InfoView(AjaxView): def worker_pending_tasks(self): """Return the current number of outstanding background tasks""" - return OrmQ.objects.count() def get(self, request, *args, **kwargs): """Serve current server information.""" + is_staff = request.user.is_staff + if not is_staff and request.user.is_anonymous: + # Might be Token auth - check if so + is_staff = self.check_auth_header(request) + data = { 'server': 'InvenTree', - 'version': inventreeVersion(), - 'instance': inventreeInstanceName(), - 'apiVersion': inventreeApiVersion(), + 'version': InvenTree.version.inventreeVersion(), + 'instance': InvenTree.version.inventreeInstanceName(), + 'apiVersion': InvenTree.version.inventreeApiVersion(), 'worker_running': is_worker_running(), 'worker_pending_tasks': self.worker_pending_tasks(), 'plugins_enabled': settings.PLUGINS_ENABLED, 'active_plugins': plugins_info(), + 'email_configured': is_email_configured(), + 'debug_mode': settings.DEBUG, + 'docker_mode': settings.DOCKER, + 'system_health': check_system_health() if is_staff else None, + 'database': InvenTree.version.inventreeDatabase()if is_staff else None, + 'platform': InvenTree.version.inventreePlatform() if is_staff else None, + 'installer': InvenTree.version.inventreeInstaller() if is_staff else None, + 'target': InvenTree.version.inventreeTarget()if is_staff else None, } return JsonResponse(data) + def check_auth_header(self, request): + """Check if user is authenticated via a token in the header.""" + # TODO @matmair: remove after refacgtor of Token check is done + headers = request.headers.get('Authorization', request.headers.get('authorization')) + if not headers: + return False + + auth = headers.strip() + if not (auth.lower().startswith('token') and len(auth.split()) == 2): + return False + + token_key = auth.split()[1] + try: + token = ApiToken.objects.get(key=token_key) + if token.active and token.user and token.user.is_staff: + return True + except ApiToken.DoesNotExist: + pass + return False + class NotFoundView(AjaxView): """Simple JSON view when accessing an invalid API view.""" permission_classes = [permissions.AllowAny] - def get(self, request, *args, **kwargs): - """Process an `not found` event on the API.""" - data = { - 'details': _('API endpoint not found'), - 'url': request.build_absolute_uri(), - } + def not_found(self, request): + """Return a 404 error""" + return JsonResponse( + { + 'detail': _('API endpoint not found'), + 'url': request.build_absolute_uri(), + }, + status=404 + ) - return JsonResponse(data, status=404) + def options(self, request, *args, **kwargs): + """Return 404""" + return self.not_found(request) + + def get(self, request, *args, **kwargs): + """Return 404""" + return self.not_found(request) + + def post(self, request, *args, **kwargs): + """Return 404""" + return self.not_found(request) + + def patch(self, request, *args, **kwargs): + """Return 404""" + return self.not_found(request) + + def put(self, request, *args, **kwargs): + """Return 404""" + return self.not_found(request) + + def delete(self, request, *args, **kwargs): + """Return 404""" + return self.not_found(request) class BulkDeleteMixin: @@ -183,10 +302,8 @@ class APIDownloadMixin: if export_format and export_format in ['csv', 'tsv', 'xls', 'xlsx']: queryset = self.filter_queryset(self.get_queryset()) return self.download_queryset(queryset, export_format) - - else: - # Default to the parent class implementation - return super().get(request, *args, **kwargs) + # Default to the parent class implementation + return super().get(request, *args, **kwargs) def download_queryset(self, queryset, export_format): """This function must be implemented to provide a downloadFile request.""" @@ -203,6 +320,12 @@ class AttachmentMixin: filter_backends = SEARCH_ORDER_FILTER + search_fields = [ + 'attachment', + 'comment', + 'link', + ] + def perform_create(self, serializer): """Save the user information when a file is uploaded.""" attachment = serializer.save() @@ -225,7 +348,6 @@ class APISearchView(APIView): def get_result_types(self): """Construct a list of search types we can return""" - import build.api import company.api import order.api @@ -248,7 +370,6 @@ class APISearchView(APIView): def post(self, request, *args, **kwargs): """Perform search query against available models""" - data = request.data results = {} @@ -262,6 +383,11 @@ class APISearchView(APIView): 'offset': 0, } + if 'search' not in data: + raise ValidationError({ + 'search': 'Search term must be provided', + }) + for key, cls in self.get_result_types().items(): # Only return results which are specifically requested if key in data: diff --git a/InvenTree/InvenTree/api_version.py b/InvenTree/InvenTree/api_version.py index ae5f2bb9e1..0abe3e5575 100644 --- a/InvenTree/InvenTree/api_version.py +++ b/InvenTree/InvenTree/api_version.py @@ -2,10 +2,99 @@ # InvenTree API version -INVENTREE_API_VERSION = 123 +INVENTREE_API_VERSION = 150 +"""Increment this API version number whenever there is a significant change to the API that any clients need to know about.""" -""" -Increment this API version number whenever there is a significant change to the API that any clients need to know about +INVENTREE_API_TEXT = """ +v150 -> 2023-11-07: https://github.com/inventree/InvenTree/pull/5875 + - Extended user API endpoints to enable ordering + - Extended user API endpoints to enable user role changes + - Added endpoint to create a new user + +v149 -> 2023-11-07 : https://github.com/inventree/InvenTree/pull/5876 + - Add 'building' quantity to BomItem serializer + - Add extra ordering options for the BomItem list API + +v148 -> 2023-11-06 : https://github.com/inventree/InvenTree/pull/5872 + - Allow "quantity" to be specified when installing an item into another item + +v147 -> 2023-11-04: https://github.com/inventree/InvenTree/pull/5860 + - Adds "completed_lines" field to SalesOrder API endpoint + - Adds "completed_lines" field to PurchaseOrder API endpoint + +v146 -> 2023-11-02: https://github.com/inventree/InvenTree/pull/5822 + - Extended SSO Provider endpoint to contain if a provider is configured + - Adds API endpoints for Email Address model + +v145 -> 2023-10-30: https://github.com/inventree/InvenTree/pull/5786 + - Allow printing labels via POST including printing options in the body + +v144 -> 2023-10-23: https://github.com/inventree/InvenTree/pull/5811 + - Adds version information API endpoint + +v143 -> 2023-10-29: https://github.com/inventree/InvenTree/pull/5810 + - Extends the status endpoint to include information about system status and health + +v142 -> 2023-10-20: https://github.com/inventree/InvenTree/pull/5759 + - Adds generic API endpoints for looking up status models + +v141 -> 2023-10-23 : https://github.com/inventree/InvenTree/pull/5774 + - Changed 'part.responsible' from User to Owner + +v140 -> 2023-10-20 : https://github.com/inventree/InvenTree/pull/5664 + - Expand API token functionality + - Multiple API tokens can be generated per user + +v139 -> 2023-10-11 : https://github.com/inventree/InvenTree/pull/5509 + - Add new BarcodePOReceive endpoint to receive line items by scanning supplier barcodes + +v138 -> 2023-10-11 : https://github.com/inventree/InvenTree/pull/5679 + - Settings keys are no longer case sensitive + - Include settings units in API serializer + +v137 -> 2023-10-04 : https://github.com/inventree/InvenTree/pull/5588 + - Adds StockLocationType API endpoints + - Adds custom_icon, location_type to StockLocation endpoint + +v136 -> 2023-09-23 : https://github.com/inventree/InvenTree/pull/5595 + - Adds structural to StockLocation and PartCategory tree endpoints + +v135 -> 2023-09-19 : https://github.com/inventree/InvenTree/pull/5569 + - Adds location path detail to StockLocation and StockItem API endpoints + - Adds category path detail to PartCategory and Part API endpoints + +v134 -> 2023-09-11 : https://github.com/inventree/InvenTree/pull/5525 + - Allow "Attachment" list endpoints to be searched by attachment, link and comment fields + +v133 -> 2023-09-08 : https://github.com/inventree/InvenTree/pull/5518 + - Add extra optional fields which can be used for StockAdjustment endpoints + +v132 -> 2023-09-07 : https://github.com/inventree/InvenTree/pull/5515 + - Add 'issued_by' filter to BuildOrder API list endpoint + +v131 -> 2023-08-09 : https://github.com/inventree/InvenTree/pull/5415 + - Annotate 'available_variant_stock' to the SalesOrderLine serializer + +v130 -> 2023-07-14 : https://github.com/inventree/InvenTree/pull/5251 + - Refactor label printing interface + +v129 -> 2023-07-06 : https://github.com/inventree/InvenTree/pull/5189 + - Changes 'serial_lte' and 'serial_gte' stock filters to point to 'serial_int' field + +v128 -> 2023-07-06 : https://github.com/inventree/InvenTree/pull/5186 + - Adds 'available' filter for BuildLine API endpoint + +v127 -> 2023-06-24 : https://github.com/inventree/InvenTree/pull/5094 + - Enhancements for the PartParameter API endpoints + +v126 -> 2023-06-19 : https://github.com/inventree/InvenTree/pull/5075 + - Adds API endpoint for setting the "category" for multiple parts simultaneously + +v125 -> 2023-06-17 : https://github.com/inventree/InvenTree/pull/5064 + - Adds API endpoint for setting the "status" field for multiple stock items simultaneously + +v124 -> 2023-06-17 : https://github.com/inventree/InvenTree/pull/5057 + - Add "created_before" and "created_after" filters to the Part API v123 -> 2023-06-15 : https://github.com/inventree/InvenTree/pull/5019 - Add Metadata to: Plugin Config @@ -34,18 +123,17 @@ v117 -> 2023-05-22 : https://github.com/inventree/InvenTree/pull/4854 v116 -> 2023-05-18 : https://github.com/inventree/InvenTree/pull/4823 - Updates to part parameter implementation, to use physical units -v115 - > 2023-05-18 : https://github.com/inventree/InvenTree/pull/4846 +v115 -> 2023-05-18 : https://github.com/inventree/InvenTree/pull/4846 - Adds ability to partially scrap a build output v114 -> 2023-05-16 : https://github.com/inventree/InvenTree/pull/4825 - Adds "delivery_date" to shipments ->>>>>>> inventree/master v113 -> 2023-05-13 : https://github.com/inventree/InvenTree/pull/4800 - Adds API endpoints for scrapping a build output v112 -> 2023-05-13: https://github.com/inventree/InvenTree/pull/4741 - - Adds flag use_pack_size to the stock addition API, which allows addings packs + - Adds flag use_pack_size to the stock addition API, which allows adding packs v111 -> 2023-05-02 : https://github.com/inventree/InvenTree/pull/4367 - Adds tags to the Part serializer @@ -125,7 +213,7 @@ v90 -> 2023-01-25 : https://github.com/inventree/InvenTree/pull/4186/files v89 -> 2023-01-25 : https://github.com/inventree/InvenTree/pull/4214 - Adds updated field to SupplierPart API - - Adds API date orddering for supplier part list + - Adds API date ordering for supplier part list v88 -> 2023-01-17: https://github.com/inventree/InvenTree/pull/4225 - Adds 'priority' field to Build model and api endpoints diff --git a/InvenTree/InvenTree/apps.py b/InvenTree/InvenTree/apps.py index 4d2705be50..609602796e 100644 --- a/InvenTree/InvenTree/apps.py +++ b/InvenTree/InvenTree/apps.py @@ -9,12 +9,13 @@ from django.conf import settings from django.contrib.auth import get_user_model from django.core.exceptions import AppRegistryNotReady from django.db import transaction -from django.db.utils import IntegrityError +from django.db.utils import IntegrityError, OperationalError import InvenTree.conversion import InvenTree.tasks from InvenTree.config import get_setting -from InvenTree.ready import canAppAccessDatabase, isInTestMode +from InvenTree.ready import (canAppAccessDatabase, isInMainThread, + isInTestMode, isPluginRegistryLoaded) logger = logging.getLogger("inventree") @@ -34,8 +35,11 @@ class InvenTreeConfig(AppConfig): - Collecting notification methods - Adding users set in the current environment """ + # skip loading if plugin registry is not loaded or we run in a background thread + if not isPluginRegistryLoaded() or not isInMainThread(): + return + if canAppAccessDatabase() or settings.TESTING_ENV: - InvenTree.tasks.check_for_migrations(worker=False) self.remove_obsolete_tasks() @@ -44,11 +48,13 @@ class InvenTreeConfig(AppConfig): if not isInTestMode(): # pragma: no cover self.update_exchange_rates() + # Let the background worker check for migrations + InvenTree.tasks.offload_task(InvenTree.tasks.check_for_migrations) self.collect_notification_methods() # Ensure the unit registry is loaded - InvenTree.conversion.reload_unit_registry() + InvenTree.conversion.get_unit_registry() if canAppAccessDatabase() or settings.TESTING_ENV: self.add_user_on_startup() @@ -66,23 +72,61 @@ class InvenTreeConfig(AppConfig): return # Remove any existing obsolete tasks - Schedule.objects.filter(func__in=obsolete).delete() + try: + Schedule.objects.filter(func__in=obsolete).delete() + except Exception: + logger.exception("Failed to remove obsolete tasks - database not ready") def start_background_tasks(self): """Start all background tests for InvenTree.""" - logger.info("Starting background tasks...") + from django_q.models import Schedule + + # List of existing scheduled tasks (in the database) + existing_tasks = {} + + for existing_task in Schedule.objects.all(): + existing_tasks[existing_task.func] = existing_task + + tasks_to_create = [] + tasks_to_update = [] + # List of collected tasks found with the @scheduled_task decorator tasks = InvenTree.tasks.tasks.task_list for task in tasks: + ref_name = f'{task.func.__module__}.{task.func.__name__}' - InvenTree.tasks.schedule_task( - ref_name, - schedule_type=task.interval, - minutes=task.minutes, - ) + + if ref_name in existing_tasks.keys(): + # This task already exists - update the details if required + existing_task = existing_tasks[ref_name] + + if existing_task.schedule_type != task.interval or existing_task.minutes != task.minutes: + + existing_task.schedule_type = task.interval + existing_task.minutes = task.minutes + tasks_to_update.append(existing_task) + + else: + # This task does *not* already exist - create it + tasks_to_create.append( + Schedule( + name=ref_name, + func=ref_name, + schedule_type=task.interval, + minutes=task.minutes, + ) + ) + + if len(tasks_to_create) > 0: + Schedule.objects.bulk_create(tasks_to_create) + logger.info("Created %s new scheduled tasks", len(tasks_to_create)) + + if len(tasks_to_update) > 0: + Schedule.objects.bulk_update(tasks_to_update, ['schedule_type', 'minutes']) + logger.info("Updated %s existing scheduled tasks", len(tasks_to_update)) # Put at least one task onto the background worker stack, # which will be processed as soon as the worker comes online @@ -91,11 +135,10 @@ class InvenTreeConfig(AppConfig): force_async=True, ) - logger.info(f"Started {len(tasks)} scheduled background tasks...") + logger.info("Started %s scheduled background tasks...", len(tasks)) def collect_tasks(self): """Collect all background tasks.""" - for app_name, app in apps.app_configs.items(): if app_name == 'InvenTree': continue @@ -104,7 +147,7 @@ class InvenTreeConfig(AppConfig): try: import_module(f'{app.module.__package__}.tasks') except Exception as e: # pragma: no cover - logger.error(f"Error loading tasks for {app_name}: {e}") + logger.exception("Error loading tasks for %s: %s", app_name, e) def update_exchange_rates(self): # pragma: no cover """Update exchange rates each time the server is started. @@ -140,7 +183,7 @@ class InvenTreeConfig(AppConfig): # Backend currency has changed? if base_currency != backend.base_currency: - logger.info(f"Base currency changed from {backend.base_currency} to {base_currency}") + logger.info("Base currency changed from %s to %s", backend.base_currency, base_currency) update = True except (ExchangeBackend.DoesNotExist): @@ -154,8 +197,10 @@ class InvenTreeConfig(AppConfig): if update: try: update_exchange_rates() + except OperationalError: + logger.warning("Could not update exchange rates - database not ready") except Exception as e: - logger.error(f"Error updating exchange rates: {e} ({type(e)})") + logger.exception("Error updating exchange rates: %s (%s)", e, type(e)) def add_user_on_startup(self): """Add a user on startup.""" @@ -182,7 +227,7 @@ class InvenTreeConfig(AppConfig): # not all needed variables set if set_variables < 3: - logger.warn('Not all required settings for adding a user on startup are present:\nINVENTREE_ADMIN_USER, INVENTREE_ADMIN_EMAIL, INVENTREE_ADMIN_PASSWORD') + logger.warning('Not all required settings for adding a user on startup are present:\nINVENTREE_ADMIN_USER, INVENTREE_ADMIN_EMAIL, INVENTREE_ADMIN_PASSWORD') settings.USER_ADDED = True return @@ -191,12 +236,12 @@ class InvenTreeConfig(AppConfig): try: with transaction.atomic(): if user.objects.filter(username=add_user).exists(): - logger.info(f"User {add_user} already exists - skipping creation") + logger.info("User %s already exists - skipping creation", add_user) else: new_user = user.objects.create_superuser(add_user, add_email, add_password) - logger.info(f'User {str(new_user)} was created!') - except IntegrityError as _e: - logger.warning(f'The user "{add_user}" could not be created due to the following error:\n{str(_e)}') + logger.info('User %s was created!', str(new_user)) + except IntegrityError: + logger.warning('The user "%s" could not be created', add_user) # do not try again settings.USER_ADDED = True diff --git a/InvenTree/InvenTree/config.py b/InvenTree/InvenTree/config.py index 3657d0c530..72e81f04d2 100644 --- a/InvenTree/InvenTree/config.py +++ b/InvenTree/InvenTree/config.py @@ -7,6 +7,7 @@ import os import random import shutil import string +import warnings from pathlib import Path logger = logging.getLogger('inventree') @@ -23,7 +24,6 @@ def to_list(value, delimiter=','): However, the same setting may be specified via an environment variable, using a comma delimited string! """ - if type(value) in [list, tuple]: return value @@ -45,13 +45,13 @@ def to_dict(value): if value is None: return {} - if type(value) == dict: + if isinstance(value, dict): return value try: return json.loads(value) except Exception as error: - logger.error(f"Failed to parse value '{value}' as JSON with error {error}. Ensure value is a valid JSON string.") + logger.exception("Failed to parse value '%s' as JSON with error %s. Ensure value is a valid JSON string.", value, error) return {} @@ -70,7 +70,6 @@ def ensure_dir(path: Path) -> None: If it does not exist, create it. """ - if not path.exists(): path.mkdir(parents=True, exist_ok=True) @@ -143,7 +142,6 @@ def get_setting(env_var=None, config_key=None, default_value=None, typecast=None """ def try_typecasting(value, source: str): """Attempt to typecast the value""" - # Force 'list' of strings if typecast is list: value = to_list(value) @@ -159,7 +157,7 @@ def get_setting(env_var=None, config_key=None, default_value=None, typecast=None set_metadata(source) return val except Exception as error: - logger.error(f"Failed to typecast '{env_var}' with value '{value}' to type '{typecast}' with error {error}") + logger.exception("Failed to typecast '%s' with value '%s' to type '%s' with error %s", env_var, value, typecast, error) set_metadata(source) return value @@ -201,13 +199,11 @@ def get_setting(env_var=None, config_key=None, default_value=None, typecast=None def get_boolean_setting(env_var=None, config_key=None, default_value=False): """Helper function for retrieving a boolean configuration setting""" - return is_true(get_setting(env_var, config_key, default_value)) def get_media_dir(create=True): """Return the absolute path for the 'media' directory (where uploaded files are stored)""" - md = get_setting('INVENTREE_MEDIA_ROOT', 'media_root') if not md: @@ -223,7 +219,6 @@ def get_media_dir(create=True): def get_static_dir(create=True): """Return the absolute path for the 'static' directory (where static files are stored)""" - sd = get_setting('INVENTREE_STATIC_ROOT', 'static_root') if not sd: @@ -239,7 +234,6 @@ def get_static_dir(create=True): def get_backup_dir(create=True): """Return the absolute path for the backup directory""" - bd = get_setting('INVENTREE_BACKUP_DIR', 'backup_dir') if not bd: @@ -258,7 +252,6 @@ def get_plugin_file(): Note: It will be created if it does not already exist! """ - # Check if the plugin.txt file (specifying required plugins) is specified plugin_file = get_setting('INVENTREE_PLUGIN_FILE', 'plugin_file') @@ -272,7 +265,7 @@ def get_plugin_file(): if not plugin_file.exists(): logger.warning("Plugin configuration file does not exist - creating default file") - logger.info(f"Creating plugin file at '{plugin_file}'") + logger.info("Creating plugin file at '%s'", plugin_file) ensure_dir(plugin_file.parent) # If opening the file fails (no write permission, for example), then this will throw an error @@ -281,6 +274,11 @@ def get_plugin_file(): return plugin_file +def get_plugin_dir(): + """Returns the path of the custom plugins directory""" + return get_setting('INVENTREE_PLUGIN_DIR', 'plugin_dir') + + def get_secret_key(): """Return the secret key value which will be used by django. @@ -291,7 +289,6 @@ def get_secret_key(): C) Look for default key file "secret_key.txt" D) Create "secret_key.txt" if it does not exist """ - # Look for environment variable if secret_key := get_setting('INVENTREE_SECRET_KEY', 'secret_key'): logger.info("SECRET_KEY loaded by INVENTREE_SECRET_KEY") # pragma: no cover @@ -305,7 +302,7 @@ def get_secret_key(): secret_key_file = get_base_dir().joinpath("secret_key.txt").resolve() if not secret_key_file.exists(): - logger.info(f"Generating random key file at '{secret_key_file}'") + logger.info("Generating random key file at '%s'", secret_key_file) ensure_dir(secret_key_file.parent) # Create a random key file @@ -313,7 +310,7 @@ def get_secret_key(): key = ''.join([random.choice(options) for i in range(100)]) secret_key_file.write_text(key) - logger.info(f"Loading SECRET_KEY from '{secret_key_file}'") + logger.debug("Loading SECRET_KEY from '%s'", secret_key_file) key_data = secret_key_file.read_text().strip() @@ -336,12 +333,67 @@ def get_custom_file(env_ref: str, conf_ref: str, log_ref: str, lookup_media: boo static_storage = StaticFilesStorage() if static_storage.exists(value): - logger.info(f"Loading {log_ref} from static directory: {value}") + logger.info("Loading %s from %s directory: %s", log_ref, 'static', value) elif lookup_media and default_storage.exists(value): - logger.info(f"Loading {log_ref} from media directory: {value}") + logger.info("Loading %s from %s directory: %s", log_ref, 'media', value) else: add_dir_str = ' or media' if lookup_media else '' - logger.warning(f"The {log_ref} file '{value}' could not be found in the static{add_dir_str} directories") + logger.warning("The %s file '%s' could not be found in the static %s directories", log_ref, value, add_dir_str) value = False return value + + +def get_frontend_settings(debug=True): + """Return a dictionary of settings for the frontend interface. + + Note that the new config settings use the 'FRONTEND' key, + whereas the legacy key was 'PUI' (platform UI) which is now deprecated + """ + + # Legacy settings + pui_settings = get_setting('INVENTREE_PUI_SETTINGS', 'pui_settings', {}, typecast=dict) + + if len(pui_settings) > 0: + warnings.warn( + "The 'INVENTREE_PUI_SETTINGS' key is deprecated. Please use 'INVENTREE_FRONTEND_SETTINGS' instead", + DeprecationWarning, stacklevel=2 + ) + + # New settings + frontend_settings = get_setting('INVENTREE_FRONTEND_SETTINGS', 'frontend_settings', {}, typecast=dict) + + # Merge settings + settings = {**pui_settings, **frontend_settings} + + # Set the base URL + if 'base_url' not in settings: + base_url = get_setting('INVENTREE_PUI_URL_BASE', 'pui_url_base', '') + + if base_url: + warnings.warn( + "The 'INVENTREE_PUI_URL_BASE' key is deprecated. Please use 'INVENTREE_FRONTEND_URL_BASE' instead", + DeprecationWarning, stacklevel=2 + ) + else: + base_url = get_setting('INVENTREE_FRONTEND_URL_BASE', 'frontend_url_base', 'platform') + + settings['base_url'] = base_url + + # Set the server list + settings['server_list'] = settings.get('server_list', []) + + # Set the debug flag + settings['debug'] = debug + + if 'environment' not in settings: + settings['environment'] = 'development' if debug else 'production' + + if debug and 'show_server_selector' not in settings: + # In debug mode, show server selector by default + settings['show_server_selector'] = True + elif len(settings['server_list']) == 0: + # If no servers are specified, show server selector + settings['show_server_selector'] = True + + return settings diff --git a/InvenTree/InvenTree/conversion.py b/InvenTree/InvenTree/conversion.py index e2d114c728..e42d182755 100644 --- a/InvenTree/InvenTree/conversion.py +++ b/InvenTree/InvenTree/conversion.py @@ -1,5 +1,7 @@ """Helper functions for converting between units.""" +import logging + from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ @@ -8,15 +10,16 @@ import pint _unit_registry = None +logger = logging.getLogger('inventree') + + def get_unit_registry(): """Return a custom instance of the Pint UnitRegistry.""" - global _unit_registry # Cache the unit registry for speedier access if _unit_registry is None: - reload_unit_registry() - + return reload_unit_registry() return _unit_registry @@ -25,27 +28,52 @@ def reload_unit_registry(): This function is called at startup, and whenever the database is updated. """ + import time + t_start = time.time() global _unit_registry - _unit_registry = pint.UnitRegistry() + _unit_registry = None + + reg = pint.UnitRegistry() # Define some "standard" additional units - _unit_registry.define('piece = 1') - _unit_registry.define('each = 1 = ea') - _unit_registry.define('dozen = 12 = dz') - _unit_registry.define('hundred = 100') - _unit_registry.define('thousand = 1000') + reg.define('piece = 1') + reg.define('each = 1 = ea') + reg.define('dozen = 12 = dz') + reg.define('hundred = 100') + reg.define('thousand = 1000') - # TODO: Allow for custom units to be defined in the database + # Allow for custom units to be defined in the database + try: + from common.models import CustomUnit + + for cu in CustomUnit.objects.all(): + try: + reg.define(cu.fmt_string()) + except Exception as e: + logger.exception('Failed to load custom unit: %s - %s', cu.fmt_string(), e) + + # Once custom units are loaded, save registry + _unit_registry = reg + + except Exception: + # Database is not ready, or CustomUnit model is not available + pass + + dt = time.time() - t_start + logger.debug('Loaded unit registry in %s.3f s', dt) + + return reg -def convert_physical_value(value: str, unit: str = None): +def convert_physical_value(value: str, unit: str = None, strip_units=True): """Validate that the provided value is a valid physical quantity. Arguments: value: Value to validate (str) unit: Optional unit to convert to, and validate against + strip_units: If True, strip units from the returned value, and return only the dimension Raises: ValidationError: If the value is invalid or cannot be converted to the specified unit @@ -53,45 +81,93 @@ def convert_physical_value(value: str, unit: str = None): Returns: The converted quantity, in the specified units """ + original = str(value).strip() # Ensure that the value is a string - value = str(value).strip() + value = str(value).strip() if value else '' + unit = str(unit).strip() if unit else '' # Error on blank values if not value: raise ValidationError(_('No value provided')) + # Create a "backup" value which be tried if the first value fails + # e.g. value = "10k" and unit = "ohm" -> "10kohm" + # e.g. value = "10m" and unit = "F" -> "10mF" + if unit: + backup_value = value + unit + else: + backup_value = None + ureg = get_unit_registry() - error = '' try: - # Convert to a quantity - val = ureg.Quantity(value) + value = ureg.Quantity(value) if unit: - - if val.units == ureg.dimensionless: - # If the provided value is dimensionless, assume that the unit is correct - val = ureg.Quantity(value, unit) + if is_dimensionless(value): + magnitude = value.to_base_units().magnitude + value = ureg.Quantity(magnitude, unit) else: - # Convert to the provided unit (may raise an exception) - val = val.to(unit) + value = value.to(unit) - # At this point we *should* have a valid pint value - # To double check, look at the maginitude - float(val.magnitude) - except (TypeError, ValueError): - error = _('Provided value is not a valid number') - except (pint.errors.UndefinedUnitError, pint.errors.DefinitionSyntaxError): - error = _('Provided value has an invalid unit') - except pint.errors.DimensionalityError: - error = _('Provided value could not be converted to the specified unit') + except Exception: + if backup_value: + try: + value = ureg.Quantity(backup_value) + except Exception: + value = None + else: + value = None - if error: + if value is None: if unit: - error += f' ({unit})' + raise ValidationError(_(f'Could not convert {original} to {unit}')) + else: + raise ValidationError(_("Invalid quantity supplied")) - raise ValidationError(error) + # Calculate the "magnitude" of the value, as a float + # If the value is specified strangely (e.g. as a fraction or a dozen), this can cause issues + # So, we ensure that it is converted to a floating point value + # If we wish to return a "raw" value, some trickery is required + try: + if unit: + magnitude = ureg.Quantity(value.to(ureg.Unit(unit))).magnitude + else: + magnitude = ureg.Quantity(value.to_base_units()).magnitude - # Return the converted value - return val + magnitude = float(ureg.Quantity(magnitude).to_base_units().magnitude) + except Exception as exc: + raise ValidationError(_(f'Invalid quantity supplied ({exc})')) + + if strip_units: + return magnitude + elif unit or value.units: + return ureg.Quantity(magnitude, unit or value.units) + return ureg.Quantity(magnitude) + + +def is_dimensionless(value): + """Determine if the provided value is 'dimensionless' + + A dimensionless value might look like: + + 0.1 + 1/2 dozen + three thousand + 1.2 dozen + (etc) + """ + ureg = get_unit_registry() + + # Ensure the provided value is in the right format + value = ureg.Quantity(value) + + if value.units == ureg.dimensionless: + return True + + if value.to_base_units().units == ureg.dimensionless: + return True + + # At this point, the value is not dimensionless + return False diff --git a/InvenTree/InvenTree/email.py b/InvenTree/InvenTree/email.py index 20d78a498d..9552262dd1 100644 --- a/InvenTree/InvenTree/email.py +++ b/InvenTree/InvenTree/email.py @@ -17,6 +17,7 @@ def is_email_configured(): NOTE: This does not check if the configuration is valid! """ configured = True + testing = settings.TESTING if InvenTree.ready.isInTestMode(): return False @@ -28,24 +29,30 @@ def is_email_configured(): configured = False # Display warning unless in test mode - if not settings.TESTING: # pragma: no cover + if not testing: # pragma: no cover logger.debug("EMAIL_HOST is not configured") # Display warning unless in test mode - if not settings.EMAIL_HOST_USER and not settings.TESTING: # pragma: no cover + if not settings.EMAIL_HOST_USER and not testing: # pragma: no cover logger.debug("EMAIL_HOST_USER is not configured") # Display warning unless in test mode - if not settings.EMAIL_HOST_PASSWORD and not settings.TESTING: # pragma: no cover + if not settings.EMAIL_HOST_PASSWORD and testing: # pragma: no cover logger.debug("EMAIL_HOST_PASSWORD is not configured") + # Email sender must be configured + if not settings.DEFAULT_FROM_EMAIL: + configured = False + + if not testing: # pragma: no cover + logger.debug("DEFAULT_FROM_EMAIL is not configured") + return configured def send_email(subject, body, recipients, from_email=None, html_message=None): """Send an email with the specified subject and body, to the specified recipients list.""" - - if type(recipients) == str: + if isinstance(recipients, str): recipients = [recipients] import InvenTree.ready diff --git a/InvenTree/InvenTree/exceptions.py b/InvenTree/InvenTree/exceptions.py index cef6925586..75cbaff125 100644 --- a/InvenTree/InvenTree/exceptions.py +++ b/InvenTree/InvenTree/exceptions.py @@ -31,7 +31,6 @@ def log_error(path): Arguments: path: The 'path' (most likely a URL) associated with this error (optional) """ - kind, info, data = sys.exc_info() # Check if the error is on the ignore list diff --git a/InvenTree/InvenTree/exchange.py b/InvenTree/InvenTree/exchange.py index 0225270f27..b3c6262d84 100644 --- a/InvenTree/InvenTree/exchange.py +++ b/InvenTree/InvenTree/exchange.py @@ -1,74 +1,100 @@ -"""Exchangerate backend to use `exchangerate.host` to get rates.""" +"""Custom exchange backend which hooks into the InvenTree plugin system to fetch exchange rates from an external API.""" -import ssl -from urllib.error import URLError -from urllib.request import urlopen +import logging -from django.db.utils import OperationalError +from django.db.transaction import atomic -import certifi from djmoney.contrib.exchange.backends.base import SimpleExchangeBackend +from djmoney.contrib.exchange.models import ExchangeBackend, Rate from common.settings import currency_code_default, currency_codes +logger = logging.getLogger('inventree') + class InvenTreeExchange(SimpleExchangeBackend): """Backend for automatically updating currency exchange rates. - Uses the `exchangerate.host` service API + Uses the plugin system to actually fetch the rates from an external API. """ name = "InvenTreeExchange" - def __init__(self): - """Set API url.""" - self.url = "https://api.exchangerate.host/latest" - - super().__init__() - - def get_params(self): - """Placeholder to set API key. Currently not required by `exchangerate.host`.""" - # No API key is required - return { - } - - def get_response(self, **kwargs): - """Custom code to get response from server. - - Note: Adds a 5-second timeout - """ - url = self.get_url(**kwargs) - - try: - context = ssl.create_default_context(cafile=certifi.where()) - response = urlopen(url, timeout=5, context=context) - return response.read() - except Exception: - # Something has gone wrong, but we can just try again next time - # Raise a TypeError so the outer function can handle this - raise TypeError - - def update_rates(self, base_currency=None): + def get_rates(self, **kwargs) -> None: """Set the requested currency codes and get rates.""" - # Set default - see B008 + from common.models import InvenTreeSetting + from plugin import registry + + base_currency = kwargs.get('base_currency', currency_code_default()) + symbols = kwargs.get('symbols', currency_codes()) + + # Find the selected exchange rate plugin + slug = InvenTreeSetting.get_setting('CURRENCY_UPDATE_PLUGIN', '', create=False) + + if slug: + plugin = registry.get_plugin(slug) + else: + plugin = None + + if not plugin: + # Find the first active currency exchange plugin + plugins = registry.with_mixin('currencyexchange', active=True) + + if len(plugins) > 0: + plugin = plugins[0] + + if not plugin: + logger.warning('No active currency exchange plugins found - skipping update') + return {} + + logger.info("Running exchange rate update using plugin '%s'", plugin.name) + + # Plugin found - run the update task + try: + rates = plugin.update_exchange_rates(base_currency, symbols) + except Exception as exc: + logger.exception("Exchange rate update failed: %s", exc) + return {} + + if not rates: + logger.warning("Exchange rate update failed - no data returned from plugin %s", slug) + return {} + + # Update exchange rates based on returned data + if type(rates) is not dict: + logger.warning("Invalid exchange rate data returned from plugin %s (type %s)", slug, type(rates)) + return {} + + # Ensure base currency is provided + rates[base_currency] = 1.00 + + return rates + + @atomic + def update_rates(self, base_currency=None, **kwargs): + """Call to update all exchange rates""" + backend, _ = ExchangeBackend.objects.update_or_create(name=self.name, defaults={"base_currency": base_currency}) + if base_currency is None: base_currency = currency_code_default() - symbols = ','.join(currency_codes()) + symbols = currency_codes() - try: - super().update_rates(base=base_currency, symbols=symbols) - # catch connection errors - except URLError: - print('Encountered connection error while updating') - except TypeError: - print('Exchange returned invalid response') - except OperationalError as e: - if 'SerializationFailure' in e.__cause__.__class__.__name__: - print('Serialization Failure while updating exchange rates') - # We are just going to swallow this exception because the - # exchange rates will be updated later by the scheduled task - else: - # Other operational errors probably are still show stoppers - # so reraise them so that the log contains the stacktrace - raise + logger.info("Updating exchange rates for %s (%s currencies)", base_currency, len(symbols)) + + # Fetch new rates from the backend + # If the backend fails, the existing rates will not be updated + rates = self.get_rates(base_currency=base_currency, symbols=symbols) + + if rates: + # Clear out existing rates + backend.clear_rates() + + Rate.objects.bulk_create([ + Rate(currency=currency, value=amount, backend=backend) + for currency, amount in rates.items() + ]) + else: + logger.info("No exchange rates returned from backend - currencies not updated") + + logger.info("Updated exchange rates for %s", base_currency) diff --git a/InvenTree/InvenTree/fields.py b/InvenTree/InvenTree/fields.py index f4194274ae..6c6691ec1f 100644 --- a/InvenTree/InvenTree/fields.py +++ b/InvenTree/InvenTree/fields.py @@ -18,11 +18,10 @@ from .validators import AllowedURLValidator, allowable_url_schemes class InvenTreeRestURLField(RestURLField): - """Custom field for DRF with custom scheme vaildators.""" + """Custom field for DRF with custom scheme validators.""" def __init__(self, **kwargs): """Update schemes.""" - # Enforce 'max length' parameter in form validation if 'max_length' not in kwargs: kwargs['max_length'] = 200 @@ -38,19 +37,28 @@ class InvenTreeURLField(models.URLField): def __init__(self, **kwargs): """Initialization method for InvenTreeURLField""" - # Max length for InvenTreeURLField is set to 200 kwargs['max_length'] = 200 super().__init__(**kwargs) -def money_kwargs(): +def money_kwargs(**kwargs): """Returns the database settings for MoneyFields.""" from common.settings import currency_code_default, currency_code_mappings - kwargs = {} - kwargs['currency_choices'] = currency_code_mappings() - kwargs['default_currency'] = currency_code_default() + # Default values (if not specified) + if 'max_digits' not in kwargs: + kwargs['max_digits'] = 19 + + if 'decimal_places' not in kwargs: + kwargs['decimal_places'] = 6 + + if 'currency_choices' not in kwargs: + kwargs['currency_choices'] = currency_code_mappings() + + if 'default_currency' not in kwargs: + kwargs['default_currency'] = currency_code_default() + return kwargs @@ -64,16 +72,8 @@ class InvenTreeModelMoneyField(ModelMoneyField): # remove currency information for a clean migration kwargs['default_currency'] = '' kwargs['currency_choices'] = [] - else: - # set defaults - kwargs.update(money_kwargs()) - # Default values (if not specified) - if 'max_digits' not in kwargs: - kwargs['max_digits'] = 19 - - if 'decimal_places' not in kwargs: - kwargs['decimal_places'] = 6 + kwargs = money_kwargs(**kwargs) # Set a minimum value validator validators = kwargs.get('validators', []) @@ -115,11 +115,7 @@ class InvenTreeMoneyField(MoneyField): def __init__(self, *args, **kwargs): """Override initial values with the real info from database.""" - kwargs.update(money_kwargs()) - - kwargs['max_digits'] = 19 - kwargs['decimal_places'] = 6 - + kwargs = money_kwargs(**kwargs) super().__init__(*args, **kwargs) @@ -151,7 +147,6 @@ class DatePickerFormField(forms.DateField): def round_decimal(value, places, normalize=False): """Round value to the specified number of places.""" - if type(value) in [Decimal, float]: value = round(value, places) @@ -188,7 +183,6 @@ class RoundingDecimalField(models.DecimalField): def formfield(self, **kwargs): """Return a Field instance for this field.""" - kwargs['form_class'] = RoundingDecimalFormField return super().formfield(**kwargs) diff --git a/InvenTree/InvenTree/filters.py b/InvenTree/InvenTree/filters.py index e68df53524..560e859a57 100644 --- a/InvenTree/InvenTree/filters.py +++ b/InvenTree/InvenTree/filters.py @@ -15,7 +15,6 @@ class InvenTreeSearchFilter(filters.SearchFilter): The following query params are available to 'augment' the search (in decreasing order of priority) - search_regex: If True, search is performed on 'regex' comparison """ - regex = InvenTree.helpers.str2bool(request.query_params.get('search_regex', False)) search_fields = super().get_search_fields(view, request) @@ -36,7 +35,6 @@ class InvenTreeSearchFilter(filters.SearchFilter): Depending on the request parameters, we may "augment" these somewhat """ - whole = InvenTree.helpers.str2bool(request.query_params.get('search_whole', False)) terms = [] diff --git a/InvenTree/InvenTree/format.py b/InvenTree/InvenTree/format.py index 307bbf07de..ab4267959f 100644 --- a/InvenTree/InvenTree/format.py +++ b/InvenTree/InvenTree/format.py @@ -3,15 +3,20 @@ import re import string +from django.conf import settings +from django.utils import translation from django.utils.translation import gettext_lazy as _ +from babel import Locale +from babel.numbers import parse_pattern +from djmoney.money import Money + def parse_format_string(fmt_string: str) -> dict: """Extract formatting information from the provided format string. Returns a dict object which contains structured information about the format groups """ - groups = string.Formatter().parse(fmt_string) info = {} @@ -62,7 +67,6 @@ def construct_format_regex(fmt_string: str) -> str: Raises: ValueError: Format string is invalid """ - pattern = "^" for group in string.Formatter().parse(fmt_string): @@ -121,7 +125,6 @@ def validate_string(value: str, fmt_string: str) -> str: Raises: ValueError: The provided format string is invalid """ - pattern = construct_format_regex(fmt_string) result = re.match(pattern, value) @@ -145,7 +148,6 @@ def extract_named_group(name: str, value: str, fmt_string: str) -> str: NameError: named value does not exist in the format string IndexError: named value could not be found in the provided entry """ - info = parse_format_string(fmt_string) if name not in info.keys(): @@ -164,3 +166,34 @@ def extract_named_group(name: str, value: str, fmt_string: str) -> str: # And return the value we are interested in # Note: This will raise an IndexError if the named group was not matched return result.group(name) + + +def format_money(money: Money, decimal_places: int = None, format: str = None) -> str: + """Format money object according to the currently set local + + Args: + decimal_places: Number of decimal places to use + format: Format pattern according LDML / the babel format pattern syntax (https://babel.pocoo.org/en/latest/numbers.html) + + Returns: + str: The formatted string + + Raises: + ValueError: format string is incorrectly specified + """ + language = None and translation.get_language() or settings.LANGUAGE_CODE + locale = Locale.parse(translation.to_locale(language)) + if format: + pattern = parse_pattern(format) + else: + pattern = locale.currency_formats["standard"] + if decimal_places is not None: + pattern.frac_prec = (decimal_places, decimal_places) + + return pattern.apply( + money.amount, + locale, + currency=money.currency.code, + currency_digits=decimal_places is None, + decimal_quantization=decimal_places is not None, + ) diff --git a/InvenTree/InvenTree/forms.py b/InvenTree/InvenTree/forms.py index 9efa535c93..4896dc75b8 100644 --- a/InvenTree/InvenTree/forms.py +++ b/InvenTree/InvenTree/forms.py @@ -12,7 +12,7 @@ from django.urls import reverse from django.utils.translation import gettext_lazy as _ from allauth.account.adapter import DefaultAccountAdapter -from allauth.account.forms import SignupForm, set_form_field_order +from allauth.account.forms import LoginForm, SignupForm, set_form_field_order from allauth.exceptions import ImmediateHttpResponse from allauth.socialaccount.adapter import DefaultSocialAccountAdapter from allauth_2fa.adapter import OTPAdapter @@ -21,6 +21,8 @@ from crispy_forms.bootstrap import (AppendedText, PrependedAppendedText, PrependedText) from crispy_forms.helper import FormHelper from crispy_forms.layout import Field, Layout +from dj_rest_auth.registration.serializers import RegisterSerializer +from rest_framework import serializers from common.models import InvenTreeSetting from InvenTree.exceptions import log_error @@ -65,10 +67,10 @@ class HelperForm(forms.ModelForm): # Look for font-awesome icons if prefix and prefix.startswith('fa-'): - prefix = r"".format(fa=prefix) + prefix = f"" if suffix and suffix.startswith('fa-'): - suffix = r"".format(fa=suffix) + suffix = f"" if prefix and suffix: layouts.append( @@ -159,11 +161,29 @@ class SetPasswordForm(HelperForm): old_password = forms.CharField( label=_("Old password"), strip=False, + required=False, widget=forms.PasswordInput(attrs={'autocomplete': 'current-password', 'autofocus': True}), ) # override allauth +class CustomLoginForm(LoginForm): + """Custom login form to override default allauth behaviour""" + + def login(self, request, redirect_url=None): + """Perform login action. + + First check that: + - A valid user has been supplied + """ + if not self.user: + # No user supplied - redirect to the login page + return HttpResponseRedirect(reverse('account_login')) + + # Now perform default login action + return super().login(request, redirect_url) + + class CustomSignupForm(SignupForm): """Override to use dynamic settings.""" @@ -193,7 +213,7 @@ class CustomSignupForm(SignupForm): set_form_field_order(self, ["username", "email", "email2", "password1", "password2", ]) def clean(self): - """Make sure the supllied emails match if enabled in settings.""" + """Make sure the supplied emails match if enabled in settings.""" cleaned_data = super().clean() # check for two mail fields @@ -206,6 +226,11 @@ class CustomSignupForm(SignupForm): return cleaned_data +def registration_enabled(): + """Determine whether user registration is enabled.""" + return settings.EMAIL_HOST and (InvenTreeSetting.get_setting('LOGIN_ENABLE_REG') or InvenTreeSetting.get_setting('LOGIN_ENABLE_SSO_REG')) + + class RegistratonMixin: """Mixin to check if registration should be enabled.""" @@ -214,7 +239,7 @@ class RegistratonMixin: Configure the class variable `REGISTRATION_SETTING` to set which setting should be used, default: `LOGIN_ENABLE_REG`. """ - if settings.EMAIL_HOST and (InvenTreeSetting.get_setting('LOGIN_ENABLE_REG') or InvenTreeSetting.get_setting('LOGIN_ENABLE_SSO_REG')): + if registration_enabled(): return super().is_open_for_signup(request, *args, **kwargs) return False @@ -226,7 +251,7 @@ class RegistratonMixin: split_email = email.split('@') if len(split_email) != 2: - logger.error(f'The user {email} has an invalid email address') + logger.error('The user %s has an invalid email address', email) raise forms.ValidationError(_('The provided primary email address is not valid.')) mailoptions = mail_restriction.split(',') @@ -238,7 +263,7 @@ class RegistratonMixin: if split_email[1] == option[1:]: return super().clean_email(email) - logger.info(f'The provided email domain for {email} is not approved') + logger.info('The provided email domain for %s is not approved', email) raise forms.ValidationError(_('The provided email domain is not approved.')) def save_user(self, request, user, form, commit=True): @@ -253,7 +278,7 @@ class RegistratonMixin: group = Group.objects.get(id=start_group) user.groups.add(group) except Group.DoesNotExist: - logger.error('The setting `SIGNUP_GROUP` contains an non existent group', start_group) + logger.exception('The setting `SIGNUP_GROUP` contains an non existent group', start_group) user.save() return user @@ -285,6 +310,14 @@ class CustomAccountAdapter(CustomUrlMixin, RegistratonMixin, OTPAdapter, Default return False + def get_email_confirmation_url(self, request, emailconfirmation): + """Construct the email confirmation url""" + from InvenTree.helpers_model import construct_absolute_url + + url = super().get_email_confirmation_url(request, emailconfirmation) + url = construct_absolute_url(url) + return url + class CustomSocialAccountAdapter(CustomUrlMixin, RegistratonMixin, DefaultSocialAccountAdapter): """Override of adapter to use dynamic settings.""" @@ -319,3 +352,20 @@ class CustomSocialAccountAdapter(CustomUrlMixin, RegistratonMixin, DefaultSocial # Otherwise defer to the original allauth adapter. return super().login(request, user) + + +# override dj-rest-auth +class CustomRegisterSerializer(RegisterSerializer): + """Override of serializer to use dynamic settings.""" + email = serializers.EmailField() + + def __init__(self, instance=None, data=..., **kwargs): + """Check settings to influence which fields are needed.""" + kwargs['email_required'] = InvenTreeSetting.get_setting('LOGIN_MAIL_REQUIRED') + super().__init__(instance, data, **kwargs) + + def save(self, request): + """Override to check if registration is open.""" + if registration_enabled(): + return super().save(request) + raise forms.ValidationError(_('Registration is disabled.')) diff --git a/InvenTree/InvenTree/helpers.py b/InvenTree/InvenTree/helpers.py index 45b1294b43..facb8b3bf7 100644 --- a/InvenTree/InvenTree/helpers.py +++ b/InvenTree/InvenTree/helpers.py @@ -51,7 +51,6 @@ def constructPathString(path, max_chars=250): path: A list of strings e.g. ['path', 'to', 'location'] max_chars: Maximum number of characters """ - pathstring = '/'.join(path) # Replace middle elements to limit the pathstring @@ -93,7 +92,6 @@ def getBlankThumbnail(): def getLogoImage(as_file=False, custom=True): """Return the InvenTree logo image, or a custom logo if available.""" - """Return the path to the logo-file.""" if custom and settings.CUSTOM_LOGO: @@ -109,20 +107,17 @@ def getLogoImage(as_file=False, custom=True): if storage is not None: if as_file: return f"file://{storage.path(settings.CUSTOM_LOGO)}" - else: - return storage.url(settings.CUSTOM_LOGO) + return storage.url(settings.CUSTOM_LOGO) # If we have got to this point, return the default logo if as_file: path = settings.STATIC_ROOT.joinpath('img/inventree.png') return f"file://{path}" - else: - return getStaticUrl('img/inventree.png') + return getStaticUrl('img/inventree.png') -def getSplashScren(custom=True): +def getSplashScreen(custom=True): """Return the InvenTree splash screen, or a custom splash if available""" - static_storage = StaticFilesStorage() if custom and settings.CUSTOM_SPLASH: @@ -159,8 +154,7 @@ def str2bool(text, test=True): """ if test: return str(text).lower() in ['1', 'y', 'yes', 't', 'true', 'ok', 'on', ] - else: - return str(text).lower() in ['0', 'n', 'no', 'none', 'f', 'false', 'off', ] + return str(text).lower() in ['0', 'n', 'no', 'none', 'f', 'false', 'off', ] def str2int(text, default=None): @@ -185,8 +179,7 @@ def is_bool(text): return True elif str2bool(text, False): return True - else: - return False + return False def isNull(text): @@ -333,12 +326,11 @@ def MakeBarcode(cls_name, object_pk: int, object_data=None, **kwargs): object_type: string describing the object type e.g. 'StockItem' object_id: ID (Primary Key) of the object in the database object_url: url for JSON API detail view of the object - data: Python dict object containing extra datawhich will be rendered to string (must only contain stringable values) + data: Python dict object containing extra data which will be rendered to string (must only contain stringable values) Returns: json string of the supplied data plus some other data """ - if object_data is None: object_data = {} @@ -387,13 +379,13 @@ def DownloadFile(data, filename, content_type='application/text', inline=False) filename = WrapWithQuotes(filename) length = len(data) - if type(data) == str: + if isinstance(data, str): wrapper = FileWrapper(io.StringIO(data)) else: wrapper = FileWrapper(io.BytesIO(data)) response = StreamingHttpResponse(wrapper, content_type=content_type) - if type(data) == str: + if isinstance(data, str): length = len(bytes(data, response.charset)) response['Content-Length'] = length @@ -415,7 +407,6 @@ def increment_serial_number(serial: str): Returns: incremented value, or None if incrementing could not be performed. """ - from plugin.registry import registry # Ensure we start with a string value @@ -441,7 +432,7 @@ def extract_serial_numbers(input_string, expected_quantity: int, starting_value= - Individual serials are separated by comma: 1, 2, 3, 6,22 - Sequential ranges with provided limits are separated by hyphens: 1-5, 20 - 40 - The "next" available serial number can be specified with the tilde (~) character - - Serial numbers can be supplied as + for getting all expecteded numbers starting from + - Serial numbers can be supplied as + for getting all expected numbers starting from - Serial numbers can be supplied as + for getting numbers starting from Actual generation of sequential serials is passed to the 'validation' plugin mixin, @@ -452,7 +443,6 @@ def extract_serial_numbers(input_string, expected_quantity: int, starting_value= expected_quantity: The number of (unique) serial numbers we expect starting_value: Provide a starting value for the sequence (or None) """ - if starting_value is None: starting_value = increment_serial_number(None) @@ -530,7 +520,7 @@ def extract_serial_numbers(input_string, expected_quantity: int, starting_value= if a == b: # Invalid group - add_error(_("Invalid group range: {g}").format(g=group)) + add_error(_(f"Invalid group range: {group}")) continue group_items = [] @@ -559,13 +549,13 @@ def extract_serial_numbers(input_string, expected_quantity: int, starting_value= break if len(group_items) > remaining: - add_error(_("Group range {g} exceeds allowed quantity ({q})".format(g=group, q=expected_quantity))) + add_error(_(f"Group range {group} exceeds allowed quantity ({expected_quantity})")) elif len(group_items) > 0 and group_items[0] == a and group_items[-1] == b: # In this case, the range extraction looks like it has worked for item in group_items: add_serial(item) else: - add_error(_("Invalid group range: {g}").format(g=group)) + add_error(_(f"Invalid group range: {group}")) else: # In the case of a different number of hyphens, simply add the entire group @@ -583,14 +573,14 @@ def extract_serial_numbers(input_string, expected_quantity: int, starting_value= sequence_count = max(0, expected_quantity - len(serials)) if len(items) > 2 or len(items) == 0: - add_error(_("Invalid group sequence: {g}").format(g=group)) + add_error(_(f"Invalid group sequence: {group}")) continue elif len(items) == 2: try: if items[1]: sequence_count = int(items[1]) + 1 except ValueError: - add_error(_("Invalid group sequence: {g}").format(g=group)) + add_error(_(f"Invalid group sequence: {group}")) continue value = items[0] @@ -605,7 +595,7 @@ def extract_serial_numbers(input_string, expected_quantity: int, starting_value= for item in sequence_items: add_serial(item) else: - add_error(_("Invalid group sequence: {g}").format(g=group)) + add_error(_(f"Invalid group sequence: {group}")) else: # At this point, we assume that the 'group' is just a single serial value @@ -618,7 +608,7 @@ def extract_serial_numbers(input_string, expected_quantity: int, starting_value= raise ValidationError([_("No serial numbers found")]) if len(errors) == 0 and len(serials) != expected_quantity: - raise ValidationError([_("Number of unique serial numbers ({s}) must match quantity ({q})").format(s=len(serials), q=expected_quantity)]) + raise ValidationError([_(f"Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})")]) return serials @@ -656,7 +646,7 @@ def validateFilterString(value, model=None): if len(pair) != 2: raise ValidationError( - "Invalid group: {g}".format(g=group) + f"Invalid group: {group}" ) k, v = pair @@ -666,7 +656,7 @@ def validateFilterString(value, model=None): if not k or not v: raise ValidationError( - "Invalid group: {g}".format(g=group) + f"Invalid group: {group}" ) results[k] = v @@ -724,7 +714,6 @@ def strip_html_tags(value: str, raise_error=True, field_name=None): If raise_error is True, a ValidationError will be thrown if HTML tags are detected """ - cleaned = clean( value, strip=True, @@ -756,7 +745,6 @@ def strip_html_tags(value: str, raise_error=True, field_name=None): def remove_non_printable_characters(value: str, remove_newline=True, remove_ascii=True, remove_unicode=True): """Remove non-printable / control characters from the provided string""" - cleaned = value if remove_ascii: @@ -787,7 +775,6 @@ def hash_barcode(barcode_data): We first remove any non-printable characters from the barcode data, as some browsers have issues scanning characters in. """ - barcode_data = str(barcode_data).strip() barcode_data = remove_non_printable_characters(barcode_data) @@ -813,7 +800,6 @@ def get_objectreference(obj, type_ref: str = 'content_type', object_ref: str = ' The method name must always be the name of the field prefixed by 'get_' """ - model_cls = getattr(obj, type_ref) obj_id = getattr(obj, object_ref) diff --git a/InvenTree/InvenTree/helpers_model.py b/InvenTree/InvenTree/helpers_model.py index 278b8d7557..e63419a16f 100644 --- a/InvenTree/InvenTree/helpers_model.py +++ b/InvenTree/InvenTree/helpers_model.py @@ -3,13 +3,13 @@ import io import logging from decimal import Decimal +from urllib.parse import urljoin from django.conf import settings from django.core.validators import URLValidator from django.db.utils import OperationalError, ProgrammingError from django.utils.translation import gettext_lazy as _ -import moneyed.localization import requests from djmoney.contrib.exchange.models import convert_money from djmoney.money import Money @@ -21,6 +21,7 @@ import InvenTree.helpers_model import InvenTree.version from common.notifications import (InvenTreeNotificationBodies, NotificationBody, trigger_notification) +from InvenTree.format import format_money logger = logging.getLogger('inventree') @@ -40,7 +41,6 @@ def construct_absolute_url(*arg, **kwargs): 2. If the InvenTree setting INVENTREE_BASE_URL is set, use that 3. Otherwise, use the current request URL (if available) """ - relative_url = '/'.join(arg) # If a site URL is provided, use that @@ -50,9 +50,7 @@ def construct_absolute_url(*arg, **kwargs): # Otherwise, try to use the InvenTree setting try: site_url = common.models.InvenTreeSetting.get_setting('INVENTREE_BASE_URL', create=False, cache=False) - except ProgrammingError: - pass - except OperationalError: + except (ProgrammingError, OperationalError): pass if not site_url: @@ -66,14 +64,7 @@ def construct_absolute_url(*arg, **kwargs): # No site URL available, return the relative URL return relative_url - # Strip trailing slash from base url - if site_url.endswith('/'): - site_url = site_url[:-1] - - if relative_url.startswith('/'): - relative_url = relative_url[1:] - - return f"{site_url}/{relative_url}" + return urljoin(site_url, relative_url) def get_base_url(**kwargs): @@ -104,7 +95,6 @@ def download_image_from_url(remote_url, timeout=2.5): ValueError: Server responded with invalid 'Content-Length' value TypeError: Response is not a valid image """ - # Check that the provided URL at least looks valid validator = URLValidator() validator(remote_url) @@ -177,18 +167,16 @@ def download_image_from_url(remote_url, timeout=2.5): return img -def render_currency(money, decimal_places=None, currency=None, include_symbol=True, min_decimal_places=None, max_decimal_places=None): +def render_currency(money, decimal_places=None, currency=None, min_decimal_places=None, max_decimal_places=None): """Render a currency / Money object to a formatted string (e.g. for reports) Arguments: money: The Money instance to be rendered decimal_places: The number of decimal places to render to. If unspecified, uses the PRICING_DECIMAL_PLACES setting. currency: Optionally convert to the specified currency - include_symbol: Render with the appropriate currency symbol min_decimal_places: The minimum number of decimal places to render to. If unspecified, uses the PRICING_DECIMAL_PLACES_MIN setting. max_decimal_places: The maximum number of decimal places to render to. If unspecified, uses the PRICING_DECIMAL_PLACES setting. """ - if money in [None, '']: return '-' @@ -227,11 +215,7 @@ def render_currency(money, decimal_places=None, currency=None, include_symbol=Tr decimal_places = max(decimal_places, max_decimal_places) - return moneyed.localization.format_money( - money, - decimal_places=decimal_places, - include_symbol=include_symbol, - ) + return format_money(money, decimal_places=decimal_places) def getModelsWithMixin(mixin_class) -> list: @@ -242,7 +226,6 @@ def getModelsWithMixin(mixin_class) -> list: Returns: List of models that inherit from the given mixin class """ - from django.contrib.contenttypes.models import ContentType db_models = [x.model_class() for x in ContentType.objects.all() if x is not None] @@ -262,32 +245,49 @@ def notify_responsible(instance, sender, content: NotificationBody = InvenTreeNo content (NotificationBody, optional): _description_. Defaults to InvenTreeNotificationBodies.NewOrder. exclude (User, optional): User instance that should be excluded. Defaults to None. """ - if instance.responsible is not None: - # Setup context for notification parsing - content_context = { - 'instance': str(instance), - 'verbose_name': sender._meta.verbose_name, - 'app_label': sender._meta.app_label, - 'model_name': sender._meta.model_name, - } + notify_users([instance.responsible], instance, sender, content=content, exclude=exclude) - # Setup notification context - context = { - 'instance': instance, - 'name': content.name.format(**content_context), - 'message': content.message.format(**content_context), - 'link': InvenTree.helpers_model.construct_absolute_url(instance.get_absolute_url()), - 'template': { - 'html': content.template.format(**content_context), - 'subject': content.name.format(**content_context), - } - } - # Create notification - trigger_notification( - instance, - content.slug.format(**content_context), - targets=[instance.responsible], - target_exclude=[exclude], - context=context, - ) +def notify_users(users, instance, sender, content: NotificationBody = InvenTreeNotificationBodies.NewOrder, exclude=None): + """Notify all passed users or groups. + + Parses the supplied content with the provided instance and sender and sends a notification to all users, + excluding the optional excluded list. + + Args: + users: List of users or groups to notify + instance: The newly created instance + sender: Sender model reference + content (NotificationBody, optional): _description_. Defaults to InvenTreeNotificationBodies.NewOrder. + exclude (User, optional): User instance that should be excluded. Defaults to None. + """ + # Setup context for notification parsing + content_context = { + 'instance': str(instance), + 'verbose_name': sender._meta.verbose_name, + 'app_label': sender._meta.app_label, + 'model_name': sender._meta.model_name, + } + + # Setup notification context + context = { + 'instance': instance, + 'name': content.name.format(**content_context), + 'message': content.message.format(**content_context), + 'link': InvenTree.helpers_model.construct_absolute_url(instance.get_absolute_url()), + 'template': { + 'subject': content.name.format(**content_context), + } + } + + if content.template: + context['template']['html'] = content.template.format(**content_context) + + # Create notification + trigger_notification( + instance, + content.slug.format(**content_context), + targets=users, + target_exclude=[exclude], + context=context, + ) diff --git a/InvenTree/InvenTree/magic_login.py b/InvenTree/InvenTree/magic_login.py new file mode 100644 index 0000000000..b48c3f3547 --- /dev/null +++ b/InvenTree/InvenTree/magic_login.py @@ -0,0 +1,75 @@ +"""Functions for magic login.""" +from django.conf import settings +from django.contrib.auth.models import User +from django.contrib.sites.models import Site +from django.core.mail import send_mail +from django.template.loader import render_to_string +from django.urls import reverse +from django.utils.translation import gettext_lazy as _ + +import sesame.utils +from rest_framework import serializers +from rest_framework.response import Response +from rest_framework.views import APIView + + +def send_simple_login_email(user, link): + """Send an email with the login link to this user.""" + site = Site.objects.get_current() + + context = { + "username": user.username, + "site_name": site.name, + "link": link, + } + email_plaintext_message = render_to_string("InvenTree/user_simple_login.txt", context) + + send_mail( + _(f"[{site.name}] Log in to the app"), + email_plaintext_message, + settings.DEFAULT_FROM_EMAIL, + [user.email], + ) + + +class GetSimpleLoginSerializer(serializers.Serializer): + """Serializer for the simple login view.""" + + email = serializers.CharField(label=_("Email")) + + +class GetSimpleLoginView(APIView): + """View to send a simple login link.""" + + permission_classes = () + serializer_class = GetSimpleLoginSerializer + + def post(self, request, *args, **kwargs): + """Get the token for the current user or fail.""" + serializer = self.serializer_class(data=request.data) + serializer.is_valid(raise_exception=True) + self.email_submitted(email=serializer.data["email"]) + return Response({"status": "ok"}) + + def email_submitted(self, email): + """Notify user about link.""" + user = self.get_user(email) + if user is None: + print("user not found:", email) + return + link = self.create_link(user) + send_simple_login_email(user, link) + + def get_user(self, email): + """Find the user with this email address.""" + try: + return User.objects.get(email=email) + except User.DoesNotExist: + return None + + def create_link(self, user): + """Create a login link for this user.""" + link = reverse("sesame-login") + link = self.request.build_absolute_uri(link) + link += sesame.utils.get_query_string(user) + return link diff --git a/InvenTree/InvenTree/management/commands/clean_settings.py b/InvenTree/InvenTree/management/commands/clean_settings.py index 77cc444422..4ef8269f24 100644 --- a/InvenTree/InvenTree/management/commands/clean_settings.py +++ b/InvenTree/InvenTree/management/commands/clean_settings.py @@ -23,7 +23,7 @@ class Command(BaseCommand): for setting in db_settings: if setting.key not in model_settings: setting.delete() - logger.info(f"deleted setting '{setting.key}'") + logger.info("deleted setting '%s'", setting.key) # user settings db_settings = InvenTreeUserSetting.objects.all() @@ -33,6 +33,6 @@ class Command(BaseCommand): for setting in db_settings: if setting.key not in model_settings: setting.delete() - logger.info(f"deleted user setting '{setting.key}'") + logger.info("deleted user setting '%s'", setting.key) logger.info("checked all settings") diff --git a/InvenTree/InvenTree/management/commands/prerender.py b/InvenTree/InvenTree/management/commands/prerender.py index 4a5eb02549..5bba15109b 100644 --- a/InvenTree/InvenTree/management/commands/prerender.py +++ b/InvenTree/InvenTree/management/commands/prerender.py @@ -12,7 +12,6 @@ from django.utils.translation import override as lang_over def render_file(file_name, source, target, locales, ctx): """Renders a file into all provided locales.""" - for locale in locales: # Enforce lower-case for locale names diff --git a/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py b/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py index 28f17228e2..102a9e1bf1 100644 --- a/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py +++ b/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py @@ -26,14 +26,14 @@ class Command(BaseCommand): img = model.image - logger.info(f"Generating thumbnail image for '{img}'") + logger.info("Generating thumbnail image for '%s'", img) try: model.image.render_variations(replace=False) except FileNotFoundError: - logger.warning(f"Warning: Image file '{img}' is missing") + logger.warning("Warning: Image file '%s' is missing", img) except UnidentifiedImageError: - logger.warning(f"Warning: Image file '{img}' is not a valid image") + logger.warning("Warning: Image file '%s' is not a valid image", img) def handle(self, *args, **kwargs): """Rebuild all thumbnail images.""" @@ -43,7 +43,7 @@ class Command(BaseCommand): try: self.rebuild_thumbnail(part) except (OperationalError, ProgrammingError): - logger.error("ERROR: Database read error.") + logger.exception("ERROR: Database read error.") break logger.info("Rebuilding Company thumbnails") @@ -52,5 +52,5 @@ class Command(BaseCommand): try: self.rebuild_thumbnail(company) except (OperationalError, ProgrammingError): - logger.error("ERROR: abase read error.") + logger.exception("ERROR: abase read error.") break diff --git a/InvenTree/InvenTree/management/commands/wait_for_db.py b/InvenTree/InvenTree/management/commands/wait_for_db.py index 00590ef602..3bcd2f5ffd 100644 --- a/InvenTree/InvenTree/management/commands/wait_for_db.py +++ b/InvenTree/InvenTree/management/commands/wait_for_db.py @@ -18,7 +18,7 @@ class Command(BaseCommand): while not connected: - time.sleep(5) + time.sleep(2) try: connection.ensure_connection() diff --git a/InvenTree/InvenTree/metadata.py b/InvenTree/InvenTree/metadata.py index f1e23f166c..a526cf152e 100644 --- a/InvenTree/InvenTree/metadata.py +++ b/InvenTree/InvenTree/metadata.py @@ -10,6 +10,7 @@ from rest_framework.utils import model_meta import InvenTree.permissions import users.models from InvenTree.helpers import str2bool +from InvenTree.serializers import DependentField logger = logging.getLogger('inventree') @@ -84,6 +85,10 @@ class InvenTreeMetadata(SimpleMetadata): 'DELETE': 'delete', } + # let the view define a custom rolemap + if hasattr(view, "rolemap"): + rolemap.update(view.rolemap) + # Remove any HTTP methods that the user does not have permission for for method, permission in rolemap.items(): @@ -238,6 +243,10 @@ class InvenTreeMetadata(SimpleMetadata): We take the regular DRF metadata and add our own unique flavor """ + # Try to add the child property to the dependent field to be used by the super call + if self.label_lookup[field] == 'dependent field': + field.get_child(raise_exception=True) + # Run super method first field_info = super().get_field_info(field) @@ -271,4 +280,11 @@ class InvenTreeMetadata(SimpleMetadata): else: field_info['api_url'] = model.get_api_url() + # Add more metadata about dependent fields + if field_info['type'] == 'dependent field': + field_info['depends_on'] = field.depends_on + return field_info + + +InvenTreeMetadata.label_lookup[DependentField] = "dependent field" diff --git a/InvenTree/InvenTree/middleware.py b/InvenTree/InvenTree/middleware.py index a8a51404d2..7fac82e13f 100644 --- a/InvenTree/InvenTree/middleware.py +++ b/InvenTree/InvenTree/middleware.py @@ -12,9 +12,9 @@ from django.urls import Resolver404, include, re_path, resolve, reverse_lazy from allauth_2fa.middleware import (AllauthTwoFactorMiddleware, BaseRequire2FAMiddleware) from error_report.middleware import ExceptionProcessor -from rest_framework.authtoken.models import Token from InvenTree.urls import frontendpatterns +from users.models import ApiToken logger = logging.getLogger("inventree") @@ -64,6 +64,9 @@ class AuthRequiredMiddleware(object): elif request.path_info.startswith('/accounts/'): authorized = True + elif request.path_info.startswith(f'/{settings.FRONTEND_URL_BASE}/') or request.path_info.startswith('/assets/') or request.path_info == f'/{settings.FRONTEND_URL_BASE}': + authorized = True + elif 'Authorization' in request.headers.keys() or 'authorization' in request.headers.keys(): auth = request.headers.get('Authorization', request.headers.get('authorization')).strip() @@ -72,14 +75,16 @@ class AuthRequiredMiddleware(object): # Does the provided token match a valid user? try: - token = Token.objects.get(key=token_key) + token = ApiToken.objects.get(key=token_key) - # Provide the user information to the request - request.user = token.user - authorized = True + if token.active and token.user: - except Token.DoesNotExist: - logger.warning(f"Access denied for unknown token {token_key}") + # Provide the user information to the request + request.user = token.user + authorized = True + + except ApiToken.DoesNotExist: + logger.warning("Access denied for unknown token %s", token_key) # No authorization was found for the request if not authorized: @@ -105,10 +110,8 @@ class AuthRequiredMiddleware(object): # Save the 'next' parameter to pass through to the login view return redirect(f'{reverse_lazy("account_login")}?next={request.path}') - - else: - # Return a 401 (Unauthorized) response code for this request - return HttpResponse('Unauthorized', status=401) + # Return a 401 (Unauthorized) response code for this request + return HttpResponse('Unauthorized', status=401) response = self.get_response(request) @@ -122,7 +125,6 @@ class Check2FAMiddleware(BaseRequire2FAMiddleware): """Check if user is required to have MFA enabled.""" def require_2fa(self, request): """Use setting to check if MFA should be enforced for frontend page.""" - from common.models import InvenTreeSetting try: diff --git a/InvenTree/InvenTree/mixins.py b/InvenTree/InvenTree/mixins.py index 6e115d7ffa..41eb8a5ec6 100644 --- a/InvenTree/InvenTree/mixins.py +++ b/InvenTree/InvenTree/mixins.py @@ -9,6 +9,59 @@ from InvenTree.fields import InvenTreeNotesField from InvenTree.helpers import remove_non_printable_characters, strip_html_tags +class DiffMixin: + """Mixin which can be used to determine which fields have changed, compared to the instance saved to the database.""" + + def get_db_instance(self): + """Return the instance of the object saved in the database. + + Returns: + object: Instance of the object saved in the database + """ + + if self.pk: + try: + return self.__class__.objects.get(pk=self.pk) + except self.__class__.DoesNotExist: + pass + + return None + + def get_field_deltas(self): + """Return a dict of field deltas. + + Compares the current instance with the instance saved in the database, + and returns a dict of fields which have changed. + + Returns: + dict: Dict of field deltas + """ + + db_instance = self.get_db_instance() + + if db_instance is None: + return {} + + deltas = {} + + for field in self._meta.fields: + if field.name == 'id': + continue + + if getattr(self, field.name) != getattr(db_instance, field.name): + deltas[field.name] = { + 'old': getattr(db_instance, field.name), + 'new': getattr(self, field.name), + } + + return deltas + + def has_field_changed(self, field_name): + """Determine if a particular field has changed.""" + + return field_name in self.get_field_deltas() + + class CleanMixin(): """Model mixin class which cleans inputs using the Mozilla bleach tools.""" @@ -49,7 +102,6 @@ class CleanMixin(): Ref: https://github.com/mozilla/bleach/issues/192 """ - cleaned = strip_html_tags(data, field_name=field) # By default, newline characters are removed @@ -88,12 +140,11 @@ class CleanMixin(): `ugly`. Prevents XSS on the server-level. Args: - data (dict): Data that should be sanatized. + data (dict): Data that should be Sanitized. Returns: - dict: Provided data sanatized; still in the same order. + dict: Provided data Sanitized; still in the same order. """ - clean_data = {} for k, v in data.items(): diff --git a/InvenTree/InvenTree/models.py b/InvenTree/InvenTree/models.py index cc323a14fe..a7217bb8e0 100644 --- a/InvenTree/InvenTree/models.py +++ b/InvenTree/InvenTree/models.py @@ -12,7 +12,7 @@ from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.db import models -from django.db.models.signals import post_save, pre_delete +from django.db.models.signals import post_save from django.dispatch import receiver from django.urls import reverse from django.utils.translation import gettext_lazy as _ @@ -73,7 +73,6 @@ class MetadataMixin(models.Model): def validate_metadata(self): """Validate the metadata field.""" - # Ensure that the 'metadata' field is a valid dict object if self.metadata is None: self.metadata = {} @@ -202,7 +201,6 @@ class ReferenceIndexingMixin(models.Model): This is defined by a global setting object, specified by the REFERENCE_PATTERN_SETTING attribute """ - # By default, we return an empty string if cls.REFERENCE_PATTERN_SETTING is None: return '' @@ -218,7 +216,6 @@ class ReferenceIndexingMixin(models.Model): - Returns a python dict object which contains the context data for formatting the reference string. - The default implementation provides some default context information """ - return { 'ref': cls.get_next_reference(), 'date': datetime.now(), @@ -230,18 +227,15 @@ class ReferenceIndexingMixin(models.Model): In practice, this means the item with the highest reference value """ - query = cls.objects.all().order_by('-reference_int', '-pk') if query.exists(): return query.first() - else: - return None + return None @classmethod def get_next_reference(cls): """Return the next available reference value for this particular class.""" - # Find the "most recent" item latest = cls.get_most_recent_item() @@ -270,7 +264,6 @@ class ReferenceIndexingMixin(models.Model): @classmethod def generate_reference(cls): """Generate the next 'reference' field based on specified pattern""" - fmt = cls.get_reference_pattern() ctx = cls.get_reference_context() @@ -310,7 +303,6 @@ class ReferenceIndexingMixin(models.Model): @classmethod def validate_reference_pattern(cls, pattern): """Ensure that the provided pattern is valid""" - ctx = cls.get_reference_context() try: @@ -336,7 +328,6 @@ class ReferenceIndexingMixin(models.Model): @classmethod def validate_reference_field(cls, value): """Check that the provided 'reference' value matches the requisite pattern""" - pattern = cls.get_reference_pattern() value = str(value).strip() @@ -368,7 +359,6 @@ class ReferenceIndexingMixin(models.Model): If we cannot extract using the pattern for some reason, fallback to the entire reference """ - try: # Extract named group based on provided pattern reference = InvenTree.format.extract_named_group('ref', reference, cls.get_reference_pattern()) @@ -390,7 +380,6 @@ class ReferenceIndexingMixin(models.Model): def extract_int(reference, clip=0x7fffffff, allow_negative=False): """Extract an integer out of reference.""" - # Default value if we cannot convert to an integer ref_int = 0 @@ -440,7 +429,8 @@ class InvenTreeAttachment(models.Model): An attachment can be either an uploaded file, or an external URL Attributes: - attachment: File + attachment: Upload file + link: External URL comment: String descriptor for the attachment user: User associated with file upload upload_date: Date the file was uploaded @@ -480,8 +470,7 @@ class InvenTreeAttachment(models.Model): """Human name for attachment.""" if self.attachment is not None: return os.path.basename(self.attachment.name) - else: - return str(self.link) + return str(self.link) attachment = models.FileField(upload_to=rename_attachment, verbose_name=_('Attachment'), help_text=_('Select file to attach'), @@ -511,8 +500,7 @@ class InvenTreeAttachment(models.Model): """Base name/path for attachment.""" if self.attachment: return os.path.basename(self.attachment.name) - else: - return None + return None @basename.setter def basename(self, fn): @@ -534,7 +522,7 @@ class InvenTreeAttachment(models.Model): # Check that there are no directory tricks going on... if new_file.parent != attachment_dir: - logger.error(f"Attempted to rename attachment outside valid directory: '{new_file}'") + logger.error("Attempted to rename attachment outside valid directory: '%s'", new_file) raise ValidationError(_("Invalid attachment directory")) # Ignore further checks if the filename is not actually being renamed @@ -551,7 +539,7 @@ class InvenTreeAttachment(models.Model): raise ValidationError(_("Filename missing extension")) if not old_file.exists(): - logger.error(f"Trying to rename attachment '{old_file}' which does not exist") + logger.error("Trying to rename attachment '%s' which does not exist", old_file) return if new_file.exists(): @@ -564,6 +552,21 @@ class InvenTreeAttachment(models.Model): except Exception: raise ValidationError(_("Error renaming file")) + def fully_qualified_url(self): + """Return a 'fully qualified' URL for this attachment. + + - If the attachment is a link to an external resource, return the link + - If the attachment is an uploaded file, return the fully qualified media URL + """ + if self.link: + return self.link + + if self.attachment: + media_url = InvenTree.helpers.getMediaUrl(self.attachment.url) + return InvenTree.helpers_model.construct_absolute_url(media_url) + + return '' + class InvenTreeTree(MPTTModel): """Provides an abstracted self-referencing tree model for data categories. @@ -577,6 +580,10 @@ class InvenTreeTree(MPTTModel): parent: The item immediately above this one. An item with a null parent is a top-level item """ + # How items (not nodes) are hooked into the tree + # e.g. for StockLocation, this value is 'location' + ITEM_PARENT_KEY = None + class Meta: """Metaclass defines extra model properties.""" abstract = True @@ -585,13 +592,130 @@ class InvenTreeTree(MPTTModel): """Set insert order.""" order_insertion_by = ['name'] + def delete(self, delete_children=False, delete_items=False): + """Handle the deletion of a tree node. + + 1. Update nodes and items under the current node + 2. Delete this node + 3. Rebuild the model tree + 4. Rebuild the path for any remaining lower nodes + """ + tree_id = self.tree_id if self.parent else None + + # Ensure that we have the latest version of the database object + try: + self.refresh_from_db() + except self.__class__.DoesNotExist: + # If the object no longer exists, raise a ValidationError + raise ValidationError("Object %s of type %s no longer exists", str(self), str(self.__class__)) + + # Cache node ID values for lower nodes, before we delete this one + lower_nodes = list(self.get_descendants(include_self=False).values_list('pk', flat=True)) + + # 1. Update nodes and items under the current node + self.handle_tree_delete(delete_children=delete_children, delete_items=delete_items) + + # 2. Delete *this* node + super().delete() + + # 3. Update the tree structure + if tree_id: + self.__class__.objects.partial_rebuild(tree_id) + else: + self.__class__.objects.rebuild() + + # 4. Rebuild the path for any remaining lower nodes + nodes = self.__class__.objects.filter(pk__in=lower_nodes) + + nodes_to_update = [] + + for node in nodes: + new_path = node.construct_pathstring() + + if new_path != node.pathstring: + node.pathstring = new_path + nodes_to_update.append(node) + + if len(nodes_to_update) > 0: + self.__class__.objects.bulk_update(nodes_to_update, ['pathstring']) + + def handle_tree_delete(self, delete_children=False, delete_items=False): + """Delete a single instance of the tree, based on provided kwargs. + + Removing a tree "node" from the database must be considered carefully, + based on what the user intends for any items which exist *under* that node. + + - "children" are any nodes which exist *under* this node (e.g. PartCategory) + - "items" are any items which exist *under* this node (e.g. Part) + + Arguments: + delete_children: If True, delete all child items + delete_items: If True, delete all items associated with this node + + There are multiple scenarios we can consider here: + + A) delete_children = True and delete_items = True + B) delete_children = True and delete_items = False + C) delete_children = False and delete_items = True + D) delete_children = False and delete_items = False + """ + + child_nodes = self.get_descendants(include_self=False) + + # Case A: Delete all child items, and all child nodes. + # - Delete all items at any lower level + # - Delete all descendant nodes + if delete_children and delete_items: + self.get_items(cascade=True).delete() + self.delete_nodes(child_nodes) + + # Case B: Delete all child nodes, but move all child items up to the parent + # - Move all items at any lower level to the parent of this item + # - Delete all descendant nodes + elif delete_children and not delete_items: + self.get_items(cascade=True).update(**{ + self.ITEM_PARENT_KEY: self.parent + }) + + self.delete_nodes(child_nodes) + + # Case C: Delete all child items, but keep all child nodes + # - Remove all items directly associated with this node + # - Move any direct child nodes up one level + elif not delete_children and delete_items: + self.get_items(cascade=False).delete() + self.get_children().update(parent=self.parent) + + # Case D: Keep all child items, and keep all child nodes + # - Move all items directly associated with this node up one level + # - Move any direct child nodes up one level + elif not delete_children and not delete_items: + self.get_items(cascade=False).update(**{ + self.ITEM_PARENT_KEY: self.parent + }) + self.get_children().update(parent=self.parent) + + def delete_nodes(self, nodes): + """Delete a set of nodes from the tree. + + 1. First, set the "parent" value for selected nodes to None + 2. Then, perform bulk deletion of selected nodes + + Step 1. is required because we cannot guarantee the order-of-operations in the db backend + + Arguments: + nodes: A queryset of nodes to delete + """ + + nodes.update(parent=None) + nodes.delete() + def validate_unique(self, exclude=None): """Validate that this tree instance satisfies our uniqueness requirements. Note that a 'unique_together' requirement for ('name', 'parent') is insufficient, as it ignores cases where parent=None (i.e. top-level items) """ - super().validate_unique(exclude) results = self.__class__.objects.filter( @@ -612,9 +736,14 @@ class InvenTreeTree(MPTTModel): } } + def construct_pathstring(self): + """Construct the pathstring for this tree node""" + return InvenTree.helpers.constructPathString( + [item.name for item in self.path] + ) + def save(self, *args, **kwargs): """Custom save method for InvenTreeTree abstract model""" - try: super().save(*args, **kwargs) except InvalidMove: @@ -624,9 +753,7 @@ class InvenTreeTree(MPTTModel): }) # Re-calculate the 'pathstring' field - pathstring = InvenTree.helpers.constructPathString( - [item.name for item in self.path] - ) + pathstring = self.construct_pathstring() if pathstring != self.pathstring: @@ -638,9 +765,20 @@ class InvenTreeTree(MPTTModel): self.pathstring = pathstring super().save(*args, **kwargs) - # Ensure that the pathstring changes are propagated down the tree also - for child in self.get_children(): - child.save(*args, **kwargs) + # Update the pathstring for any child nodes + lower_nodes = self.get_descendants(include_self=False) + + nodes_to_update = [] + + for node in lower_nodes: + new_path = node.construct_pathstring() + + if new_path != node.pathstring: + node.pathstring = new_path + nodes_to_update.append(node) + + if len(nodes_to_update) > 0: + self.__class__.objects.bulk_update(nodes_to_update, ['pathstring']) name = models.CharField( blank=False, @@ -672,16 +810,15 @@ class InvenTreeTree(MPTTModel): help_text=_('Path') ) - @property - def item_count(self): - """Return the number of items which exist *under* this node in the tree. + def get_items(self, cascade=False): + """Return a queryset of items which exist *under* this node in the tree. - Here an 'item' is considered to be the 'leaf' at the end of each branch, - and the exact nature here will depend on the class implementation. + - For a StockLocation instance, this would be a queryset of StockItem objects + - For a PartCategory instance, this would be a queryset of Part objects - The default implementation returns zero + The default implementation returns an empty list """ - return 0 + raise NotImplementedError(f"items() method not implemented for {type(self)}") def getUniqueParents(self): """Return a flat set of all parent items that exist above this node. @@ -742,9 +879,26 @@ class InvenTreeTree(MPTTModel): """ return self.parentpath + [self] + def get_path(self): + """Return a list of element in the item tree. + + Contains the full path to this item, with each entry containing the following data: + + { + pk: , + name: , + } + """ + return [ + { + 'pk': item.pk, + 'name': item.name + } for item in self.path + ] + def __str__(self): """String representation of a category is the full path to that category.""" - return "{path} - {desc}".format(path=self.pathstring, desc=self.description) + return f"{self.pathstring} - {self.description}" class InvenTreeNotesMixin(models.Model): @@ -804,13 +958,11 @@ class InvenTreeBarcodeMixin(models.Model): @classmethod def barcode_model_type(cls): """Return the model 'type' for creating a custom QR code.""" - # By default, use the name of the class return cls.__name__.lower() def format_barcode(self, **kwargs): """Return a JSON string for formatting a QR code for this model instance.""" - return InvenTree.helpers.MakeBarcode( self.__class__.barcode_model_type(), self.pk, @@ -820,18 +972,15 @@ class InvenTreeBarcodeMixin(models.Model): @property def barcode(self): """Format a minimal barcode string (e.g. for label printing)""" - return self.format_barcode(brief=True) @classmethod def lookup_barcode(cls, barcode_hash): """Check if a model instance exists with the specified third-party barcode hash.""" - return cls.objects.filter(barcode_hash=barcode_hash).first() def assign_barcode(self, barcode_hash=None, barcode_data=None, raise_error=True, save=True): """Assign an external (third-party) barcode to this object.""" - # Must provide either barcode_hash or barcode_data if barcode_hash is None and barcode_data is None: raise ValueError("Provide either 'barcode_hash' or 'barcode_data'") @@ -859,34 +1008,21 @@ class InvenTreeBarcodeMixin(models.Model): def unassign_barcode(self): """Unassign custom barcode from this model""" - self.barcode_data = '' self.barcode_hash = '' self.save() -@receiver(pre_delete, sender=InvenTreeTree, dispatch_uid='tree_pre_delete_log') -def before_delete_tree_item(sender, instance, using, **kwargs): - """Receives pre_delete signal from InvenTreeTree object. - - Before an item is deleted, update each child object to point to the parent of the object being deleted. - """ - # Update each tree item below this one - for child in instance.children.all(): - child.parent = instance.parent - child.save() - - @receiver(post_save, sender=Error, dispatch_uid='error_post_save_notification') def after_error_logged(sender, instance: Error, created: bool, **kwargs): """Callback when a server error is logged. - Send a UI notification to all users with staff status """ - if created: try: + import common.models import common.notifications users = get_user_model().objects.filter(is_staff=True) @@ -902,14 +1038,21 @@ def after_error_logged(sender, instance: Error, created: bool, **kwargs): 'link': link } - common.notifications.trigger_notification( - instance, - 'inventree.error_log', - context=context, - targets=users, - delivery_methods={common.notifications.UIMessageNotification, }, - ) + target_users = [] + + for user in users: + if common.models.InvenTreeUserSetting.get_setting('NOTIFICATION_ERROR_REPORT', True, user=user): + target_users.append(user) + + if len(target_users) > 0: + common.notifications.trigger_notification( + instance, + 'inventree.error_log', + context=context, + targets=target_users, + delivery_methods={common.notifications.UIMessageNotification, }, + ) except Exception as exc: """We do not want to throw an exception while reporting an exception""" - logger.error(exc) + logger.error(exc) # noqa: LOG005 diff --git a/InvenTree/InvenTree/permissions.py b/InvenTree/InvenTree/permissions.py index e46367400b..befbcab4c3 100644 --- a/InvenTree/InvenTree/permissions.py +++ b/InvenTree/InvenTree/permissions.py @@ -9,7 +9,6 @@ import users.models def get_model_for_view(view, raise_error=True): """Attempt to introspect the 'model' type for an API view""" - if hasattr(view, 'get_permission_model'): return view.get_permission_model() @@ -62,6 +61,10 @@ class RolePermission(permissions.BasePermission): 'DELETE': 'delete', } + # let the view define a custom rolemap + if hasattr(view, "rolemap"): + rolemap.update(view.rolemap) + permission = rolemap[request.method] # The required role may be defined for the view class diff --git a/InvenTree/InvenTree/ready.py b/InvenTree/InvenTree/ready.py index 6e16a3b471..cc7c690965 100644 --- a/InvenTree/InvenTree/ready.py +++ b/InvenTree/InvenTree/ready.py @@ -1,5 +1,6 @@ """Functions to check if certain parts of InvenTree are ready.""" +import os import sys @@ -18,6 +19,18 @@ def isRunningMigrations(): return 'migrate' in sys.argv or 'makemigrations' in sys.argv +def isInMainThread(): + """Django runserver starts two processes, one for the actual dev server and the other to reload the application. + + - The RUN_MAIN env is set in that case. However if --noreload is applied, this variable + is not set because there are no different threads. + """ + if "runserver" in sys.argv and "--noreload" not in sys.argv: + return os.environ.get('RUN_MAIN', None) == "true" + + return True + + def canAppAccessDatabase(allow_test: bool = False, allow_plugins: bool = False, allow_shell: bool = False): """Returns True if the apps.py file can access database records. @@ -65,3 +78,19 @@ def canAppAccessDatabase(allow_test: bool = False, allow_plugins: bool = False, return False return True + + +def isPluginRegistryLoaded(): + """Ensures that the plugin registry is already loaded. + + The plugin registry reloads all apps onetime after starting if there are AppMixin plugins, + so that the discovered AppConfigs are added to Django. This triggers the ready function of + AppConfig to execute twice. Add this check to prevent from running two times. + + Note: All apps using this check need to be registered after the plugins app in settings.py + + Returns: 'False' if the registry has not fully loaded the plugins yet. + """ + from plugin import registry + + return registry.plugins_loaded diff --git a/InvenTree/InvenTree/sanitizer.py b/InvenTree/InvenTree/sanitizer.py index d417b85118..0565c1b7f2 100644 --- a/InvenTree/InvenTree/sanitizer.py +++ b/InvenTree/InvenTree/sanitizer.py @@ -44,7 +44,7 @@ ALLOWED_ATTRIBUTES_SVG = [ def sanitize_svg(file_data, strip: bool = True, elements: str = ALLOWED_ELEMENTS_SVG, attributes: str = ALLOWED_ATTRIBUTES_SVG) -> str: - """Sanatize a SVG file. + """Sanitize a SVG file. Args: file_data (str): SVG as string. @@ -55,9 +55,8 @@ def sanitize_svg(file_data, strip: bool = True, elements: str = ALLOWED_ELEMENTS Returns: str: Sanitzied SVG file. """ - # Handle byte-encoded data - if type(file_data) == bytes: + if isinstance(file_data, bytes): file_data = file_data.decode('utf-8') cleaned = clean( diff --git a/InvenTree/InvenTree/sentry.py b/InvenTree/InvenTree/sentry.py index 88d49e0f0c..b1ead7a5cb 100644 --- a/InvenTree/InvenTree/sentry.py +++ b/InvenTree/InvenTree/sentry.py @@ -10,14 +10,13 @@ import rest_framework.exceptions import sentry_sdk from sentry_sdk.integrations.django import DjangoIntegration -from InvenTree.version import INVENTREE_SW_VERSION +import InvenTree.version logger = logging.getLogger('inventree') def default_sentry_dsn(): """Return the default Sentry.io DSN for InvenTree""" - return 'https://3928ccdba1d34895abde28031fd00100@o378676.ingest.sentry.io/6494600' @@ -26,11 +25,11 @@ def sentry_ignore_errors(): These error types will *not* be reported to sentry.io. """ - return [ Http404, ValidationError, rest_framework.exceptions.AuthenticationFailed, + rest_framework.exceptions.NotAuthenticated, rest_framework.exceptions.PermissionDenied, rest_framework.exceptions.ValidationError, ] @@ -38,7 +37,6 @@ def sentry_ignore_errors(): def init_sentry(dsn, sample_rate, tags): """Initialize sentry.io error reporting""" - logger.info("Initializing sentry.io integration") sentry_sdk.init( @@ -47,20 +45,26 @@ def init_sentry(dsn, sample_rate, tags): traces_sample_rate=sample_rate, send_default_pii=True, ignore_errors=sentry_ignore_errors(), - release=INVENTREE_SW_VERSION, + release=InvenTree.version.INVENTREE_SW_VERSION, + environment='development' if InvenTree.version.isInvenTreeDevelopmentVersion() else 'production' ) for key, val in tags.items(): sentry_sdk.set_tag(f'inventree_{key}', val) + sentry_sdk.set_tag('api', InvenTree.version.inventreeApiVersion()) + sentry_sdk.set_tag('platform', InvenTree.version.inventreePlatform()) + sentry_sdk.set_tag('git_branch', InvenTree.version.inventreeBranch()) + sentry_sdk.set_tag('git_commit', InvenTree.version.inventreeCommitHash()) + sentry_sdk.set_tag('git_date', InvenTree.version.inventreeCommitDate()) + def report_exception(exc): """Report an exception to sentry.io""" - if settings.SENTRY_ENABLED and settings.SENTRY_DSN: if not any(isinstance(exc, e) for e in sentry_ignore_errors()): - logger.info(f"Reporting exception to sentry.io: {exc}") + logger.info("Reporting exception to sentry.io: %s", exc) try: sentry_sdk.capture_exception(exc) diff --git a/InvenTree/InvenTree/serializers.py b/InvenTree/InvenTree/serializers.py index 8260fb05ef..96956ec427 100644 --- a/InvenTree/InvenTree/serializers.py +++ b/InvenTree/InvenTree/serializers.py @@ -2,10 +2,12 @@ import os from collections import OrderedDict +from copy import deepcopy from decimal import Decimal from django.conf import settings from django.contrib.auth.models import User +from django.contrib.sites.models import Site from django.core.exceptions import ValidationError as DjangoValidationError from django.db import models from django.utils.translation import gettext_lazy as _ @@ -15,7 +17,7 @@ from djmoney.contrib.django_rest_framework.fields import MoneyField from djmoney.money import Money from djmoney.utils import MONEY_CLASSES, get_currency_field_name from rest_framework import serializers -from rest_framework.exceptions import ValidationError +from rest_framework.exceptions import PermissionDenied, ValidationError from rest_framework.fields import empty from rest_framework.serializers import DecimalField from rest_framework.utils import model_meta @@ -43,7 +45,6 @@ class InvenTreeMoneySerializer(MoneyField): def get_value(self, data): """Test that the returned amount is a valid Decimal.""" - amount = super(DecimalField, self).get_value(data) # Convert an empty string to None @@ -73,7 +74,6 @@ class InvenTreeCurrencySerializer(serializers.ChoiceField): def __init__(self, *args, **kwargs): """Initialize the currency serializer""" - choices = currency_code_mappings() allow_blank = kwargs.get('allow_blank', False) or kwargs.get('allow_null', False) @@ -95,6 +95,93 @@ class InvenTreeCurrencySerializer(serializers.ChoiceField): super().__init__(*args, **kwargs) +class DependentField(serializers.Field): + """A dependent field can be used to dynamically return child fields based on the value of other fields.""" + child = None + + def __init__(self, *args, depends_on, field_serializer, **kwargs): + """A dependent field can be used to dynamically return child fields based on the value of other fields. + + Example: + This example adds two fields. If the client selects integer, an integer field will be shown, but if he + selects char, an char field will be shown. For any other value, nothing will be shown. + + class TestSerializer(serializers.Serializer): + select_type = serializers.ChoiceField(choices=[ + ("integer", "Integer"), + ("char", "Char"), + ]) + my_field = DependentField(depends_on=["select_type"], field_serializer="get_my_field") + + def get_my_field(self, fields): + if fields["select_type"] == "integer": + return serializers.IntegerField() + if fields["select_type"] == "char": + return serializers.CharField() + """ + super().__init__(*args, **kwargs) + + self.depends_on = depends_on + self.field_serializer = field_serializer + + def get_child(self, raise_exception=False): + """This method tries to extract the child based on the provided data in the request by the client.""" + data = deepcopy(self.context["request"].data) + + def visit_parent(node): + """Recursively extract the data for the parent field/serializer in reverse.""" + nonlocal data + + if node.parent: + visit_parent(node.parent) + + # only do for composite fields and stop right before the current field + if hasattr(node, "child") and node is not self and isinstance(data, dict): + data = data.get(node.field_name, None) + visit_parent(self) + + # ensure that data is a dictionary and that a parent exists + if not isinstance(data, dict) or self.parent is None: + return + + # check if the request data contains the dependent fields, otherwise skip getting the child + for f in self.depends_on: + if not data.get(f, None): + return + + # partially validate the data for options requests that set raise_exception while calling .get_child(...) + if raise_exception: + validation_data = {k: v for k, v in data.items() if k in self.depends_on} + serializer = self.parent.__class__(context=self.context, data=validation_data, partial=True) + serializer.is_valid(raise_exception=raise_exception) + + # try to get the field serializer + field_serializer = getattr(self.parent, self.field_serializer) + child = field_serializer(data) + + if not child: + return + + self.child = child + self.child.bind(field_name='', parent=self) + + def to_internal_value(self, data): + """This method tries to convert the data to an internal representation based on the defined to_internal_value method on the child.""" + self.get_child() + if self.child: + return self.child.to_internal_value(data) + + return None + + def to_representation(self, value): + """This method tries to convert the data to representation based on the defined to_representation method on the child.""" + self.get_child() + if self.child: + return self.child.to_representation(value) + + return None + + class InvenTreeModelSerializer(serializers.ModelSerializer): """Inherits the standard Django ModelSerializer class, but also ensures that the underlying model class data are checked on validation.""" @@ -197,7 +284,6 @@ class InvenTreeModelSerializer(serializers.ModelSerializer): def create(self, validated_data): """Custom create method which supports field adjustment""" - initial_data = validated_data.copy() # Remove any fields which do not exist on the model @@ -221,7 +307,6 @@ class InvenTreeModelSerializer(serializers.ModelSerializer): In addition to running validators on the serializer fields, this class ensures that the underlying model is also validated. """ - # Run any native validation checks first (may raise a ValidationError) data = super().run_validation(data) @@ -298,9 +383,79 @@ class UserSerializer(InvenTreeModelSerializer): 'username', 'first_name', 'last_name', - 'email' + 'email', ] + read_only_fields = [ + 'username', + ] + + +class ExendedUserSerializer(UserSerializer): + """Serializer for a User with a bit more info.""" + from users.serializers import GroupSerializer + + groups = GroupSerializer(read_only=True, many=True) + + class Meta(UserSerializer.Meta): + """Metaclass defines serializer fields.""" + fields = UserSerializer.Meta.fields + [ + 'groups', + 'is_staff', + 'is_superuser', + 'is_active' + ] + + read_only_fields = UserSerializer.Meta.read_only_fields + [ + 'groups', + ] + + def validate(self, attrs): + """Expanded validation for changing user role.""" + # Check if is_staff or is_superuser is in attrs + role_change = 'is_staff' in attrs or 'is_superuser' in attrs + request_user = self.context['request'].user + + if role_change: + if request_user.is_superuser: + # Superusers can change any role + pass + elif request_user.is_staff and 'is_superuser' not in attrs: + # Staff can change any role except is_superuser + pass + else: + raise PermissionDenied(_("You do not have permission to change this user role.")) + return super().validate(attrs) + + +class UserCreateSerializer(ExendedUserSerializer): + """Serializer for creating a new User.""" + def validate(self, attrs): + """Expanded valiadation for auth.""" + # Check that the user trying to create a new user is a superuser + if not self.context['request'].user.is_superuser: + raise serializers.ValidationError(_("Only superusers can create new users")) + + # Generate a random password + password = User.objects.make_random_password(length=14) + attrs.update({'password': password}) + return super().validate(attrs) + + def create(self, validated_data): + """Send an e email to the user after creation.""" + instance = super().create(validated_data) + + # Make sure the user cannot login until they have set a password + instance.set_unusable_password() + # Send the user an onboarding email (from current site) + current_site = Site.objects.get_current() + domain = current_site.domain + instance.email_user( + subject=_(f"Welcome to {current_site.name}"), + message=_(f"Your account has been created.\n\nPlease use the password reset function to get access (at https://{domain})."), + ) + return instance + class InvenTreeAttachmentSerializerField(serializers.FileField): """Override the DRF native FileField serializer, to remove the leading server path. @@ -701,7 +856,6 @@ class RemoteImageMixin(metaclass=serializers.SerializerMetaclass): def skip_create_fields(self): """Ensure the 'remote_image' field is skipped when creating a new instance""" - return [ 'remote_image', ] @@ -720,7 +874,6 @@ class RemoteImageMixin(metaclass=serializers.SerializerMetaclass): - Attempt to download the image and store it against this object instance - Catches and re-throws any errors """ - if not url: return diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index fc30387d6a..e570c89354 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -26,14 +26,16 @@ from dotenv import load_dotenv from InvenTree.config import get_boolean_setting, get_custom_file, get_setting from InvenTree.sentry import default_sentry_dsn, init_sentry -from InvenTree.version import inventreeApiVersion +from InvenTree.version import checkMinPythonVersion, inventreeApiVersion from . import config +checkMinPythonVersion() + INVENTREE_NEWS_URL = 'https://inventree.org/news/feed.atom' # Determine if we are running in "test" mode e.g. "manage.py test" -TESTING = 'test' in sys.argv +TESTING = 'test' in sys.argv or 'TESTING' in os.environ if TESTING: @@ -76,6 +78,9 @@ if version_file.exists(): # SECURITY WARNING: don't run with debug turned on in production! DEBUG = get_boolean_setting('INVENTREE_DEBUG', 'debug', True) +ENABLE_CLASSIC_FRONTEND = get_boolean_setting('INVENTREE_CLASSIC_FRONTEND', 'classic_frontend', True) +ENABLE_PLATFORM_FRONTEND = get_boolean_setting('INVENTREE_PLATFORM_FRONTEND', 'platform_frontend', True) + # Configure logging settings log_level = get_setting('INVENTREE_LOG_LEVEL', 'log_level', 'WARNING') @@ -106,6 +111,14 @@ LOGGING = { }, } +# Optionally add database-level logging +if get_setting('INVENTREE_DB_LOGGING', 'db_logging', False): + LOGGING['loggers'] = { + 'django.db.backends': { + 'level': log_level or 'DEBUG', + }, + } + # Get a logger instance for this setup file logger = logging.getLogger("inventree") @@ -128,8 +141,8 @@ ALLOWED_HOSTS = get_setting( # Cross Origin Resource Sharing (CORS) options -# Only allow CORS access to API -CORS_URLS_REGEX = r'^/api/.*$' +# Only allow CORS access to API and media endpoints +CORS_URLS_REGEX = r'^/(api|media|static)/.*$' # Extract CORS options from configuration file CORS_ORIGIN_ALLOW_ALL = get_boolean_setting( @@ -186,7 +199,18 @@ if DBBACKUP_STORAGE_OPTIONS is None: 'location': config.get_backup_dir(), } -# Application definition +INVENTREE_ADMIN_ENABLED = get_boolean_setting( + 'INVENTREE_ADMIN_ENABLED', + config_key='admin_enabled', + default_value=True +) + +# Base URL for admin pages (default="admin") +INVENTREE_ADMIN_URL = get_setting( + 'INVENTREE_ADMIN_URL', + config_key='admin_url', + default_value='admin' +) INSTALLED_APPS = [ # Admin site integration @@ -196,13 +220,14 @@ INSTALLED_APPS = [ 'build.apps.BuildConfig', 'common.apps.CommonConfig', 'company.apps.CompanyConfig', + 'plugin.apps.PluginAppConfig', # Plugin app runs before all apps that depend on the isPluginRegistryLoaded function 'label.apps.LabelConfig', 'order.apps.OrderConfig', 'part.apps.PartConfig', 'report.apps.ReportConfig', 'stock.apps.StockConfig', 'users.apps.UsersConfig', - 'plugin.apps.PluginAppConfig', + 'web', 'generic', 'InvenTree.apps.InvenTreeConfig', # InvenTree app runs last @@ -220,7 +245,6 @@ INSTALLED_APPS = [ # Third part add-ons 'django_filters', # Extended filter functionality 'rest_framework', # DRF (Django Rest Framework) - 'rest_framework.authtoken', # Token authentication for API 'corsheaders', # Cross-origin Resource Sharing for DRF 'crispy_forms', # Improved form rendering 'import_export', # Import / export tables to file @@ -245,6 +269,8 @@ INSTALLED_APPS = [ 'django_otp.plugins.otp_static', # Backup codes 'allauth_2fa', # MFA flow for allauth + 'dj_rest_auth', # Authentication APIs - dj-rest-auth + 'dj_rest_auth.registration', # Registration APIs - dj-rest-auth' 'drf_spectacular', # API documentation 'django_ical', # For exporting calendars @@ -274,8 +300,66 @@ AUTHENTICATION_BACKENDS = CONFIG.get('authentication_backends', [ 'django.contrib.auth.backends.RemoteUserBackend', # proxy login 'django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend', # SSO login via external providers + "sesame.backends.ModelBackend", # Magic link login django-sesame ]) +# LDAP support +LDAP_AUTH = get_boolean_setting("INVENTREE_LDAP_ENABLED", "ldap.enabled", False) +if LDAP_AUTH: + import ldap + from django_auth_ldap.config import LDAPSearch + + AUTHENTICATION_BACKENDS.append("django_auth_ldap.backend.LDAPBackend") + + # debug mode to troubleshoot configuration + LDAP_DEBUG = get_boolean_setting("INVENTREE_LDAP_DEBUG", "ldap.debug", False) + if LDAP_DEBUG: + if "loggers" not in LOGGING: + LOGGING["loggers"] = {} + LOGGING["loggers"]["django_auth_ldap"] = {"level": "DEBUG", "handlers": ["console"]} + + # get global options from dict and use ldap.OPT_* as keys and values + global_options_dict = get_setting("INVENTREE_LDAP_GLOBAL_OPTIONS", "ldap.global_options", {}, dict) + global_options = {} + for k, v in global_options_dict.items(): + # keys are always ldap.OPT_* constants + k_attr = getattr(ldap, k, None) + if not k.startswith("OPT_") or k_attr is None: + print(f"[LDAP] ldap.global_options, key '{k}' not found, skipping...") + continue + + # values can also be other strings, e.g. paths + v_attr = v + if v.startswith("OPT_"): + v_attr = getattr(ldap, v, None) + + if v_attr is None: + print(f"[LDAP] ldap.global_options, value key '{v}' not found, skipping...") + continue + + global_options[k_attr] = v_attr + AUTH_LDAP_GLOBAL_OPTIONS = global_options + if LDAP_DEBUG: + print("[LDAP] ldap.global_options =", global_options) + + AUTH_LDAP_SERVER_URI = get_setting("INVENTREE_LDAP_SERVER_URI", "ldap.server_uri") + AUTH_LDAP_START_TLS = get_boolean_setting("INVENTREE_LDAP_START_TLS", "ldap.start_tls", False) + AUTH_LDAP_BIND_DN = get_setting("INVENTREE_LDAP_BIND_DN", "ldap.bind_dn") + AUTH_LDAP_BIND_PASSWORD = get_setting("INVENTREE_LDAP_BIND_PASSWORD", "ldap.bind_password") + AUTH_LDAP_USER_SEARCH = LDAPSearch( + get_setting("INVENTREE_LDAP_SEARCH_BASE_DN", "ldap.search_base_dn"), + ldap.SCOPE_SUBTREE, + str(get_setting("INVENTREE_LDAP_SEARCH_FILTER_STR", "ldap.search_filter_str", "(uid= %(user)s)")) + ) + AUTH_LDAP_USER_DN_TEMPLATE = get_setting("INVENTREE_LDAP_USER_DN_TEMPLATE", "ldap.user_dn_template") + AUTH_LDAP_USER_ATTR_MAP = get_setting("INVENTREE_LDAP_USER_ATTR_MAP", "ldap.user_attr_map", { + 'first_name': 'givenName', + 'last_name': 'sn', + 'email': 'mail', + }, dict) + AUTH_LDAP_ALWAYS_UPDATE_USER = get_boolean_setting("INVENTREE_LDAP_ALWAYS_UPDATE_USER", "ldap.always_update_user", True) + AUTH_LDAP_CACHE_TIMEOUT = get_setting("INVENTREE_LDAP_CACHE_TIMEOUT", "ldap.cache_timeout", 3600, int) + DEBUG_TOOLBAR_ENABLED = DEBUG and get_setting('INVENTREE_DEBUG_TOOLBAR', 'debug_toolbar', False) # If the debug toolbar is enabled, add the modules @@ -307,14 +391,6 @@ if DEBUG: INSTALLED_APPS.append('sslserver') # InvenTree URL configuration - -# Base URL for admin pages (default="admin") -INVENTREE_ADMIN_URL = get_setting( - 'INVENTREE_ADMIN_URL', - config_key='admin_url', - default_value='admin' -) - ROOT_URLCONF = 'InvenTree.urls' TEMPLATES = [ @@ -361,7 +437,7 @@ REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.SessionAuthentication', - 'rest_framework.authentication.TokenAuthentication', + 'users.authentication.ApiTokenAuthentication', ), 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination', 'DEFAULT_PERMISSION_CLASSES': ( @@ -373,13 +449,31 @@ REST_FRAMEWORK = { 'DEFAULT_METADATA_CLASS': 'InvenTree.metadata.InvenTreeMetadata', 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', - ] + ], + 'TOKEN_MODEL': 'users.models.ApiToken', } if DEBUG: # Enable browsable API if in DEBUG mode REST_FRAMEWORK['DEFAULT_RENDERER_CLASSES'].append('rest_framework.renderers.BrowsableAPIRenderer') +# dj-rest-auth +# JWT switch +USE_JWT = get_boolean_setting('INVENTREE_USE_JWT', 'use_jwt', False) +REST_USE_JWT = USE_JWT +OLD_PASSWORD_FIELD_ENABLED = True +REST_AUTH_REGISTER_SERIALIZERS = {'REGISTER_SERIALIZER': 'InvenTree.forms.CustomRegisterSerializer'} + +# JWT settings - rest_framework_simplejwt +if USE_JWT: + JWT_AUTH_COOKIE = 'inventree-auth' + JWT_AUTH_REFRESH_COOKIE = 'inventree-token' + REST_FRAMEWORK['DEFAULT_AUTHENTICATION_CLASSES'] + ( + 'dj_rest_auth.jwt_auth.JWTCookieAuthentication', + ) + INSTALLED_APPS.append('rest_framework_simplejwt') + +# WSGI default setting SPECTACULAR_SETTINGS = { 'TITLE': 'InvenTree API', 'DESCRIPTION': 'API for InvenTree - the intuitive open source inventory management system', @@ -422,7 +516,7 @@ for key in db_keys: try: env_var = int(env_var) except ValueError: - logger.error(f"Invalid number for {env_key}: {env_var}") + logger.exception("Invalid number for %s: %s", env_key, env_var) # Override configuration value db_config[key] = env_var @@ -463,9 +557,9 @@ if 'sqlite' in db_engine: db_name = str(Path(db_name).resolve()) db_config['NAME'] = db_name -logger.info(f"DB_ENGINE: {db_engine}") -logger.info(f"DB_NAME: {db_name}") -logger.info(f"DB_HOST: {db_host}") +logger.info("DB_ENGINE: %s", db_engine) +logger.info("DB_NAME: %s", db_name) +logger.info("DB_HOST: %s", db_host) """ In addition to base-level database configuration, we may wish to specify specific options to the database backend @@ -662,6 +756,7 @@ Q_CLUSTER = { 'orm': 'default', 'cache': 'default', 'sync': False, + 'poll': 1.5, } # Configure django-q sentry integration @@ -718,7 +813,10 @@ LANGUAGE_CODE = get_setting('INVENTREE_LANGUAGE', 'language', 'en-us') LANGUAGE_COOKIE_AGE = 2592000 # If a new language translation is supported, it must be added here +# After adding a new language, run the following command: +# python manage.py makemessages -l -e html,js,py --no-wrap LANGUAGES = [ + ('bg', _('Bulgarian')), ('cs', _('Czech')), ('da', _('Danish')), ('de', _('German')), @@ -730,6 +828,7 @@ LANGUAGES = [ ('fi', _('Finnish')), ('fr', _('French')), ('he', _('Hebrew')), + ('hi', _('Hindi')), ('hu', _('Hungarian')), ('it', _('Italian')), ('ja', _('Japanese')), @@ -738,16 +837,18 @@ LANGUAGES = [ ('no', _('Norwegian')), ('pl', _('Polish')), ('pt', _('Portuguese')), - ('pt-BR', _('Portuguese (Brazilian)')), + ('pt-br', _('Portuguese (Brazilian)')), ('ru', _('Russian')), ('sl', _('Slovenian')), ('sv', _('Swedish')), ('th', _('Thai')), ('tr', _('Turkish')), ('vi', _('Vietnamese')), - ('zh-hans', _('Chinese')), + ('zh-hans', _('Chinese (Simplified)')), + ('zh-hant', _('Chinese (Traditional)')), ] + # Testing interface translations if get_boolean_setting('TEST_TRANSLATIONS', default_value=False): # pragma: no cover # Set default language @@ -785,7 +886,7 @@ CURRENCY_DECIMAL_PLACES = 6 # Check that each provided currency is supported for currency in CURRENCIES: if currency not in moneyed.CURRENCIES: # pragma: no cover - logger.error(f"Currency code '{currency}' is not supported") + logger.error("Currency code '%s' is not supported", currency) sys.exit(1) # Custom currency exchange backend @@ -803,6 +904,10 @@ EMAIL_USE_SSL = get_boolean_setting('INVENTREE_EMAIL_SSL', 'email.ssl', False) DEFAULT_FROM_EMAIL = get_setting('INVENTREE_EMAIL_SENDER', 'email.sender', '') +# If "from" email not specified, default to the username +if not DEFAULT_FROM_EMAIL: + DEFAULT_FROM_EMAIL = get_setting('INVENTREE_EMAIL_USERNAME', 'email.username', '') + EMAIL_USE_LOCALTIME = False EMAIL_TIMEOUT = 60 @@ -849,10 +954,12 @@ ACCOUNT_LOGIN_ATTEMPTS_LIMIT = get_setting('INVENTREE_LOGIN_ATTEMPTS', 'login_at ACCOUNT_DEFAULT_HTTP_PROTOCOL = get_setting('INVENTREE_LOGIN_DEFAULT_HTTP_PROTOCOL', 'login_default_protocol', 'http') ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE = True ACCOUNT_PREVENT_ENUMERATION = True +# 2FA +REMOVE_SUCCESS_URL = 'settings' # override forms / adapters ACCOUNT_FORMS = { - 'login': 'allauth.account.forms.LoginForm', + 'login': 'InvenTree.forms.CustomLoginForm', 'signup': 'InvenTree.forms.CustomSignupForm', 'add_email': 'allauth.account.forms.AddEmailForm', 'change_password': 'allauth.account.forms.ChangePasswordForm', @@ -929,7 +1036,7 @@ PLUGIN_FILE_CHECKED = False SITE_URL = get_setting('INVENTREE_SITE_URL', 'site_url', None) if SITE_URL: - logger.info(f"Site URL: {SITE_URL}") + logger.info("Site URL: %s", SITE_URL) # Check that the site URL is valid validator = URLValidator() @@ -940,11 +1047,16 @@ CUSTOM_LOGO = get_custom_file('INVENTREE_CUSTOM_LOGO', 'customize.logo', 'custom CUSTOM_SPLASH = get_custom_file('INVENTREE_CUSTOM_SPLASH', 'customize.splash', 'custom splash') CUSTOMIZE = get_setting('INVENTREE_CUSTOMIZE', 'customize', {}) + +# Load settings for the frontend interface +FRONTEND_SETTINGS = config.get_frontend_settings(debug=DEBUG) +FRONTEND_URL_BASE = FRONTEND_SETTINGS.get('base_url', 'platform') + if DEBUG: logger.info("InvenTree running with DEBUG enabled") -logger.info(f"MEDIA_ROOT: '{MEDIA_ROOT}'") -logger.info(f"STATIC_ROOT: '{STATIC_ROOT}'") +logger.info("MEDIA_ROOT: '%s'", MEDIA_ROOT) +logger.info("STATIC_ROOT: '%s'", STATIC_ROOT) # Flags FLAGS = { @@ -961,7 +1073,12 @@ FLAGS = { CUSTOM_FLAGS = get_setting('INVENTREE_FLAGS', 'flags', None, typecast=dict) if CUSTOM_FLAGS: if not isinstance(CUSTOM_FLAGS, dict): - logger.error(f"Invalid custom flags, must be valid dict: {CUSTOM_FLAGS}") + logger.error("Invalid custom flags, must be valid dict: %s", str(CUSTOM_FLAGS)) else: - logger.info(f"Custom flags: {CUSTOM_FLAGS}") + logger.info("Custom flags: %s", str(CUSTOM_FLAGS)) FLAGS.update(CUSTOM_FLAGS) + +# Magic login django-sesame +SESAME_MAX_AGE = 300 +# LOGIN_REDIRECT_URL = f"/{FRONTEND_URL_BASE}/logged-in/" +LOGIN_REDIRECT_URL = "/index/" diff --git a/InvenTree/InvenTree/social_auth_urls.py b/InvenTree/InvenTree/social_auth_urls.py new file mode 100644 index 0000000000..c2755acb9d --- /dev/null +++ b/InvenTree/InvenTree/social_auth_urls.py @@ -0,0 +1,211 @@ +"""API endpoints for social authentication with allauth.""" +import logging +from importlib import import_module + +from django.urls import include, path, reverse + +from allauth.account.models import EmailAddress +from allauth.socialaccount import providers +from allauth.socialaccount.models import SocialApp +from allauth.socialaccount.providers.keycloak.views import \ + KeycloakOAuth2Adapter +from allauth.socialaccount.providers.oauth2.views import (OAuth2Adapter, + OAuth2LoginView) +from drf_spectacular.utils import OpenApiResponse, extend_schema +from rest_framework.exceptions import NotFound +from rest_framework.permissions import AllowAny, IsAuthenticated +from rest_framework.response import Response + +from common.models import InvenTreeSetting +from InvenTree.mixins import CreateAPI, ListAPI, ListCreateAPI +from InvenTree.serializers import InvenTreeModelSerializer + +logger = logging.getLogger('inventree') + + +class GenericOAuth2ApiLoginView(OAuth2LoginView): + """Api view to login a user with a social account""" + def dispatch(self, request, *args, **kwargs): + """Dispatch the regular login view directly.""" + return self.login(request, *args, **kwargs) + + +class GenericOAuth2ApiConnectView(GenericOAuth2ApiLoginView): + """Api view to connect a social account to the current user""" + + def dispatch(self, request, *args, **kwargs): + """Dispatch the connect request directly.""" + # Override the request method be in connection mode + request.GET = request.GET.copy() + request.GET['process'] = 'connect' + + # Resume the dispatch + return super().dispatch(request, *args, **kwargs) + + +def handle_oauth2(adapter: OAuth2Adapter): + """Define urls for oauth2 endpoints.""" + return [ + path('login/', GenericOAuth2ApiLoginView.adapter_view(adapter), name=f'{provider.id}_api_login'), + path('connect/', GenericOAuth2ApiConnectView.adapter_view(adapter), name=f'{provider.id}_api_connect'), + ] + + +def handle_keycloak(): + """Define urls for keycloak.""" + return [ + path('login/', GenericOAuth2ApiLoginView.adapter_view(KeycloakOAuth2Adapter), name='keycloak_api_login'), + path('connect/', GenericOAuth2ApiConnectView.adapter_view(KeycloakOAuth2Adapter), name='keycloak_api_connet'), + ] + + +legacy = { + 'twitter': 'twitter_oauth2', + 'bitbucket': 'bitbucket_oauth2', + 'linkedin': 'linkedin_oauth2', + 'vimeo': 'vimeo_oauth2', + 'openid': 'openid_connect', +} # legacy connectors + + +# Collect urls for all loaded providers +social_auth_urlpatterns = [] + +provider_urlpatterns = [] +for provider in providers.registry.get_list(): + try: + prov_mod = import_module(provider.get_package() + ".views") + except ImportError: + continue + + # Try to extract the adapter class + adapters = [cls for cls in prov_mod.__dict__.values() if isinstance(cls, type) and not cls == OAuth2Adapter and issubclass(cls, OAuth2Adapter)] + + # Get urls + urls = [] + if len(adapters) == 1: + urls = handle_oauth2(adapter=adapters[0]) + else: + if provider.id in legacy: + logger.warning('`%s` is not supported on platform UI. Use `%s` instead.', provider.id, legacy[provider.id]) + continue + elif provider.id == 'keycloak': + urls = handle_keycloak() + else: + logger.error('Found handler that is not yet ready for platform UI: `%s`. Open an feature request on GitHub if you need it implemented.', provider.id) + continue + provider_urlpatterns += [path(f'{provider.id}/', include(urls))] + + +social_auth_urlpatterns += provider_urlpatterns + + +class SocialProviderListView(ListAPI): + """List of available social providers.""" + permission_classes = (AllowAny,) + + def get(self, request, *args, **kwargs): + """Get the list of providers.""" + provider_list = [] + for provider in providers.registry.get_list(): + provider_data = { + 'id': provider.id, + 'name': provider.name, + 'login': request.build_absolute_uri(reverse(f'{provider.id}_api_login')), + 'connect': request.build_absolute_uri(reverse(f'{provider.id}_api_connect')), + 'configured': False + } + try: + provider_app = provider.get_app(request) + provider_data['display_name'] = provider_app.name + provider_data['configured'] = True + except SocialApp.DoesNotExist: + provider_data['display_name'] = provider.name + + provider_list.append(provider_data) + + data = { + 'sso_enabled': InvenTreeSetting.get_setting('LOGIN_ENABLE_SSO'), + 'sso_registration': InvenTreeSetting.get_setting('LOGIN_ENABLE_SSO_REG'), + 'mfa_required': InvenTreeSetting.get_setting('LOGIN_ENFORCE_MFA'), + 'providers': provider_list + } + return Response(data) + + +class EmailAddressSerializer(InvenTreeModelSerializer): + """Serializer for the EmailAddress model.""" + + class Meta: + """Meta options for EmailAddressSerializer.""" + + model = EmailAddress + fields = '__all__' + + +class EmptyEmailAddressSerializer(InvenTreeModelSerializer): + """Empty Serializer for the EmailAddress model.""" + + class Meta: + """Meta options for EmailAddressSerializer.""" + + model = EmailAddress + fields = [] + + +class EmailListView(ListCreateAPI): + """List of registered email addresses for current users.""" + permission_classes = (IsAuthenticated,) + serializer_class = EmailAddressSerializer + + def get_queryset(self): + """Only return data for current user.""" + return EmailAddress.objects.filter(user=self.request.user) + + +class EmailActionMixin(CreateAPI): + """Mixin to modify email addresses for current users.""" + serializer_class = EmptyEmailAddressSerializer + permission_classes = (IsAuthenticated,) + + def get_queryset(self): + """Filter queryset for current user.""" + return EmailAddress.objects.filter(user=self.request.user, pk=self.kwargs['pk']).first() + + @extend_schema(responses={200: OpenApiResponse(response=EmailAddressSerializer)}) + def post(self, request, *args, **kwargs): + """Filter item, run action and return data.""" + email = self.get_queryset() + if not email: + raise NotFound + + self.special_action(email, request, *args, **kwargs) + return Response(EmailAddressSerializer(email).data) + + +class EmailVerifyView(EmailActionMixin): + """Re-verify an email for a currently logged in user.""" + + def special_action(self, email, request, *args, **kwargs): + """Send confirmation.""" + if email.verified: + return + email.send_confirmation(request) + + +class EmailPrimaryView(EmailActionMixin): + """Make an email for a currently logged in user primary.""" + + def special_action(self, email, *args, **kwargs): + """Mark email as primary.""" + if email.primary: + return + email.set_as_primary() + + +class EmailRemoveView(EmailActionMixin): + """Remove an email for a currently logged in user.""" + + def special_action(self, email, *args, **kwargs): + """Delete email.""" + email.delete() diff --git a/InvenTree/InvenTree/static/css/inventree.css b/InvenTree/InvenTree/static/css/inventree.css index a118a58e22..912f482243 100644 --- a/InvenTree/InvenTree/static/css/inventree.css +++ b/InvenTree/InvenTree/static/css/inventree.css @@ -269,10 +269,6 @@ main { } /* Styles for table buttons and filtering */ -.button-toolbar .btn { - margin-left: 1px; - margin-right: 1px; -} .filter-list { display: inline-block; @@ -1101,3 +1097,7 @@ a { align-items: center; justify-content: space-between; } + +.large-treeview-icon { + font-size: 1em; +} diff --git a/InvenTree/InvenTree/status.py b/InvenTree/InvenTree/status.py index a38da21b32..767f091735 100644 --- a/InvenTree/InvenTree/status.py +++ b/InvenTree/InvenTree/status.py @@ -8,7 +8,7 @@ from django.utils import timezone from django.utils.translation import gettext_lazy as _ from django_q.models import Success -from django_q.monitor import Stat +from django_q.status import Stat import InvenTree.email import InvenTree.ready @@ -17,7 +17,7 @@ logger = logging.getLogger("inventree") def is_worker_running(**kwargs): - """Return True if the background worker process is oprational.""" + """Return True if the background worker process is operational.""" clusters = Stat.get_all() if len(clusters) > 0: diff --git a/InvenTree/InvenTree/tasks.py b/InvenTree/InvenTree/tasks.py index 6c813731f0..6dbcb85bbf 100644 --- a/InvenTree/InvenTree/tasks.py +++ b/InvenTree/InvenTree/tasks.py @@ -48,11 +48,11 @@ def schedule_task(taskname, **kwargs): # If this task is already scheduled, don't schedule it again # Instead, update the scheduling parameters if Schedule.objects.filter(func=taskname).exists(): - logger.debug(f"Scheduled task '{taskname}' already exists - updating!") + logger.debug("Scheduled task '%s' already exists - updating!", taskname) Schedule.objects.filter(func=taskname).update(**kwargs) else: - logger.info(f"Creating scheduled task '{taskname}'") + logger.info("Creating scheduled task '%s'", taskname) Schedule.objects.create( name=taskname, @@ -89,15 +89,16 @@ def check_daily_holdoff(task_name: str, n_days: int = 1) -> bool: Note that this function creates some *hidden* global settings (designated with the _ prefix), which are used to keep a running track of when the particular task was was last run. """ - from common.models import InvenTreeSetting + from InvenTree.ready import isInTestMode if n_days <= 0: - logger.info(f"Specified interval for task '{task_name}' < 1 - task will not run") + logger.info("Specified interval for task '%s' < 1 - task will not run", task_name) return False # Sleep a random number of seconds to prevent worker conflict - time.sleep(random.randint(1, 5)) + if not isInTestMode(): + time.sleep(random.randint(1, 5)) attempt_key = f'_{task_name}_ATTEMPT' success_key = f'_{task_name}_SUCCESS' @@ -115,7 +116,7 @@ def check_daily_holdoff(task_name: str, n_days: int = 1) -> bool: threshold = datetime.now() - timedelta(days=n_days) if last_success > threshold: - logger.info(f"Last successful run for '{task_name}' was too recent - skipping task") + logger.info("Last successful run for '%s' was too recent - skipping task", task_name) return False # Check for any information we have about this task @@ -132,7 +133,7 @@ def check_daily_holdoff(task_name: str, n_days: int = 1) -> bool: threshold = datetime.now() - timedelta(hours=12) if last_attempt > threshold: - logger.info(f"Last attempt for '{task_name}' was too recent - skipping task") + logger.info("Last attempt for '%s' was too recent - skipping task", task_name) return False # Record this attempt @@ -144,29 +145,28 @@ def check_daily_holdoff(task_name: str, n_days: int = 1) -> bool: def record_task_attempt(task_name: str): """Record that a multi-day task has been attempted *now*""" - from common.models import InvenTreeSetting - logger.info(f"Logging task attempt for '{task_name}'") + logger.info("Logging task attempt for '%s'", task_name) InvenTreeSetting.set_setting(f'_{task_name}_ATTEMPT', datetime.now().isoformat(), None) def record_task_success(task_name: str): """Record that a multi-day task was successful *now*""" - from common.models import InvenTreeSetting InvenTreeSetting.set_setting(f'_{task_name}_SUCCESS', datetime.now().isoformat(), None) -def offload_task(taskname, *args, force_async=False, force_sync=False, **kwargs): +def offload_task(taskname, *args, force_async=False, force_sync=False, **kwargs) -> bool: """Create an AsyncTask if workers are running. This is different to a 'scheduled' task, in that it only runs once! - If workers are not running or force_sync flag - is set then the task is ran synchronously. - """ + If workers are not running or force_sync flag, is set then the task is ran synchronously. + Returns: + bool: True if the task was offloaded (or ran), False otherwise + """ try: import importlib @@ -174,20 +174,33 @@ def offload_task(taskname, *args, force_async=False, force_sync=False, **kwargs) from InvenTree.status import is_worker_running except AppRegistryNotReady: # pragma: no cover - logger.warning(f"Could not offload task '{taskname}' - app registry not ready") - return + logger.warning("Could not offload task '%s' - app registry not ready", taskname) + + if force_async: + # Cannot async the task, so return False + return False + else: + force_sync = True except (OperationalError, ProgrammingError): # pragma: no cover raise_warning(f"Could not offload task '{taskname}' - database not ready") + if force_async: + # Cannot async the task, so return False + return False + else: + force_sync = True + if force_async or (is_worker_running() and not force_sync): # Running as asynchronous task try: task = AsyncTask(taskname, *args, **kwargs) task.run() except ImportError: - raise_warning(f"WARNING: '{taskname}' not started - Function not found") + raise_warning(f"WARNING: '{taskname}' not offloaded - Function not found") + return False except Exception as exc: - raise_warning(f"WARNING: '{taskname}' not started due to {type(exc)}") + raise_warning(f"WARNING: '{taskname}' not offloaded due to {str(exc)}") + return False else: if callable(taskname): @@ -200,14 +213,14 @@ def offload_task(taskname, *args, force_async=False, force_sync=False, **kwargs) app_mod = app + '.' + mod except ValueError: raise_warning(f"WARNING: '{taskname}' not started - Malformed function path") - return + return False # Import module from app try: _mod = importlib.import_module(app_mod) except ModuleNotFoundError: raise_warning(f"WARNING: '{taskname}' not started - No module named '{app_mod}'") - return + return False # Retrieve function try: @@ -221,10 +234,17 @@ def offload_task(taskname, *args, force_async=False, force_sync=False, **kwargs) _func = eval(func) # pragma: no cover except NameError: raise_warning(f"WARNING: '{taskname}' not started - No function named '{func}'") - return + return False # Workers are not running: run it as synchronous task - _func(*args, **kwargs) + try: + _func(*args, **kwargs) + except Exception as exc: + raise_warning(f"WARNING: '{taskname}' not started due to {str(exc)}") + return False + + # Finally, task either completed successfully or was offloaded + return True @dataclass() @@ -251,7 +271,7 @@ class ScheduledTask: class TaskRegister: - """Registry for periodicall tasks.""" + """Registry for periodic tasks.""" task_list: List[ScheduledTask] = [] def register(self, task, schedule, minutes: int = None): @@ -267,8 +287,9 @@ def scheduled_task(interval: str, minutes: int = None, tasklist: TaskRegister = Example: ```python - @register(ScheduledTask.DAILY) - def my_custom_funciton(): + @scheduled_task(ScheduledTask.DAILY) + def my_custom_function(): + # Perform a custom function once per day ... ``` @@ -340,7 +361,7 @@ def delete_successful_tasks(): ) if results.count() > 0: - logger.info(f"Deleting {results.count()} successful task records") + logger.info("Deleting %s successful task records", results.count()) results.delete() except AppRegistryNotReady: # pragma: no cover @@ -350,7 +371,6 @@ def delete_successful_tasks(): @scheduled_task(ScheduledTask.DAILY) def delete_failed_tasks(): """Delete failed task logs which are older than a specified period""" - try: from django_q.models import Failure @@ -365,7 +385,7 @@ def delete_failed_tasks(): ) if results.count() > 0: - logger.info(f"Deleting {results.count()} failed task records") + logger.info("Deleting %s failed task records", results.count()) results.delete() except AppRegistryNotReady: # pragma: no cover @@ -388,7 +408,7 @@ def delete_old_error_logs(): ) if errors.count() > 0: - logger.info(f"Deleting {errors.count()} old error logs") + logger.info("Deleting %s old error logs", errors.count()) errors.delete() except AppRegistryNotReady: # pragma: no cover @@ -399,7 +419,6 @@ def delete_old_error_logs(): @scheduled_task(ScheduledTask.DAILY) def delete_old_notifications(): """Delete old notification logs""" - try: from common.models import (InvenTreeSetting, NotificationEntry, NotificationMessage) @@ -412,7 +431,7 @@ def delete_old_notifications(): ) if items.count() > 0: - logger.info(f"Deleted {items.count()} old notification entries") + logger.info("Deleted %s old notification entries", items.count()) items.delete() items = NotificationMessage.objects.filter( @@ -420,7 +439,7 @@ def delete_old_notifications(): ) if items.count() > 0: - logger.info(f"Deleted {items.count()} old notification messages") + logger.info("Deleted %s old notification messages", items.count()) items.delete() except AppRegistryNotReady: @@ -472,7 +491,7 @@ def check_for_updates(): match = re.match(r"^.*(\d+)\.(\d+)\.(\d+).*$", tag) if len(match.groups()) != 3: # pragma: no cover - logger.warning(f"Version '{tag}' did not match expected pattern") + logger.warning("Version '%s' did not match expected pattern", tag) return latest_version = [int(x) for x in match.groups()] @@ -480,7 +499,7 @@ def check_for_updates(): if len(latest_version) != 3: raise ValueError(f"Version '{tag}' is not correct format") # pragma: no cover - logger.info(f"Latest InvenTree version: '{tag}'") + logger.info("Latest InvenTree version: '%s'", tag) # Save the version to the database common.models.InvenTreeSetting.set_setting( @@ -494,38 +513,55 @@ def check_for_updates(): @scheduled_task(ScheduledTask.DAILY) -def update_exchange_rates(): - """Update currency exchange rates.""" +def update_exchange_rates(force: bool = False): + """Update currency exchange rates + + Arguments: + force: If True, force the update to run regardless of the last update time + """ try: from djmoney.contrib.exchange.models import Rate + from common.models import InvenTreeSetting from common.settings import currency_code_default, currency_codes from InvenTree.exchange import InvenTreeExchange except AppRegistryNotReady: # pragma: no cover # Apps not yet loaded! logger.info("Could not perform 'update_exchange_rates' - App registry not ready") return - except Exception: # pragma: no cover - # Other error? + except Exception as exc: # pragma: no cover + logger.info("Could not perform 'update_exchange_rates' - %s", exc) return + if not force: + interval = int(InvenTreeSetting.get_setting('CURRENCY_UPDATE_INTERVAL', 1, cache=False)) + + if not check_daily_holdoff('update_exchange_rates', interval): + logger.info("Skipping exchange rate update (interval not reached)") + return + backend = InvenTreeExchange() base = currency_code_default() - logger.info(f"Updating exchange rates using base currency '{base}'") + logger.info("Updating exchange rates using base currency '%s'", base) try: backend.update_rates(base_currency=base) # Remove any exchange rates which are not in the provided currencies Rate.objects.filter(backend="InvenTreeExchange").exclude(currency__in=currency_codes()).delete() + + # Record successful task execution + record_task_success('update_exchange_rates') + + except OperationalError: + logger.warning("Could not update exchange rates - database not ready") except Exception as e: # pragma: no cover - logger.error(f"Error updating exchange rates: {e} ({type(e)})") + logger.exception("Error updating exchange rates: %s", str(type(e))) @scheduled_task(ScheduledTask.DAILY) def run_backup(): """Run the backup command.""" - from common.models import InvenTreeSetting if not InvenTreeSetting.get_setting('INVENTREE_BACKUP_ENABLE', False, cache=False): @@ -547,72 +583,77 @@ def run_backup(): record_task_success('run_backup') +def get_migration_plan(): + """Returns a list of migrations which are needed to be run.""" + executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS]) + plan = executor.migration_plan(executor.loader.graph.leaf_nodes()) + return plan + + @scheduled_task(ScheduledTask.DAILY) -def check_for_migrations(worker: bool = True): +def check_for_migrations(): """Checks if migrations are needed. If the setting auto_update is enabled we will start updating. """ - # Test if auto-updates are enabled - if not get_setting('INVENTREE_AUTO_UPDATE', 'auto_update'): - return - + from common.models import InvenTreeSetting from plugin import registry + def set_pending_migrations(n: int): + """Helper function to inform the user about pending migrations""" + + logger.info('There are %s pending migrations', n) + InvenTreeSetting.set_setting('_PENDING_MIGRATIONS', n, None) + + logger.info("Checking for pending database migrations") + + # Force plugin registry reload + registry.check_reload() + plan = get_migration_plan() + n = len(plan) + # Check if there are any open migrations if not plan: - logger.info('There are no open migrations') + set_pending_migrations(0) return - logger.info('There are open migrations') + set_pending_migrations(n) + + # Test if auto-updates are enabled + if not get_setting('INVENTREE_AUTO_UPDATE', 'auto_update'): + logger.info("Auto-update is disabled - skipping migrations") + return # Log open migrations for migration in plan: - logger.info(migration[0]) + logger.info("- %s", str(migration[0])) # Set the application to maintenance mode - no access from now on. - logger.info('Going into maintenance') set_maintenance_mode(True) - logger.info('Mainentance mode is on now') - # Check if we are worker - go kill all other workers then. - # Only the frontend workers run updates. - if worker: - logger.info('Current process is a worker - shutting down cluster') - - # Ok now we are ready to go ahead! # To be sure we are in maintenance this is wrapped with maintenance_mode_on(): - logger.info('Starting migrations') - print('Starting migrations') + logger.info('Starting migration process...') try: call_command('migrate', interactive=False) except NotSupportedError as e: # pragma: no cover if settings.DATABASES['default']['ENGINE'] != 'django.db.backends.sqlite3': raise e - logger.error(f'Error during migrations: {e}') + logger.exception('Error during migrations: %s', e) + else: + set_pending_migrations(0) - print('Migrations done') - logger.info('Ran migrations') + logger.info("Completed %s migrations", n) - # Make sure we are out of maintenance again - logger.info('Checking InvenTree left maintenance mode') + # Make sure we are out of maintenance mode if get_maintenance_mode(): - - logger.warning('Mainentance was still on - releasing now') + logger.warning("Maintenance mode was not disabled - forcing it now") set_maintenance_mode(False) - logger.info('Released out of maintenance') + logger.info("Manually released maintenance mode") # We should be current now - triggering full reload to make sure all models # are loaded fully in their new state. - registry.reload_plugins(full_reload=True, force_reload=True) - - -def get_migration_plan(): - """Returns a list of migrations which are needed to be run.""" - executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS]) - plan = executor.migration_plan(executor.loader.graph.leaf_nodes()) - return plan + registry.reload_plugins(full_reload=True, force_reload=True, collect=True) diff --git a/InvenTree/InvenTree/template.py b/InvenTree/InvenTree/template.py index a07cbca988..f9c11dd173 100644 --- a/InvenTree/InvenTree/template.py +++ b/InvenTree/InvenTree/template.py @@ -16,7 +16,6 @@ class InvenTreeTemplateLoader(CachedLoader): Any custom report or label templates will be forced to reload (without cache). This ensures that generated PDF reports / labels are always up-to-date. """ - # List of template patterns to skip cache for skip_cache_dirs = [ os.path.abspath(os.path.join(settings.MEDIA_ROOT, 'report')), diff --git a/InvenTree/InvenTree/templates/InvenTree/user_simple_login.txt b/InvenTree/InvenTree/templates/InvenTree/user_simple_login.txt new file mode 100644 index 0000000000..e00a971a10 --- /dev/null +++ b/InvenTree/InvenTree/templates/InvenTree/user_simple_login.txt @@ -0,0 +1,8 @@ +Hello {{username}}, + +You requested that we send you a link to log in to our app: + + {{link}} + +Regards, +{{site_name}} diff --git a/InvenTree/InvenTree/test_api.py b/InvenTree/InvenTree/test_api.py index 81593a9e73..aa7907d926 100644 --- a/InvenTree/InvenTree/test_api.py +++ b/InvenTree/InvenTree/test_api.py @@ -267,7 +267,6 @@ class BulkDeleteTests(InvenTreeAPITestCase): def test_errors(self): """Test that the correct errors are thrown""" - url = reverse('api-stock-test-result-list') # DELETE without any of the required fields @@ -316,9 +315,20 @@ class SearchTests(InvenTreeAPITestCase): 'sales_order', ] + def test_empty(self): + """Test empty request""" + data = [ + '', + None, + {}, + ] + + for d in data: + response = self.post(reverse('api-search'), d, expected_code=400) + self.assertIn('Search term must be provided', str(response.data)) + def test_results(self): """Test individual result types""" - response = self.post( reverse('api-search'), { @@ -361,7 +371,6 @@ class SearchTests(InvenTreeAPITestCase): def test_permissions(self): """Test that users with insufficient permissions are handled correctly""" - # First, remove all roles for ruleset in self.group.rule_sets.all(): ruleset.can_view = False diff --git a/InvenTree/InvenTree/test_api_version.py b/InvenTree/InvenTree/test_api_version.py new file mode 100644 index 0000000000..d6a2c38fb6 --- /dev/null +++ b/InvenTree/InvenTree/test_api_version.py @@ -0,0 +1,41 @@ +"""Tests for api_version.""" + + +from django.urls import reverse + +from InvenTree.api_version import INVENTREE_API_VERSION +from InvenTree.unit_test import InvenTreeAPITestCase +from InvenTree.version import inventreeApiText, parse_version_text + + +class ApiVersionTests(InvenTreeAPITestCase): + """Tests for api_version functions and APIs.""" + + def test_api(self): + """Test that the API text is correct.""" + url = reverse('api-version-text') + response = self.client.get(url, format='json') + data = response.json() + + self.assertEqual(len(data), 10) + + def test_inventree_api_text(self): + """Test that the inventreeApiText function works expected.""" + # Normal run + resp = inventreeApiText() + self.assertEqual(len(resp), 10) + + # More responses + resp = inventreeApiText(20) + self.assertEqual(len(resp), 20) + + # Specific version + resp = inventreeApiText(start_version=5) + self.assertEqual(list(resp)[0], 'v5') + + def test_parse_version_text(self): + """Test that api version text is correctly parsed.""" + resp = parse_version_text() + + # Check that all texts are parsed + self.assertEqual(len(resp), INVENTREE_API_VERSION - 1) diff --git a/InvenTree/InvenTree/test_views.py b/InvenTree/InvenTree/test_views.py index f90cae791e..708304c68d 100644 --- a/InvenTree/InvenTree/test_views.py +++ b/InvenTree/InvenTree/test_views.py @@ -45,7 +45,6 @@ class ViewTests(InvenTreeTestCase): def test_settings_page(self): """Test that the 'settings' page loads correctly""" - # Settings page loads url = reverse('settings') @@ -122,7 +121,6 @@ class ViewTests(InvenTreeTestCase): def test_url_login(self): """Test logging in via arguments""" - # Log out self.client.logout() response = self.client.get("/index/") diff --git a/InvenTree/InvenTree/tests.py b/InvenTree/InvenTree/tests.py index 83c340e7e5..b0cdab5006 100644 --- a/InvenTree/InvenTree/tests.py +++ b/InvenTree/InvenTree/tests.py @@ -11,19 +11,23 @@ import django.core.exceptions as django_exceptions from django.conf import settings from django.contrib.auth import get_user_model from django.contrib.sites.models import Site +from django.core import mail from django.core.exceptions import ValidationError from django.test import TestCase, override_settings +from django.urls import reverse +import pint.errors from djmoney.contrib.exchange.exceptions import MissingRate from djmoney.contrib.exchange.models import Rate, convert_money from djmoney.money import Money +from sesame.utils import get_user import InvenTree.conversion import InvenTree.format import InvenTree.helpers import InvenTree.helpers_model import InvenTree.tasks -from common.models import InvenTreeSetting +from common.models import CustomUnit, InvenTreeSetting from common.settings import currency_codes from InvenTree.sanitizer import sanitize_svg from InvenTree.unit_test import InvenTreeTestCase @@ -38,9 +42,41 @@ from .validators import validate_overage class ConversionTest(TestCase): """Tests for conversion of physical units""" - def test_dimensionless_units(self): - """Tests for 'dimensonless' unit quantities""" + def test_prefixes(self): + """Test inputs where prefixes are used""" + tests = { + "3": 3, + "3m": 3, + "3mm": 0.003, + "3k": 3000, + "3u": 0.000003, + "3 inch": 0.0762, + } + for val, expected in tests.items(): + q = InvenTree.conversion.convert_physical_value(val, 'm') + self.assertAlmostEqual(q, expected, 3) + + def test_base_units(self): + """Test conversion to specified base units""" + tests = { + "3": 3, + "3 dozen": 36, + "50 dozen kW": 600000, + "1 / 10": 0.1, + "1/2 kW": 500, + "1/2 dozen kW": 6000, + "0.005 MW": 5000, + } + + for val, expected in tests.items(): + q = InvenTree.conversion.convert_physical_value(val, 'W') + self.assertAlmostEqual(q, expected, places=2) + q = InvenTree.conversion.convert_physical_value(val, 'W', strip_units=False) + self.assertAlmostEqual(float(q.magnitude), expected, places=2) + + def test_dimensionless_units(self): + """Tests for 'dimensionless' unit quantities""" # Test some dimensionless units tests = { 'ea': 1, @@ -50,11 +86,97 @@ class ConversionTest(TestCase): '3 hundred': 300, '2 thousand': 2000, '12 pieces': 12, + '1 / 10': 0.1, + '1/2': 0.5, + '-1 / 16': -0.0625, + '3/2': 1.5, + '1/2 dozen': 6, } for val, expected in tests.items(): - q = InvenTree.conversion.convert_physical_value(val).to_base_units() - self.assertEqual(q.magnitude, expected) + # Convert, and leave units + q = InvenTree.conversion.convert_physical_value(val, strip_units=False) + self.assertAlmostEqual(float(q.magnitude), expected, 3) + + # Convert, and strip units + q = InvenTree.conversion.convert_physical_value(val) + self.assertAlmostEqual(q, expected, 3) + + def test_invalid_units(self): + """Test conversion with bad units""" + tests = { + '3': '10', + '13': '-?-', + '-3': 'xyz', + '-12': '-12', + '1/0': '1/0', + } + + for val, unit in tests.items(): + with self.assertRaises(ValidationError): + InvenTree.conversion.convert_physical_value(val, unit) + + def test_invalid_values(self): + """Test conversion of invalid inputs""" + inputs = [ + '-x', + '1/0', + 'xyz', + '12B45C' + ] + + for val in inputs: + # Test with a provided unit + with self.assertRaises(ValidationError): + InvenTree.conversion.convert_physical_value(val, 'meter') + + # Test dimensionless + with self.assertRaises(ValidationError): + InvenTree.conversion.convert_physical_value(val) + + def test_custom_units(self): + """Tests for custom unit conversion""" + # Start with an empty set of units + CustomUnit.objects.all().delete() + InvenTree.conversion.reload_unit_registry() + + # Ensure that the custom unit does *not* exist to start with + reg = InvenTree.conversion.get_unit_registry() + + with self.assertRaises(pint.errors.UndefinedUnitError): + reg['hpmm'] + + # Create a new custom unit + CustomUnit.objects.create( + name='fanciful_unit', + definition='henry / mm', + symbol='hpmm', + ) + + # Reload registry + reg = InvenTree.conversion.get_unit_registry() + + # Ensure that the custom unit is now available + reg['hpmm'] + + # Convert some values + tests = { + '1': 1, + '1 hpmm': 1000000, + '1 / 10 hpmm': 100000, + '1 / 100 hpmm': 10000, + '0.3 hpmm': 300000, + '-7hpmm': -7000000, + } + + for val, expected in tests.items(): + # Convert, and leave units + q = InvenTree.conversion.convert_physical_value(val, 'henry / km', strip_units=False) + self.assertAlmostEqual(float(q.magnitude), expected, 2) + + # Convert and strip units + q = InvenTree.conversion.convert_physical_value(val, 'henry / km') + self.assertAlmostEqual(q, expected, 2) class ValidatorTest(TestCase): @@ -87,7 +209,6 @@ class FormatTest(TestCase): def test_parse(self): """Tests for the 'parse_format_string' function""" - # Extract data from a valid format string fmt = "PO-{abc:02f}-{ref:04d}-{date}-???" @@ -109,7 +230,6 @@ class FormatTest(TestCase): def test_create_regex(self): """Test function for creating a regex from a format string""" - tests = { "PO-123-{ref:04f}": r"^PO\-123\-(?P.+)$", "{PO}-???-{ref}-{date}-22": r"^(?P.+)\-...\-(?P.+)\-(?P.+)\-22$", @@ -122,7 +242,6 @@ class FormatTest(TestCase): def test_validate_format(self): """Test that string validation works as expected""" - # These tests should pass for value, pattern in { "ABC-hello-123": "???-{q}-###", @@ -143,7 +262,6 @@ class FormatTest(TestCase): def test_extract_value(self): """Test that we can extract named values based on a format string""" - # Simple tests based on a straight-forward format string fmt = "PO-###-{ref:04d}" @@ -212,10 +330,64 @@ class FormatTest(TestCase): "PO-###-{test}", ) + def test_currency_formatting(self): + """Test that currency formatting works correctly for multiple currencies""" + + test_data = ( + (Money( 3651.285718, "USD"), 4, "$3,651.2857" ), # noqa: E201,E202 + (Money(487587.849178, "CAD"), 5, "CA$487,587.84918"), # noqa: E201,E202 + (Money( 0.348102, "EUR"), 1, "€0.3" ), # noqa: E201,E202 + (Money( 0.916530, "GBP"), 1, "£0.9" ), # noqa: E201,E202 + (Money( 61.031024, "JPY"), 3, "¥61.031" ), # noqa: E201,E202 + (Money( 49609.694602, "JPY"), 1, "¥49,609.7" ), # noqa: E201,E202 + (Money(155565.264777, "AUD"), 2, "A$155,565.26" ), # noqa: E201,E202 + (Money( 0.820437, "CNY"), 4, "CN¥0.8204" ), # noqa: E201,E202 + (Money( 7587.849178, "EUR"), 0, "€7,588" ), # noqa: E201,E202 + (Money( 0.348102, "GBP"), 3, "£0.348" ), # noqa: E201,E202 + (Money( 0.652923, "CHF"), 0, "CHF1" ), # noqa: E201,E202 + (Money( 0.820437, "CNY"), 1, "CN¥0.8" ), # noqa: E201,E202 + (Money(98789.5295680, "CHF"), 0, "CHF98,790" ), # noqa: E201,E202 + (Money( 0.585787, "USD"), 1, "$0.6" ), # noqa: E201,E202 + (Money( 0.690541, "CAD"), 3, "CA$0.691" ), # noqa: E201,E202 + (Money( 427.814104, "AUD"), 5, "A$427.81410" ), # noqa: E201,E202 + ) + + with self.settings(LANGUAGE_CODE="en-us"): + for value, decimal_places, expected_result in test_data: + result = InvenTree.format.format_money(value, decimal_places=decimal_places) + assert result == expected_result + class TestHelpers(TestCase): """Tests for InvenTree helper functions.""" + def test_absolute_url(self): + """Test helper function for generating an absolute URL""" + base = "https://demo.inventree.org:12345" + + InvenTreeSetting.set_setting('INVENTREE_BASE_URL', base, change_user=None) + + tests = { + "": base, + "api/": base + "/api/", + "/api/": base + "/api/", + "api": base + "/api", + "media/label/output/": base + "/media/label/output/", + "static/logo.png": base + "/static/logo.png", + "https://www.google.com": "https://www.google.com", + "https://demo.inventree.org:12345/out.html": "https://demo.inventree.org:12345/out.html", + "https://demo.inventree.org/test.html": "https://demo.inventree.org/test.html", + "http://www.cwi.nl:80/%7Eguido/Python.html": "http://www.cwi.nl:80/%7Eguido/Python.html", + "test.org": base + "/test.org", + } + + for url, expected in tests.items(): + # Test with supplied base URL + self.assertEqual(InvenTree.helpers_model.construct_absolute_url(url, site_url=base), expected) + + # Test without supplied base URL + self.assertEqual(InvenTree.helpers_model.construct_absolute_url(url), expected) + def test_image_url(self): """Test if a filename looks like an image.""" for name in ['ape.png', 'bat.GiF', 'apple.WeBP', 'BiTMap.Bmp']: @@ -263,9 +435,7 @@ class TestHelpers(TestCase): def test_logo_image(self): """Test for retrieving logo image""" - # By default, there is no custom logo provided - logo = helpers.getLogoImage() self.assertEqual(logo, '/static/img/inventree.png') @@ -274,7 +444,6 @@ class TestHelpers(TestCase): def test_download_image(self): """Test function for downloading image from remote URL""" - # Run check with a sequence of bad URLs for url in [ "blog", @@ -334,7 +503,6 @@ class TestHelpers(TestCase): def test_model_mixin(self): """Test the getModelsWithMixin function""" - from InvenTree.models import InvenTreeBarcodeMixin models = InvenTree.helpers_model.getModelsWithMixin(InvenTreeBarcodeMixin) @@ -700,6 +868,7 @@ class CurrencyTests(TestCase): else: # pragma: no cover print("Exchange rate update failed - retrying") + print(f'Expected {currency_codes()}, got {[a.currency for a in rates]}') time.sleep(1) self.assertTrue(update_successful) @@ -723,7 +892,7 @@ class CurrencyTests(TestCase): class TestStatus(TestCase): """Unit tests for status functions.""" - def test_check_system_healt(self): + def test_check_system_health(self): """Test that the system health check is false in testing -> background worker not running.""" self.assertEqual(status.check_system_health(), False) @@ -819,7 +988,7 @@ class TestSettings(InvenTreeTestCase): InvenTreeSetting.set_setting('PLUGIN_ON_STARTUP', True, self.user) registry.reload_plugins(full_reload=True) - # Check that there was anotehr run + # Check that there was another run response = registry.install_plugin_file() self.assertEqual(response, True) @@ -927,29 +1096,41 @@ class TestOffloadTask(InvenTreeTestCase): Ref: https://github.com/inventree/InvenTree/pull/3273 """ - offload_task( - 'dummy_tasks.parts', - part=Part.objects.get(pk=1), - cat=PartCategory.objects.get(pk=1), - force_async=True - ) - - offload_task( + self.assertTrue(offload_task( 'dummy_tasks.stock', item=StockItem.objects.get(pk=1), loc=StockLocation.objects.get(pk=1), force_async=True - ) + )) - offload_task( + self.assertTrue(offload_task( 'dummy_task.numbers', 1, 2, 3, 4, 5, force_async=True - ) + )) + + # Offload a dummy task, but force sync + # This should fail, because the function does not exist + with self.assertLogs(logger='inventree', level='WARNING') as log: + self.assertFalse(offload_task( + 'dummy_task.numbers', + 1, 1, 1, + force_sync=True + )) + + self.assertIn("Malformed function path", str(log.output)) + + # Offload dummy task with a Part instance + # This should succeed, ensuring that the Part instance is correctly pickled + self.assertTrue(offload_task( + 'dummy_tasks.parts', + part=Part.objects.get(pk=1), + cat=PartCategory.objects.get(pk=1), + force_async=True + )) def test_daily_holdoff(self): """Tests for daily task holdoff helper functions""" - import InvenTree.tasks with self.assertLogs(logger='inventree', level='INFO') as cm: @@ -1005,7 +1186,6 @@ class BarcodeMixinTest(InvenTreeTestCase): def test_barcode_model_type(self): """Test that the barcode_model_type property works for each class""" - from part.models import Part from stock.models import StockItem, StockLocation @@ -1013,9 +1193,8 @@ class BarcodeMixinTest(InvenTreeTestCase): self.assertEqual(StockItem.barcode_model_type(), 'stockitem') self.assertEqual(StockLocation.barcode_model_type(), 'stocklocation') - def test_bacode_hash(self): + def test_barcode_hash(self): """Test that the barcode hashing function provides correct results""" - # Test multiple values for the hashing function # This is to ensure that the hash function is always "backwards compatible" hashing_tests = { @@ -1042,5 +1221,42 @@ class SanitizerTest(TestCase): # Test that valid string self.assertEqual(valid_string, sanitize_svg(valid_string)) - # Test that invalid string is cleanded + # Test that invalid string is cleaned self.assertNotEqual(dangerous_string, sanitize_svg(dangerous_string)) + + +class MagicLoginTest(InvenTreeTestCase): + """Test magic login token generation.""" + + def test_generation(self): + """Test that magic login tokens are generated correctly""" + # User does not exists + resp = self.client.post(reverse('sesame-generate'), {'email': 1}) + self.assertEqual(resp.status_code, 200) + self.assertEqual(resp.data, {'status': 'ok'}) + self.assertEqual(len(mail.outbox), 0) + + # User exists + resp = self.client.post(reverse('sesame-generate'), {'email': self.user.email}) + self.assertEqual(resp.status_code, 200) + self.assertEqual(resp.data, {'status': 'ok'}) + self.assertEqual(len(mail.outbox), 1) + self.assertEqual(mail.outbox[0].subject, '[example.com] Log in to the app') + + # Check that the token is in the email + self.assertTrue('http://testserver/api/email/login/' in mail.outbox[0].body) + token = mail.outbox[0].body.split('/')[-1].split('\n')[0][8:] + self.assertEqual(get_user(token), self.user) + + # Log user off + self.client.logout() + + # Check that the login works + resp = self.client.get(reverse('sesame-login') + '?sesame=' + token) + self.assertEqual(resp.status_code, 302) + self.assertEqual(resp.url, '/index/') + # Note: 2023-08-08 - This test has been changed because "platform UI" is not generally available yet + # TODO: In the future, the URL comparison will need to be reverted + # self.assertEqual(resp.url, f'/{settings.FRONTEND_URL_BASE}/logged-in/') + # And we should be logged in again + self.assertEqual(resp.wsgi_request.user, self.user) diff --git a/InvenTree/InvenTree/translation.py b/InvenTree/InvenTree/translation.py new file mode 100644 index 0000000000..d07f5c8ed7 --- /dev/null +++ b/InvenTree/InvenTree/translation.py @@ -0,0 +1,49 @@ +"""Translation helper functions""" + +import json + +from django.conf import settings + +# translation completion stats +_translation_stats = None + + +def reload_translation_stats(): + """Reload the translation stats from the compiled file""" + global _translation_stats + + STATS_FILE = settings.BASE_DIR.joinpath('InvenTree/locale_stats.json').absolute() + + try: + with open(STATS_FILE, 'r') as f: + _translation_stats = json.load(f) + except Exception: + _translation_stats = None + return + + keys = _translation_stats.keys() + + # Note that the names used in the stats file may not align 100% + for (code, _lang) in settings.LANGUAGES: + if code in keys: + # Direct match, move on + continue + + code_lower = code.lower().replace('-', '_') + + for k in keys: + if k.lower() == code_lower: + # Make a copy of the code which matches + _translation_stats[code] = _translation_stats[k] + break + + +def get_translation_percent(lang_code): + """Return the translation percentage for the given language code""" + if _translation_stats is None: + reload_translation_stats() + + if _translation_stats is None: + return 0 + + return _translation_stats.get(lang_code, 0) diff --git a/InvenTree/InvenTree/unit_test.py b/InvenTree/InvenTree/unit_test.py index 3590a6f56b..43a2d66cbf 100644 --- a/InvenTree/InvenTree/unit_test.py +++ b/InvenTree/InvenTree/unit_test.py @@ -143,7 +143,6 @@ class UserMixin: def setUp(self): """Run setup for individual test methods""" - if self.auto_login: self.client.login(username=self.username, password=self.password) @@ -156,7 +155,6 @@ class UserMixin: assign_all: Set to True to assign *all* roles group: The group to assign roles to (or leave None to use the group assigned to this class) """ - if group is None: group = cls.group @@ -207,7 +205,6 @@ class ExchangeRateMixin: def generate_exchange_rates(self): """Helper function which generates some exchange rates to work with""" - rates = { 'AUD': 1.5, 'CAD': 1.7, @@ -271,7 +268,6 @@ class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase): def checkResponse(self, url, method, expected_code, response): """Debug output for an unexpected response""" - # No expected code, return if expected_code is None: return @@ -318,7 +314,6 @@ class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase): def post(self, url, data=None, expected_code=None, format='json'): """Issue a POST request.""" - # Set default value - see B006 if data is None: data = {} @@ -331,7 +326,6 @@ class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase): def delete(self, url, data=None, expected_code=None, format='json'): """Issue a DELETE request.""" - if data is None: data = {} diff --git a/InvenTree/InvenTree/urls.py b/InvenTree/InvenTree/urls.py index d1932527c0..1208e52cb1 100644 --- a/InvenTree/InvenTree/urls.py +++ b/InvenTree/InvenTree/urls.py @@ -7,37 +7,48 @@ from django.conf import settings from django.conf.urls.static import static from django.contrib import admin from django.urls import include, path, re_path +from django.views.decorators.csrf import csrf_exempt from django.views.generic.base import RedirectView +from dj_rest_auth.registration.views import (ConfirmEmailView, + SocialAccountDisconnectView, + SocialAccountListView) from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView +from sesame.views import LoginView -from build.api import build_api_urls +import build.api +import common.api +import company.api +import label.api +import order.api +import part.api +import plugin.api +import report.api +import stock.api +import users.api from build.urls import build_urls -from common.api import admin_api_urls, common_api_urls, settings_api_urls from common.urls import common_urls -from company.api import company_api_urls from company.urls import (company_urls, manufacturer_part_urls, supplier_part_urls) -from label.api import label_api_urls -from order.api import order_api_urls from order.urls import order_urls -from part.api import bom_api_urls, part_api_urls from part.urls import part_urls -from plugin.api import plugin_api_urls from plugin.urls import get_plugin_urls -from report.api import report_api_urls -from stock.api import stock_api_urls from stock.urls import stock_urls -from users.api import user_urls +from web.urls import urlpatterns as platform_urls -from .api import APISearchView, InfoView, NotFoundView +from .api import (APISearchView, InfoView, NotFoundView, VersionTextView, + VersionView) +from .magic_login import GetSimpleLoginView +from .social_auth_urls import (EmailListView, EmailPrimaryView, + EmailRemoveView, EmailVerifyView, + SocialProviderListView, social_auth_urlpatterns) from .views import (AboutView, AppearanceSelectView, CustomConnectionsView, CustomEmailView, CustomLoginView, CustomPasswordResetFromKeyView, CustomSessionDeleteOtherView, CustomSessionDeleteView, - CustomTwoFactorRemove, DatabaseStatsView, DynamicJsView, - EditUserView, IndexView, NotificationsView, SearchView, - SetPasswordView, SettingsView, auth_request) + DatabaseStatsView, DynamicJsView, EditUserView, IndexView, + NotificationsView, SearchView, SetPasswordView, + SettingsView, auth_request) admin.site.site_header = "InvenTree Admin" @@ -47,29 +58,52 @@ apipatterns = [ # Global search path('search/', APISearchView.as_view(), name='api-search'), - re_path(r'^settings/', include(settings_api_urls)), - re_path(r'^part/', include(part_api_urls)), - re_path(r'^bom/', include(bom_api_urls)), - re_path(r'^company/', include(company_api_urls)), - re_path(r'^stock/', include(stock_api_urls)), - re_path(r'^build/', include(build_api_urls)), - re_path(r'^order/', include(order_api_urls)), - re_path(r'^label/', include(label_api_urls)), - re_path(r'^report/', include(report_api_urls)), - re_path(r'^user/', include(user_urls)), - re_path(r'^admin/', include(admin_api_urls)), + re_path(r'^settings/', include(common.api.settings_api_urls)), + re_path(r'^part/', include(part.api.part_api_urls)), + re_path(r'^bom/', include(part.api.bom_api_urls)), + re_path(r'^company/', include(company.api.company_api_urls)), + re_path(r'^stock/', include(stock.api.stock_api_urls)), + re_path(r'^build/', include(build.api.build_api_urls)), + re_path(r'^order/', include(order.api.order_api_urls)), + re_path(r'^label/', include(label.api.label_api_urls)), + re_path(r'^report/', include(report.api.report_api_urls)), + re_path(r'^user/', include(users.api.user_urls)), + re_path(r'^admin/', include(common.api.admin_api_urls)), # Plugin endpoints - path('', include(plugin_api_urls)), + path('', include(plugin.api.plugin_api_urls)), # Common endpoints endpoint - path('', include(common_api_urls)), + path('', include(common.api.common_api_urls)), # OpenAPI Schema re_path('schema/', SpectacularAPIView.as_view(custom_settings={'SCHEMA_PATH_PREFIX': '/api/'}), name='schema'), - # InvenTree information endpoint - path('', InfoView.as_view(), name='api-inventree-info'), + # InvenTree information endpoints + path("version-text", VersionTextView.as_view(), name="api-version-text"), # version text + path('version/', VersionView.as_view(), name='api-version'), # version info + path('', InfoView.as_view(), name='api-inventree-info'), # server info + + # Auth API endpoints + path('auth/', include([ + re_path(r'^registration/account-confirm-email/(?P[-:\w]+)/$', ConfirmEmailView.as_view(), name='account_confirm_email'), + path('registration/', include('dj_rest_auth.registration.urls')), + path('providers/', SocialProviderListView.as_view(), name='social_providers'), + path('emails/', include([path('/', include([ + path('primary/', EmailPrimaryView.as_view(), name='email-primary'), + path('verify/', EmailVerifyView.as_view(), name='email-verify'), + path('remove/', EmailRemoveView().as_view(), name='email-remove'),])), + path('', EmailListView.as_view(), name='email-list') + ])), + path('social/', include(social_auth_urlpatterns)), + path('social/', SocialAccountListView.as_view(), name='social_account_list'), + path('social//disconnect/', SocialAccountDisconnectView.as_view(), name='social_account_disconnect'), + path('', include('dj_rest_auth.urls')), + ])), + + # Magic login URLs + path("email/generate/", csrf_exempt(GetSimpleLoginView().as_view()), name="sesame-generate",), + path("email/login/", LoginView.as_view(), name="sesame-login"), # Unknown endpoint re_path(r'^.*$', NotFoundView.as_view(), name='api-404'), @@ -95,6 +129,7 @@ notifications_urls = [ dynamic_javascript_urls = [ re_path(r'^calendar.js', DynamicJsView.as_view(template_name='js/dynamic/calendar.js'), name='calendar.js'), re_path(r'^nav.js', DynamicJsView.as_view(template_name='js/dynamic/nav.js'), name='nav.js'), + re_path(r'^permissions.js', DynamicJsView.as_view(template_name='js/dynamic/permissions.js'), name='permissions.js'), re_path(r'^settings.js', DynamicJsView.as_view(template_name='js/dynamic/settings.js'), name='settings.js'), ] @@ -110,6 +145,7 @@ translated_javascript_urls = [ re_path(r'^filters.js', DynamicJsView.as_view(template_name='js/translated/filters.js'), name='filters.js'), re_path(r'^forms.js', DynamicJsView.as_view(template_name='js/translated/forms.js'), name='forms.js'), re_path(r'^helpers.js', DynamicJsView.as_view(template_name='js/translated/helpers.js'), name='helpers.js'), + re_path(r'^index.js', DynamicJsView.as_view(template_name='js/translated/index.js'), name='index.js'), re_path(r'^label.js', DynamicJsView.as_view(template_name='js/translated/label.js'), name='label.js'), re_path(r'^model_renderers.js', DynamicJsView.as_view(template_name='js/translated/model_renderers.js'), name='model_renderers.js'), re_path(r'^modals.js', DynamicJsView.as_view(template_name='js/translated/modals.js'), name='modals.js'), @@ -142,7 +178,7 @@ backendpatterns = [ re_path(r'^api-doc/', SpectacularRedocView.as_view(url_name='schema'), name='api-doc'), ] -frontendpatterns = [ +classic_frontendpatterns = [ # Apps re_path(r'^build/', include(build_urls)), @@ -164,10 +200,6 @@ frontendpatterns = [ re_path(r'^about/', AboutView.as_view(), name='about'), re_path(r'^stats/', DatabaseStatsView.as_view(), name='stats'), - # admin sites - re_path(f'^{settings.INVENTREE_ADMIN_URL}/error_log/', include('error_report.urls')), - re_path(f'^{settings.INVENTREE_ADMIN_URL}/', admin.site.urls, name='inventree-admin'), - # DB user sessions path('accounts/sessions/other/delete/', view=CustomSessionDeleteOtherView.as_view(), name='session_delete_other', ), re_path(r'^accounts/sessions/(?P\w+)/delete/$', view=CustomSessionDeleteView.as_view(), name='session_delete', ), @@ -178,10 +210,6 @@ frontendpatterns = [ re_path(r'^accounts/social/connections/', CustomConnectionsView.as_view(), name='socialaccount_connections'), re_path(r"^accounts/password/reset/key/(?P[0-9A-Za-z]+)-(?P.+)/$", CustomPasswordResetFromKeyView.as_view(), name="account_reset_password_from_key"), - # Temporary fix for django-allauth-2fa # TODO remove - # See https://github.com/inventree/InvenTree/security/advisories/GHSA-8j76-mm54-52xq - re_path(r'^accounts/two_factor/remove/?$', CustomTwoFactorRemove.as_view(), name='two-factor-remove'), - # Override login page re_path("accounts/login/", CustomLoginView.as_view(), name="account_login"), @@ -189,14 +217,32 @@ frontendpatterns = [ re_path(r'^accounts/', include('allauth.urls')), # included urlpatterns ] + +new_frontendpatterns = platform_urls + +urlpatterns = [] + +if settings.INVENTREE_ADMIN_ENABLED: + admin_url = settings.INVENTREE_ADMIN_URL, + urlpatterns += [ + path(f'{admin_url}/error_log/', include('error_report.urls')), + path(f'{admin_url}/', admin.site.urls, name='inventree-admin'), + ] + +urlpatterns += backendpatterns + +frontendpatterns = [] + +if settings.ENABLE_CLASSIC_FRONTEND: + frontendpatterns += classic_frontendpatterns +if settings.ENABLE_PLATFORM_FRONTEND: + frontendpatterns += new_frontendpatterns + +urlpatterns += frontendpatterns + # Append custom plugin URLs (if plugin support is enabled) if settings.PLUGINS_ENABLED: - frontendpatterns.append(get_plugin_urls()) - -urlpatterns = [ - re_path('', include(frontendpatterns)), - re_path('', include(backendpatterns)), -] + urlpatterns.append(get_plugin_urls()) # Server running in "DEBUG" mode? if settings.DEBUG: @@ -213,5 +259,10 @@ if settings.DEBUG: path('__debug__/', include(debug_toolbar.urls)), ] + urlpatterns +# Redirect for favicon.ico +urlpatterns.append( + path('favicon.ico', RedirectView.as_view(url=f'{settings.STATIC_URL}img/favicon/favicon.ico')) +) + # Send any unknown URLs to the parts page urlpatterns += [re_path(r'^.*$', RedirectView.as_view(url='/index/', permanent=False), name='index')] diff --git a/InvenTree/InvenTree/validators.py b/InvenTree/InvenTree/validators.py index 1d38891da4..9a4b5f32e5 100644 --- a/InvenTree/InvenTree/validators.py +++ b/InvenTree/InvenTree/validators.py @@ -17,7 +17,6 @@ import InvenTree.conversion def validate_physical_units(unit): """Ensure that a given unit is a valid physical unit.""" - unit = unit.strip() # Ignore blank units @@ -69,7 +68,6 @@ class AllowedURLValidator(validators.URLValidator): def validate_purchase_order_reference(value): """Validate the 'reference' field of a PurchaseOrder.""" - from order.models import PurchaseOrder # If we get to here, run the "default" validation routine @@ -78,7 +76,6 @@ def validate_purchase_order_reference(value): def validate_sales_order_reference(value): """Validate the 'reference' field of a SalesOrder.""" - from order.models import SalesOrder # If we get to here, run the "default" validation routine @@ -140,7 +137,6 @@ def validate_part_name_format(value): Make sure that each template container has a field of Part Model """ - # Make sure that the field_name exists in Part model from part.models import Part diff --git a/InvenTree/InvenTree/version.py b/InvenTree/InvenTree/version.py index 8735a8253c..1ddd7b42df 100644 --- a/InvenTree/InvenTree/version.py +++ b/InvenTree/InvenTree/version.py @@ -7,6 +7,7 @@ import os import pathlib import platform import re +import sys from datetime import datetime as dt from datetime import timedelta as td @@ -15,19 +16,40 @@ from django.conf import settings from dulwich.repo import NotGitRepository, Repo -from .api_version import INVENTREE_API_VERSION +from .api_version import INVENTREE_API_TEXT, INVENTREE_API_VERSION # InvenTree software version -INVENTREE_SW_VERSION = "0.12.0 dev" +INVENTREE_SW_VERSION = "0.13.0 dev" # Discover git try: main_repo = Repo(pathlib.Path(__file__).parent.parent.parent) main_commit = main_repo[main_repo.head()] -except NotGitRepository: +except (NotGitRepository, FileNotFoundError): main_commit = None +def checkMinPythonVersion(): + """Check that the Python version is at least 3.9""" + + version = sys.version.split(" ")[0] + docs = "https://docs.inventree.org/en/stable/start/intro/#python-requirements" + + msg = f""" + InvenTree requires Python 3.9 or above - you are running version {version}. + - Refer to the InvenTree documentation for more information: + - {docs} + """ + + if sys.version_info.major < 3: + raise RuntimeError(msg) + + if sys.version_info.major == 3 and sys.version_info.minor < 9: + raise RuntimeError(msg) + + print(f"Python version {version} - {sys.executable}") + + def inventreeInstanceName(): """Returns the InstanceName settings for the current database.""" import common.models @@ -41,8 +63,7 @@ def inventreeInstanceTitle(): if common.models.InvenTreeSetting.get_setting("INVENTREE_INSTANCE_TITLE", False): return common.models.InvenTreeSetting.get_setting("INVENTREE_INSTANCE", "") - else: - return 'InvenTree' + return 'InvenTree' def inventreeVersion(): @@ -73,8 +94,28 @@ def inventreeDocsVersion(): """ if isInvenTreeDevelopmentVersion(): return "latest" - else: - return INVENTREE_SW_VERSION # pragma: no cover + return INVENTREE_SW_VERSION # pragma: no cover + + +def inventreeDocUrl(): + """Return URL for InvenTree documentation site.""" + tag = inventreeDocsVersion() + return f"https://docs.inventree.org/en/{tag}" + + +def inventreeAppUrl(): + """Return URL for InvenTree app site.""" + return f'{inventreeDocUrl()}/app/app', + + +def inventreeCreditsUrl(): + """Return URL for InvenTree credits site.""" + return "https://docs.inventree.org/en/latest/credits/" + + +def inventreeGithubUrl(): + """Return URL for InvenTree github site.""" + return "https://github.com/InvenTree/InvenTree/" def isInvenTreeUpToDate(): @@ -101,11 +142,62 @@ def inventreeApiVersion(): return INVENTREE_API_VERSION +def parse_version_text(): + """Parse the version text to structured data.""" + patched_data = INVENTREE_API_TEXT.split("\n\n") + # Remove first newline on latest version + patched_data[0] = patched_data[0].replace("\n", "", 1) + + version_data = {} + for version in patched_data: + data = version.split("\n") + + version_split = data[0].split(' -> ') + version_detail = version_split[1].split(':', 1) if len(version_split) > 1 else ['', ] + new_data = { + "version": version_split[0].strip(), + "date": version_detail[0].strip(), + "gh": version_detail[1].strip() if len(version_detail) > 1 else None, + "text": data[1:], + "latest": False, + } + version_data[new_data["version"]] = new_data + return version_data + + +INVENTREE_API_TEXT_DATA = parse_version_text() +"""Pre-processed API version text.""" + + +def inventreeApiText(versions: int = 10, start_version: int = 0): + """Returns API version descriptors. + + Args: + versions: Number of versions to return. Default: 10 + start_version: first version to report. Defaults to return the latest {versions} versions. + """ + version_data = INVENTREE_API_TEXT_DATA + + # Define the range of versions to return + if start_version == 0: + start_version = INVENTREE_API_VERSION - versions + + return { + f"v{a}": version_data.get(f"v{a}", None) + for a in range(start_version, start_version + versions) + } + + def inventreeDjangoVersion(): """Returns the version of Django library.""" return django.get_version() +def inventreePythonVersion(): + """Returns the version of python""" + return sys.version.split(' ')[0] + + def inventreeCommitHash(): """Returns the git commit hash for the running codebase.""" # First look in the environment variables, i.e. if running in docker @@ -162,8 +254,11 @@ def inventreeBranch(): if main_commit is None: return None - branch = main_repo.refs.follow(b'HEAD')[0][1].decode() - return branch.removeprefix('refs/heads/') + try: + branch = main_repo.refs.follow(b'HEAD')[0][1].decode() + return branch.removeprefix('refs/heads/') + except IndexError: + return None # pragma: no cover def inventreeTarget(): @@ -175,5 +270,10 @@ def inventreeTarget(): def inventreePlatform(): """Returns the platform for the instance.""" - return platform.platform(aliased=True) + + +def inventreeDatabase(): + """Return the InvenTree database backend e.g. 'postgresql'.""" + db = settings.DATABASES['default'] + return db.get('ENGINE', None).replace('django.db.backends.', '') diff --git a/InvenTree/InvenTree/views.py b/InvenTree/InvenTree/views.py index 9cb04e09d1..9a6f4e95f2 100644 --- a/InvenTree/InvenTree/views.py +++ b/InvenTree/InvenTree/views.py @@ -4,9 +4,6 @@ In particular these views provide base functionality for rendering Django forms as JSON objects and passing them to modal forms (using jQuery / bootstrap). """ -import json - -from django.conf import settings from django.contrib.auth import password_validation from django.contrib.auth.mixins import (LoginRequiredMixin, PermissionRequiredMixin) @@ -27,7 +24,6 @@ from allauth.account.views import (EmailView, LoginView, PasswordResetFromKeyView) from allauth.socialaccount.forms import DisconnectForm from allauth.socialaccount.views import ConnectionsView -from allauth_2fa.views import TwoFactorRemove from djmoney.contrib.exchange.models import ExchangeBackend, Rate from user_sessions.views import SessionDeleteOtherView, SessionDeleteView @@ -47,8 +43,7 @@ def auth_request(request): """ if request.user.is_authenticated: return HttpResponse(status=200) - else: - return HttpResponse(status=403) + return HttpResponse(status=403) class InvenTreeRoleMixin(PermissionRequiredMixin): @@ -226,8 +221,7 @@ class AjaxMixin(InvenTreeRoleMixin): """ if method == 'POST': return self.request.POST.get(name, None) - else: - return self.request.GET.get(name, None) + return self.request.GET.get(name, None) def get_data(self): """Get extra context data (default implementation is empty dict). @@ -447,8 +441,7 @@ class SetPasswordView(AjaxUpdateView): if valid: # Old password must be correct - - if not user.check_password(old_password): + if user.has_usable_password() and not user.check_password(old_password): form.add_error('old_password', _('Wrong password provided')) valid = False @@ -532,14 +525,6 @@ class SettingsView(TemplateView): except Exception: ctx["rates_updated"] = None - # load locale stats - STAT_FILE = settings.BASE_DIR.joinpath('InvenTree/locale_stats.json').absolute() - - try: - ctx["locale_stats"] = json.load(open(STAT_FILE, 'r')) - except Exception: - ctx["locale_stats"] = {} - # Forms and context for allauth ctx['add_email_form'] = AddEmailForm ctx["can_add_email"] = EmailAddress.objects.can_add_email(self.request.user) @@ -640,8 +625,12 @@ class AppearanceSelectView(RedirectView): user_theme = common_models.ColorTheme() user_theme.user = request.user - user_theme.name = theme - user_theme.save() + if theme: + try: + user_theme.name = theme + user_theme.save() + except Exception: + pass return redirect(reverse_lazy('settings')) @@ -664,9 +653,3 @@ class NotificationsView(TemplateView): """View for showing notifications.""" template_name = "InvenTree/notifications/notifications.html" - - -# Custom 2FA removal form to allow custom redirect URL -class CustomTwoFactorRemove(TwoFactorRemove): - """Specify custom URL redirect.""" - success_url = reverse_lazy("settings") diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index 01c55f5e00..f7385c39c5 100644 --- a/InvenTree/build/api.py +++ b/InvenTree/build/api.py @@ -1,6 +1,6 @@ """JSON API for the Build app.""" -from django.db.models import F +from django.db.models import F, Q from django.urls import include, path, re_path from django.utils.translation import gettext_lazy as _ from django.contrib.auth.models import User @@ -11,7 +11,7 @@ from django_filters.rest_framework import DjangoFilterBackend from django_filters import rest_framework as rest_filters from InvenTree.api import AttachmentMixin, APIDownloadMixin, ListCreateDestroyAPIView, MetadataView -from generic.states import StatusView +from generic.states.api import StatusView from InvenTree.helpers import str2bool, isNull, DownloadFile from InvenTree.status_codes import BuildStatus, BuildStatusGroups from InvenTree.mixins import CreateAPI, RetrieveUpdateDestroyAPI, ListCreateAPI @@ -35,6 +35,7 @@ class BuildFilter(rest_filters.FilterSet): 'parent', 'sales_order', 'part', + 'issued_by', ] status = rest_filters.NumberFilter(label='Status') @@ -45,8 +46,7 @@ class BuildFilter(rest_filters.FilterSet): """Filter the queryset to either include or exclude orders which are active.""" if str2bool(value): return queryset.filter(status__in=BuildStatusGroups.ACTIVE_CODES) - else: - return queryset.exclude(status__in=BuildStatusGroups.ACTIVE_CODES) + return queryset.exclude(status__in=BuildStatusGroups.ACTIVE_CODES) overdue = rest_filters.BooleanFilter(label='Build is overdue', method='filter_overdue') @@ -54,8 +54,7 @@ class BuildFilter(rest_filters.FilterSet): """Filter the queryset to either include or exclude orders which are overdue.""" if str2bool(value): return queryset.filter(Build.OVERDUE_FILTER) - else: - return queryset.exclude(Build.OVERDUE_FILTER) + return queryset.exclude(Build.OVERDUE_FILTER) assigned_to_me = rest_filters.BooleanFilter(label='assigned_to_me', method='filter_assigned_to_me') @@ -68,8 +67,7 @@ class BuildFilter(rest_filters.FilterSet): if value: return queryset.filter(responsible__in=owners) - else: - return queryset.exclude(responsible__in=owners) + return queryset.exclude(responsible__in=owners) assigned_to = rest_filters.NumberFilter(label='responsible', method='filter_responsible') @@ -99,11 +97,9 @@ class BuildFilter(rest_filters.FilterSet): def filter_has_project_code(self, queryset, name, value): """Filter by whether or not the order has a project code""" - if str2bool(value): return queryset.exclude(project_code=None) - else: - return queryset.filter(project_code=None) + return queryset.filter(project_code=None) class BuildList(APIDownloadMixin, ListCreateAPI): @@ -234,7 +230,6 @@ class BuildDetail(RetrieveUpdateDestroyAPI): def destroy(self, request, *args, **kwargs): """Only allow deletion of a BuildOrder if the build status is CANCELLED""" - build = self.get_object() if build.status != BuildStatus.CANCELLED: @@ -291,11 +286,26 @@ class BuildLineFilter(rest_filters.FilterSet): def filter_allocated(self, queryset, name, value): """Filter by whether each BuildLine is fully allocated""" - if str2bool(value): return queryset.filter(allocated__gte=F('quantity')) - else: - return queryset.filter(allocated__lt=F('quantity')) + return queryset.filter(allocated__lt=F('quantity')) + + available = rest_filters.BooleanFilter(label=_('Available'), method='filter_available') + + def filter_available(self, queryset, name, value): + """Filter by whether there is sufficient stock available for each BuildLine: + + To determine this, we need to know: + + - The quantity required for each BuildLine + - The quantity available for each BuildLine + - The quantity allocated for each BuildLine + """ + flt = Q(quantity__lte=F('total_available_stock') + F('allocated')) + + if str2bool(value): + return queryset.filter(flt) + return queryset.exclude(flt) class BuildLineEndpoint: @@ -308,10 +318,6 @@ class BuildLineEndpoint: """Override queryset to select-related and annotate""" queryset = super().get_queryset() - queryset = queryset.select_related( - 'build', 'bom_item', - ) - queryset = build.serializers.BuildLineSerializer.annotate_queryset(queryset) return queryset @@ -496,8 +502,7 @@ class BuildItemFilter(rest_filters.FilterSet): """Filter the queryset based on whether build items are tracked""" if str2bool(value): return queryset.exclude(install_into=None) - else: - return queryset.filter(install_into=None) + return queryset.filter(install_into=None) class BuildItemList(ListCreateAPI): @@ -567,10 +572,6 @@ class BuildAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): queryset = BuildOrderAttachment.objects.all() serializer_class = build.serializers.BuildAttachmentSerializer - filter_backends = [ - DjangoFilterBackend, - ] - filterset_fields = [ 'build', ] diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index b4ee51f80e..238583421b 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -28,6 +28,7 @@ from build.validators import generate_next_build_reference, validate_build_order import InvenTree.fields import InvenTree.helpers import InvenTree.helpers_model +import InvenTree.mixins import InvenTree.models import InvenTree.ready import InvenTree.tasks @@ -44,7 +45,7 @@ import users.models logger = logging.getLogger('inventree') -class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNotesMixin, InvenTree.models.MetadataMixin, InvenTree.models.ReferenceIndexingMixin): +class Build(MPTTModel, InvenTree.mixins.DiffMixin, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNotesMixin, InvenTree.models.MetadataMixin, InvenTree.models.ReferenceIndexingMixin): """A Build object organises the creation of new StockItem objects from other existing StockItem objects. Attributes: @@ -108,6 +109,12 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. self.validate_reference_field(self.reference) self.reference_int = self.rebuild_reference_field(self.reference) + # Prevent changing target part after creation + if self.has_field_changed('part'): + raise ValidationError({ + 'part': _('Build order part cannot be changed') + }) + try: super().save(*args, **kwargs) except InvalidMove: @@ -314,9 +321,8 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. """Return all Build Order objects under this one.""" if cascade: return Build.objects.filter(parent=self.pk) - else: - descendants = self.get_descendants(include_self=True) - Build.objects.filter(parent__pk__in=[d.pk for d in descendants]) + descendants = self.get_descendants(include_self=True) + Build.objects.filter(parent__pk__in=[d.pk for d in descendants]) def sub_build_count(self, cascade=True): """Return the number of sub builds under this one. @@ -348,7 +354,6 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. @property def tracked_line_items(self): """Returns the "trackable" BOM lines for this BuildOrder.""" - return self.build_lines.filter(bom_item__sub_part__trackable=True) def has_tracked_line_items(self): @@ -358,9 +363,13 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. @property def untracked_line_items(self): """Returns the "non trackable" BOM items for this BuildOrder.""" - return self.build_lines.filter(bom_item__sub_part__trackable=False) + @property + def are_untracked_parts_allocated(self): + """Returns True if all untracked parts are allocated for this BuildOrder.""" + return self.is_fully_allocated(tracked=False) + def has_untracked_line_items(self): """Returns True if this BuildOrder has non trackable BomItems.""" return self.has_untracked_line_items.count() > 0 @@ -427,7 +436,6 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. def is_partially_allocated(self): """Test is this build order has any stock allocated against it""" - return self.allocated_stock.count() > 0 @property @@ -492,7 +500,6 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. - Completed count must meet the required quantity - Untracked parts must be allocated """ - if self.incomplete_count > 0: return False @@ -714,14 +721,22 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. if items.exists() and items.count() == 1: stock_item = items[0] - # Allocate the stock item - BuildItem.objects.create( - build=self, - bom_item=bom_item, - stock_item=stock_item, - quantity=1, - install_into=output, - ) + # Find the 'BuildLine' object which points to this BomItem + try: + build_line = BuildLine.objects.get( + build=self, + bom_item=bom_item + ) + + # Allocate the stock items against the BuildLine + BuildItem.objects.create( + build_line=build_line, + stock_item=stock_item, + quantity=1, + install_into=output, + ) + except BuildLine.DoesNotExist: + pass else: """Create a single build output of the given quantity.""" @@ -767,7 +782,6 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. @transaction.atomic def trim_allocated_stock(self): """Called after save to reduce allocated stock if the build order is now overallocated.""" - # Only need to worry about untracked stock here for build_line in self.untracked_line_items: @@ -804,7 +818,6 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. @transaction.atomic def subtract_allocated_stock(self, user): """Called when the Build is marked as "complete", this function removes the allocated untracked items from stock.""" - # Find all BuildItem objects which point to this build items = self.allocated_stock.filter( build_line__bom_item__sub_part__trackable=False @@ -826,7 +839,6 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. - Set the item status to "scrapped" - Add a transaction entry to the stock item history """ - if not output: raise ValidationError(_("No build output specified")) @@ -951,8 +963,7 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. return 1 elif item.part in variant_parts: return 2 - else: - return 3 + return 3 new_items = [] @@ -1056,7 +1067,6 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. def unallocated_lines(self, tracked=None): """Returns a list of BuildLine objects which have not been fully allocated.""" - lines = self.build_lines.all() if tracked is True: @@ -1083,7 +1093,6 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. Returns: True if the BuildOrder has been fully allocated, otherwise False """ - lines = self.unallocated_lines(tracked=tracked) return len(lines) == 0 @@ -1096,7 +1105,6 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. To determine if the output has been fully allocated, we need to test all "trackable" BuildLine objects """ - for line in self.build_lines.filter(bom_item__sub_part__trackable=True): # Grab all BuildItem objects which point to this output allocations = BuildItem.objects.filter( @@ -1121,7 +1129,6 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. Returns: True if any BuildLine has been over-allocated. """ - for line in self.build_lines.all(): if line.is_overallocated(): return True @@ -1146,18 +1153,17 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. @transaction.atomic def create_build_line_items(self, prevent_duplicates=True): """Create BuildLine objects for each BOM line in this BuildOrder.""" - lines = [] bom_items = self.part.get_bom_items() - logger.info(f"Creating BuildLine objects for BuildOrder {self.pk} ({len(bom_items)} items))") + logger.info("Creating BuildLine objects for BuildOrder %s (%s items)", self.pk, len(bom_items)) # Iterate through each part required to build the parent part for bom_item in bom_items: if prevent_duplicates: if BuildLine.objects.filter(build=self, bom_item=bom_item).exists(): - logger.info(f"BuildLine already exists for BuildOrder {self.pk} and BomItem {bom_item.pk}") + logger.info("BuildLine already exists for BuildOrder %s and BomItem %s", self.pk, bom_item.pk) continue # Calculate required quantity @@ -1173,12 +1179,12 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. BuildLine.objects.bulk_create(lines) - logger.info(f"Created {len(lines)} BuildLine objects for BuildOrder") + if len(lines) > 0: + logger.info("Created %s BuildLine objects for BuildOrder", len(lines)) @transaction.atomic def update_build_line_items(self): """Rebuild required quantity field for each BuildLine object""" - lines_to_update = [] for line in self.build_lines.all(): @@ -1187,7 +1193,7 @@ class Build(MPTTModel, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models. BuildLine.objects.bulk_update(lines_to_update, ['quantity']) - logger.info(f"Updated {len(lines_to_update)} BuildLine objects for BuildOrder") + logger.info("Updated %s BuildLine objects for BuildOrder", len(lines_to_update)) @receiver(post_save, sender=Build, dispatch_uid='build_post_save_log') @@ -1282,7 +1288,6 @@ class BuildLine(models.Model): def allocated_quantity(self): """Calculate the total allocated quantity for this BuildLine""" - # Queryset containing all BuildItem objects allocated against this BuildLine allocations = self.allocations.all() @@ -1298,7 +1303,6 @@ class BuildLine(models.Model): def is_fully_allocated(self): """Return True if this BuildLine is fully allocated""" - if self.bom_item.consumable: return True @@ -1508,28 +1512,6 @@ class BuildItem(InvenTree.models.MetadataMixin, models.Model): } ) - def getStockItemThumbnail(self): - """Return qualified URL for part thumbnail image.""" - thumb_url = None - - if self.stock_item and self.stock_item.part: - try: - # Try to extract the thumbnail - thumb_url = self.stock_item.part.image.thumbnail.url - except Exception: - pass - - if thumb_url is None and self.bom_item and self.bom_item.sub_part: - try: - thumb_url = self.bom_item.sub_part.image.thumbnail.url - except Exception: - pass - - if thumb_url is not None: - return InvenTree.helpers.getMediaUrl(thumb_url) - else: - return InvenTree.helpers.getBlankThumbnail() - build_line = models.ForeignKey( BuildLine, on_delete=models.SET_NULL, null=True, diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index 4ea3a1bb18..337c00452d 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -129,7 +129,6 @@ class BuildSerializer(InvenTreeModelSerializer): def validate_reference(self, reference): """Custom validation for the Build reference field""" - # Ensure the reference matches the required pattern Build.validate_reference_field(reference) @@ -209,7 +208,6 @@ class BuildOutputQuantitySerializer(BuildOutputSerializer): def validate(self, data): """Validate the serializer data""" - data = super().validate(data) output = data.get('output') @@ -450,7 +448,6 @@ class BuildOutputScrapSerializer(serializers.Serializer): def save(self): """Save the serializer to scrap the build outputs""" - build = self.context['build'] request = self.context['request'] data = self.validated_data @@ -625,12 +622,11 @@ class BuildCompleteSerializer(serializers.Serializer): This is so we can determine (at run time) whether the build is ready to be completed. """ - build = self.context['build'] return { 'overallocated': build.is_overallocated(), - 'allocated': build.is_fully_allocated(), + 'allocated': build.are_untracked_parts_allocated, 'remaining': build.remaining, 'incomplete': build.incomplete_count, } @@ -663,7 +659,7 @@ class BuildCompleteSerializer(serializers.Serializer): """Check if the 'accept_unallocated' field is required""" build = self.context['build'] - if not build.is_fully_allocated() and not value: + if not build.are_untracked_parts_allocated and not value: raise ValidationError(_('Required stock has not been fully allocated')) return value @@ -866,10 +862,6 @@ class BuildAllocationItemSerializer(serializers.Serializer): 'output': _('Build output cannot be specified for allocation of untracked parts'), }) - # Check if this allocation would be unique - if BuildItem.objects.filter(build_line=build_line, stock_item=stock_item, install_into=output).exists(): - raise ValidationError(_('This stock item has already been allocated to this build output')) - return data @@ -914,12 +906,16 @@ class BuildAllocationSerializer(serializers.Serializer): try: # Create a new BuildItem to allocate stock - BuildItem.objects.create( + build_item, created = BuildItem.objects.get_or_create( build_line=build_line, stock_item=stock_item, - quantity=quantity, - install_into=output + install_into=output, ) + if created: + build_item.quantity = quantity + else: + build_item.quantity += quantity + build_item.save() except (ValidationError, DjangoValidationError) as exc: # Catch model errors and re-throw as DRF errors raise ValidationError(detail=serializers.as_serializer_error(exc)) @@ -1012,7 +1008,7 @@ class BuildItemSerializer(InvenTreeModelSerializer): build = serializers.PrimaryKeyRelatedField(source='build_line.build', many=False, read_only=True) # Extra (optional) detail fields - part_detail = PartBriefSerializer(source='stock_item.part', many=False, read_only=True) + part_detail = PartBriefSerializer(source='stock_item.part', many=False, read_only=True, pricing=False) stock_item_detail = StockItemSerializerBrief(source='stock_item', read_only=True) location_detail = LocationSerializer(source='stock_item.location', read_only=True) build_detail = BuildSerializer(source='build_line.build', many=False, read_only=True) @@ -1063,6 +1059,7 @@ class BuildLineSerializer(InvenTreeModelSerializer): 'available_stock', 'available_substitute_stock', 'available_variant_stock', + 'total_available_stock', ] read_only_fields = [ @@ -1074,8 +1071,8 @@ class BuildLineSerializer(InvenTreeModelSerializer): quantity = serializers.FloatField() # Foreign key fields - bom_item_detail = BomItemSerializer(source='bom_item', many=False, read_only=True) - part_detail = PartSerializer(source='bom_item.sub_part', many=False, read_only=True) + bom_item_detail = BomItemSerializer(source='bom_item', many=False, read_only=True, pricing=False) + part_detail = PartSerializer(source='bom_item.sub_part', many=False, read_only=True, pricing=False) allocations = BuildItemSerializer(many=True, read_only=True) # Annotated (calculated) fields @@ -1084,6 +1081,7 @@ class BuildLineSerializer(InvenTreeModelSerializer): available_stock = serializers.FloatField(read_only=True) available_substitute_stock = serializers.FloatField(read_only=True) available_variant_stock = serializers.FloatField(read_only=True) + total_available_stock = serializers.FloatField(read_only=True) @staticmethod def annotate_queryset(queryset): @@ -1093,17 +1091,28 @@ class BuildLineSerializer(InvenTreeModelSerializer): - available: Total stock available for allocation against this build line - on_order: Total stock on order for this build line """ + queryset = queryset.select_related( + 'build', 'bom_item', + ) # Pre-fetch related fields queryset = queryset.prefetch_related( + 'bom_item__sub_part', 'bom_item__sub_part__stock_items', 'bom_item__sub_part__stock_items__allocations', 'bom_item__sub_part__stock_items__sales_order_allocations', + 'bom_item__sub_part__tags', 'bom_item__substitutes', 'bom_item__substitutes__part__stock_items', 'bom_item__substitutes__part__stock_items__allocations', 'bom_item__substitutes__part__stock_items__sales_order_allocations', + + 'allocations', + 'allocations__stock_item', + 'allocations__stock_item__part', + 'allocations__stock_item__location', + 'allocations__stock_item__location__tags', ) # Annotate the "allocated" quantity @@ -1173,6 +1182,14 @@ class BuildLineSerializer(InvenTreeModelSerializer): ) ) + # Annotate with the 'total available stock' + queryset = queryset.annotate( + total_available_stock=ExpressionWrapper( + F('available_stock') + F('available_substitute_stock') + F('available_variant_stock'), + output_field=FloatField(), + ) + ) + return queryset diff --git a/InvenTree/build/tasks.py b/InvenTree/build/tasks.py index 6d63720e96..46fd97cab4 100644 --- a/InvenTree/build/tasks.py +++ b/InvenTree/build/tasks.py @@ -24,6 +24,54 @@ import part.models as part_models logger = logging.getLogger('inventree') +def update_build_order_lines(bom_item_pk: int): + """Update all BuildOrderLineItem objects which reference a particular BomItem. + + This task is triggered when a BomItem is created or updated. + """ + logger.info("Updating build order lines for BomItem %s", bom_item_pk) + + bom_item = part_models.BomItem.objects.filter(pk=bom_item_pk).first() + + # If the BomItem has been deleted, there is nothing to do + if not bom_item: + return + + assemblies = bom_item.get_assemblies() + + # Find all active builds which reference any of the parts + builds = build.models.Build.objects.filter( + part__in=list(assemblies), + status__in=BuildStatusGroups.ACTIVE_CODES + ) + + # Iterate through each build, and update the relevant line items + for bo in builds: + # Try to find a matching build order line + line = build.models.BuildLine.objects.filter( + build=bo, + bom_item=bom_item, + ).first() + + q = bom_item.get_required_quantity(bo.quantity) + + if line: + # Ensure quantity is correct + if line.quantity != q: + line.quantity = q + line.save() + else: + # Create a new line item + build.models.BuildLine.objects.create( + build=bo, + bom_item=bom_item, + quantity=q, + ) + + if builds.count() > 0: + logger.info("Updated %s build orders for part %s", builds.count(), bom_item.part) + + def check_build_stock(build: build.models.Build): """Check the required stock for a newly created build order. @@ -45,7 +93,7 @@ def check_build_stock(build: build.models.Build): part = build.part except part_models.Part.DoesNotExist: # Note: This error may be thrown during unit testing... - logger.error("Invalid build.part passed to 'build.tasks.check_build_stock'") + logger.exception("Invalid build.part passed to 'build.tasks.check_build_stock'") return for bom_item in part.get_bom_items(): @@ -86,7 +134,7 @@ def check_build_stock(build: build.models.Build): if len(emails) > 0: - logger.info(f"Notifying users of stock required for build {build.pk}") + logger.info("Notifying users of stock required for build %s", build.pk) context = { 'link': InvenTree.helpers_model.construct_absolute_url(build.get_absolute_url()), @@ -107,7 +155,6 @@ def check_build_stock(build: build.models.Build): def notify_overdue_build_order(bo: build.models.Build): """Notify appropriate users that a Build has just become 'overdue'""" - targets = [] if bo.issued_by: @@ -153,7 +200,6 @@ def check_overdue_build_orders(): - Look at the 'target_date' of any outstanding BuildOrder objects - If the 'target_date' expired *yesterday* then the order is just out of date """ - yesterday = datetime.now().date() - timedelta(days=1) overdue_orders = build.models.Build.objects.filter( diff --git a/InvenTree/build/templates/build/build_base.html b/InvenTree/build/templates/build/build_base.html index 2f1ea421b6..3eb50e1270 100644 --- a/InvenTree/build/templates/build/build_base.html +++ b/InvenTree/build/templates/build/build_base.html @@ -29,10 +29,9 @@ src="{% static 'img/blank_image.png' %}" {% block actions %} -{% if user.is_staff and roles.build.change %} -{% url 'admin:build_build_change' build.pk as url %} +{% admin_url user "build.build" build.pk as url %} {% include "admin_button.html" with url=url %} -{% endif %} + {% if barcodes %}
diff --git a/InvenTree/build/templates/build/detail.html b/InvenTree/build/templates/build/detail.html index 14c75be201..8f60cc31df 100644 --- a/InvenTree/build/templates/build/detail.html +++ b/InvenTree/build/templates/build/detail.html @@ -106,7 +106,7 @@ {% trans "External Link" %} - {% include 'clip_link.html' with link=build.link %} + {% include 'clip_link.html' with link=build.link new_window=True %} {% endif %} {% if build.issued_by %} @@ -165,9 +165,7 @@
-
- {% include "filter_list.html" with id='sub-build' %} -
+ {% include "filter_list.html" with id='sub-build' %}
@@ -199,26 +197,8 @@
- {% if build.active %} - {% if build.is_fully_allocated %} -
- {% trans "Untracked stock has been fully allocated for this Build Order" %} -
- {% else %} -
- {% trans "Untracked stock has not been fully allocated for this Build Order" %} -
- {% endif %} - {% endif %}
-
-
- - {% include "filter_list.html" with id='buildlines' %} -
-
+ {% include "filter_list.html" with id='buildlines' %}
@@ -240,37 +220,7 @@
-
- {% if build.active %} -
- - -
- - -
- {% include "filter_list.html" with id='incompletebuilditems' %} -
- {% endif %} -
+ {% include "filter_list.html" with id='incompletebuilditems' %}
@@ -356,9 +306,6 @@ onPanelLoad('completed', function() { build: {{ build.id }}, is_building: false, }, - buttons: [ - '#stock-options', - ], }); }); @@ -501,10 +448,6 @@ $('#btn-unallocate').on('click', function() { }); }); -$('#allocate-selected-items').click(function() { - allocateSelectedLines(); -}); - $("#btn-allocate").on('click', function() { allocateSelectedLines(); }); diff --git a/InvenTree/build/templates/build/index.html b/InvenTree/build/templates/build/index.html index 5094c6a45a..f4a266ecca 100644 --- a/InvenTree/build/templates/build/index.html +++ b/InvenTree/build/templates/build/index.html @@ -24,11 +24,7 @@
-
-
- {% include "filter_list.html" with id="build" %} -
-
+ {% include "filter_list.html" with id="build" %}
diff --git a/InvenTree/build/test_api.py b/InvenTree/build/test_api.py index c01f633fad..0d5e834cbd 100644 --- a/InvenTree/build/test_api.py +++ b/InvenTree/build/test_api.py @@ -279,7 +279,6 @@ class BuildTest(BuildAPITest): def test_delete(self): """Test that we can delete a BuildOrder via the API""" - bo = Build.objects.get(pk=1) url = reverse('api-build-detail', kwargs={'pk': bo.pk}) @@ -684,9 +683,7 @@ class BuildAllocationTest(BuildAPITest): def test_invalid_bom_item(self): """Test by passing an invalid BOM item.""" - # Find the right (in this case, wrong) BuildLine instance - si = StockItem.objects.get(pk=11) lines = self.build.build_lines.all() @@ -718,7 +715,6 @@ class BuildAllocationTest(BuildAPITest): This should result in creation of a new BuildItem object """ - # Find the correct BuildLine si = StockItem.objects.get(pk=2) @@ -753,6 +749,79 @@ class BuildAllocationTest(BuildAPITest): self.assertEqual(allocation.bom_item.pk, 1) self.assertEqual(allocation.stock_item.pk, 2) + def test_reallocate(self): + """Test reallocating an existing built item with the same stock item. + + This should increment the quantity of the existing BuildItem object + """ + # Find the correct BuildLine + si = StockItem.objects.get(pk=2) + + right_line = None + for line in self.build.build_lines.all(): + if line.bom_item.sub_part.pk == si.part.pk: + right_line = line + break + + self.post( + self.url, + { + "items": [ + { + "build_line": right_line.pk, + "stock_item": 2, + "quantity": 3000, + } + ] + }, + expected_code=201 + ) + + # A new BuildItem should have been created + self.assertEqual(self.n + 1, BuildItem.objects.count()) + + allocation = BuildItem.objects.last() + + self.assertEqual(allocation.quantity, 3000) + self.assertEqual(allocation.bom_item.pk, 1) + self.assertEqual(allocation.stock_item.pk, 2) + + # Try to allocate more than the required quantity (this should fail) + self.post( + self.url, + { + "items": [ + { + "build_line": right_line.pk, + "stock_item": 2, + "quantity": 2001, + } + ] + }, + expected_code=400 + ) + + allocation.refresh_from_db() + self.assertEqual(allocation.quantity, 3000) + + # Try to allocate the remaining items + self.post( + self.url, + { + "items": [ + { + "build_line": right_line.pk, + "stock_item": 2, + "quantity": 2000, + } + ] + }, + expected_code=201 + ) + + allocation.refresh_from_db() + self.assertEqual(allocation.quantity, 5000) + class BuildOverallocationTest(BuildAPITest): """Unit tests for over allocation of stock items against a build order. @@ -801,7 +870,6 @@ class BuildOverallocationTest(BuildAPITest): def test_setup(self): """Validate expected state after set-up.""" - self.assertEqual(self.build.incomplete_outputs.count(), 0) self.assertEqual(self.build.complete_outputs.count(), 1) self.assertEqual(self.build.completed, self.build.quantity) @@ -966,7 +1034,6 @@ class BuildOutputScrapTest(BuildAPITest): def scrap(self, build_id, data, expected_code=None): """Helper method to POST to the scrap API""" - url = reverse('api-build-output-scrap', kwargs={'pk': build_id}) response = self.post(url, data, expected_code=expected_code) @@ -975,7 +1042,6 @@ class BuildOutputScrapTest(BuildAPITest): def test_invalid_scraps(self): """Test that invalid scrap attempts are rejected""" - # Test with missing required fields response = self.scrap(1, {}, expected_code=400) @@ -1039,7 +1105,6 @@ class BuildOutputScrapTest(BuildAPITest): def test_valid_scraps(self): """Test that valid scrap attempts succeed""" - # Create a build output build = Build.objects.get(pk=1) diff --git a/InvenTree/build/test_build.py b/InvenTree/build/test_build.py index 26659d82f0..d8300d0958 100644 --- a/InvenTree/build/test_build.py +++ b/InvenTree/build/test_build.py @@ -45,7 +45,6 @@ class BuildTestBase(TestCase): - 7 x output_2 """ - super().setUpTestData() # Create a base "Part" @@ -145,7 +144,7 @@ class BuildTest(BuildTestBase): def test_ref_int(self): """Test the "integer reference" field used for natural sorting""" - + # Set build reference to new value common.models.InvenTreeSetting.set_setting('BUILDORDER_REFERENCE_PATTERN', 'BO-{ref}-???', change_user=None) refs = { @@ -168,11 +167,12 @@ class BuildTest(BuildTestBase): build.save() self.assertEqual(build.reference_int, ref_int) + # Set build reference back to default value + common.models.InvenTreeSetting.set_setting('BUILDORDER_REFERENCE_PATTERN', 'BO-{ref:04d}', change_user=None) + def test_ref_validation(self): """Test that the reference field validation works as expected""" - # Default reference pattern = 'BO-{ref:04d} - # These patterns should fail for ref in [ 'BO-1234x', @@ -214,9 +214,11 @@ class BuildTest(BuildTestBase): title='Valid reference', ) + # Set build reference back to default value + common.models.InvenTreeSetting.set_setting('BUILDORDER_REFERENCE_PATTERN', 'BO-{ref:04d}', change_user=None) + def test_next_ref(self): """Test that the next reference is automatically generated""" - common.models.InvenTreeSetting.set_setting('BUILDORDER_REFERENCE_PATTERN', 'XYZ-{ref:06d}', change_user=None) build = Build.objects.create( @@ -238,9 +240,11 @@ class BuildTest(BuildTestBase): self.assertEqual(build.reference, 'XYZ-000988') self.assertEqual(build.reference_int, 988) + # Set build reference back to default value + common.models.InvenTreeSetting.set_setting('BUILDORDER_REFERENCE_PATTERN', 'BO-{ref:04d}', change_user=None) + def test_init(self): """Perform some basic tests before we start the ball rolling""" - self.assertEqual(StockItem.objects.count(), 10) # Build is PENDING @@ -262,7 +266,6 @@ class BuildTest(BuildTestBase): def test_build_item_clean(self): """Ensure that dodgy BuildItem objects cannot be created""" - stock = StockItem.objects.create(part=self.assembly, quantity=99) # Create a BuiltItem which points to an invalid StockItem @@ -289,7 +292,6 @@ class BuildTest(BuildTestBase): def test_duplicate_bom_line(self): """Try to add a duplicate BOM item - it should be allowed""" - BomItem.objects.create( part=self.assembly, sub_part=self.sub_part_1, @@ -303,7 +305,6 @@ class BuildTest(BuildTestBase): output: StockItem object (or None) allocations: Map of {StockItem: quantity} """ - items_to_create = [] for item, quantity in allocations.items(): @@ -325,7 +326,6 @@ class BuildTest(BuildTestBase): def test_partial_allocation(self): """Test partial allocation of stock""" - # Fully allocate tracked stock against build output 1 self.allocate_stock( self.output_1, @@ -399,7 +399,6 @@ class BuildTest(BuildTestBase): def test_overallocation_and_trim(self): """Test overallocation of stock and trim function""" - # Fully allocate tracked stock (not eligible for trimming) self.allocate_stock( self.output_1, @@ -472,11 +471,31 @@ class BuildTest(BuildTestBase): # Check that the "consumed_by" item count has increased self.assertEqual(StockItem.objects.filter(consumed_by=self.build).count(), n + 8) + def test_change_part(self): + """Try to change target part after creating a build""" + + bo = Build.objects.create( + reference='BO-9999', + title='Some new build', + part=self.assembly, + quantity=5, + issued_by=get_user_model().objects.get(pk=1), + ) + + assembly_2 = Part.objects.create( + name="Another assembly", + description="A different assembly", + assembly=True, + ) + + # Should not be able to change the part after the Build is saved + with self.assertRaises(ValidationError): + bo.part = assembly_2 + bo.save() + def test_cancel(self): """Test cancellation of the build""" - # TODO - """ self.allocate_stock(50, 50, 200, self.output_1) self.build.cancel_build(None) @@ -487,7 +506,6 @@ class BuildTest(BuildTestBase): def test_complete(self): """Test completion of a build output""" - self.stock_1_1.quantity = 1000 self.stock_1_1.save() @@ -557,7 +575,6 @@ class BuildTest(BuildTestBase): def test_overdue_notification(self): """Test sending of notifications when a build order is overdue.""" - self.build.target_date = datetime.now().date() - timedelta(days=1) self.build.save() @@ -573,7 +590,6 @@ class BuildTest(BuildTestBase): def test_new_build_notification(self): """Test that a notification is sent when a new build is created""" - Build.objects.create( reference='BO-9999', title='Some new build', @@ -599,7 +615,6 @@ class BuildTest(BuildTestBase): def test_metadata(self): """Unit tests for the metadata field.""" - # Make sure a BuildItem exists before trying to run this test b = BuildItem(stock_item=self.stock_1_2, build_line=self.line_1, install_into=self.output_1, quantity=10) b.save() @@ -654,7 +669,6 @@ class AutoAllocationTests(BuildTestBase): A "fully auto" allocation should allocate *all* of these stock items to the build """ - # No build item allocations have been made against the build self.assertEqual(self.build.allocated_stock.count(), 0) @@ -707,7 +721,6 @@ class AutoAllocationTests(BuildTestBase): def test_fully_auto(self): """We should be able to auto-allocate against a build in a single go""" - self.build.auto_allocate_stock( interchangeable=True, substitutes=True, diff --git a/InvenTree/build/test_migrations.py b/InvenTree/build/test_migrations.py index 440074d4d7..dba739764a 100644 --- a/InvenTree/build/test_migrations.py +++ b/InvenTree/build/test_migrations.py @@ -111,7 +111,6 @@ class TestReferencePatternMigration(MigratorTestCase): def prepare(self): """Create some initial data prior to migration""" - Setting = self.old_state.apps.get_model('common', 'inventreesetting') # Create a custom existing prefix so we can confirm the operation is working @@ -141,7 +140,6 @@ class TestReferencePatternMigration(MigratorTestCase): def test_reference_migration(self): """Test that the reference fields have been correctly updated""" - Build = self.new_state.apps.get_model('build', 'build') for build in Build.objects.all(): @@ -170,7 +168,6 @@ class TestBuildLineCreation(MigratorTestCase): def prepare(self): """Create data to work with""" - # Model references Part = self.old_state.apps.get_model('part', 'part') BomItem = self.old_state.apps.get_model('part', 'bomitem') @@ -235,7 +232,6 @@ class TestBuildLineCreation(MigratorTestCase): def test_build_line_creation(self): """Test that the BuildLine objects have been created correctly""" - Build = self.new_state.apps.get_model('build', 'build') BomItem = self.new_state.apps.get_model('part', 'bomitem') BuildLine = self.new_state.apps.get_model('build', 'buildline') diff --git a/InvenTree/build/validators.py b/InvenTree/build/validators.py index 5d529218a1..87ebfc25ba 100644 --- a/InvenTree/build/validators.py +++ b/InvenTree/build/validators.py @@ -3,7 +3,6 @@ def generate_next_build_reference(): """Generate the next available BuildOrder reference""" - from build.models import Build return Build.generate_reference() @@ -11,7 +10,6 @@ def generate_next_build_reference(): def validate_build_order_reference_pattern(pattern): """Validate the BuildOrder reference 'pattern' setting""" - from build.models import Build Build.validate_reference_pattern(pattern) @@ -19,7 +17,6 @@ def validate_build_order_reference_pattern(pattern): def validate_build_order_reference(value): """Validate that the BuildOrder reference field matches the required pattern.""" - from build.models import Build # If we get to here, run the "default" validation routine diff --git a/InvenTree/common/admin.py b/InvenTree/common/admin.py index c2c3939b9b..cbc5b6621b 100644 --- a/InvenTree/common/admin.py +++ b/InvenTree/common/admin.py @@ -16,8 +16,7 @@ class SettingsAdmin(ImportExportModelAdmin): """Prevent the 'key' field being edited once the setting is created.""" if obj: return ['key'] - else: - return [] + return [] class UserSettingsAdmin(ImportExportModelAdmin): @@ -29,8 +28,7 @@ class UserSettingsAdmin(ImportExportModelAdmin): """Prevent the 'key' field being edited once the setting is created.""" if obj: return ['key'] - else: - return [] + return [] class WebhookAdmin(ImportExportModelAdmin): diff --git a/InvenTree/common/api.py b/InvenTree/common/api.py index abde58501f..3b9e15bbdc 100644 --- a/InvenTree/common/api.py +++ b/InvenTree/common/api.py @@ -18,6 +18,7 @@ from rest_framework.views import APIView import common.models import common.serializers +from generic.states.api import AllStatusViews, StatusView from InvenTree.api import BulkDeleteMixin, MetadataView from InvenTree.config import CONFIG_LOOKUPS from InvenTree.filters import ORDER_FILTER, SEARCH_ORDER_FILTER @@ -113,7 +114,6 @@ class CurrencyExchangeView(APIView): def get(self, request, format=None): """Return information on available currency conversions""" - # Extract a list of all available rates try: rates = Rate.objects.all() @@ -157,10 +157,9 @@ class CurrencyRefreshView(APIView): def post(self, request, *args, **kwargs): """Performing a POST request will update currency exchange rates""" - from InvenTree.tasks import update_exchange_rates - update_exchange_rates() + update_exchange_rates(force=True) return Response({ 'success': 'Exchange rates updated', @@ -192,6 +191,11 @@ class GlobalSettingsList(SettingsList): queryset = common.models.InvenTreeSetting.objects.exclude(key__startswith="_") serializer_class = common.serializers.GlobalSettingsSerializer + def list(self, request, *args, **kwargs): + """Ensure all global settings are created""" + common.models.InvenTreeSetting.build_default_values() + return super().list(request, *args, **kwargs) + class GlobalSettingsPermissions(permissions.BasePermission): """Special permission class to determine if the user is "staff".""" @@ -203,9 +207,8 @@ class GlobalSettingsPermissions(permissions.BasePermission): if request.method in ['GET', 'HEAD', 'OPTIONS']: return True - else: - # Any other methods require staff access permissions - return user.is_staff + # Any other methods require staff access permissions + return user.is_staff except AttributeError: # pragma: no cover return False @@ -223,9 +226,9 @@ class GlobalSettingsDetail(RetrieveUpdateAPI): def get_object(self): """Attempt to find a global setting object with the provided key.""" - key = self.kwargs['key'] + key = str(self.kwargs['key']).upper() - if key not in common.models.InvenTreeSetting.SETTINGS.keys(): + if key.startswith('_') or key not in common.models.InvenTreeSetting.SETTINGS.keys(): raise NotFound() return common.models.InvenTreeSetting.get_setting_object( @@ -245,6 +248,11 @@ class UserSettingsList(SettingsList): queryset = common.models.InvenTreeUserSetting.objects.all() serializer_class = common.serializers.UserSettingsSerializer + def list(self, request, *args, **kwargs): + """Ensure all user settings are created""" + common.models.InvenTreeUserSetting.build_default_values(user=request.user) + return super().list(request, *args, **kwargs) + def filter_queryset(self, queryset): """Only list settings which apply to the current user.""" try: @@ -284,9 +292,9 @@ class UserSettingsDetail(RetrieveUpdateAPI): def get_object(self): """Attempt to find a user setting object with the provided key.""" - key = self.kwargs['key'] + key = str(self.kwargs['key']).upper() - if key not in common.models.InvenTreeUserSetting.SETTINGS.keys(): + if key.startswith('_') or key not in common.models.InvenTreeUserSetting.SETTINGS.keys(): raise NotFound() return common.models.InvenTreeUserSetting.get_setting_object( @@ -373,7 +381,6 @@ class NotificationList(NotificationMessageMixin, BulkDeleteMixin, ListAPI): def filter_delete_queryset(self, queryset, request): """Ensure that the user can only delete their *own* notifications""" - queryset = queryset.filter(user=request.user) return queryset @@ -486,6 +493,23 @@ class ProjectCodeDetail(RetrieveUpdateDestroyAPI): permission_classes = [permissions.IsAuthenticated, IsStaffOrReadOnly] +class CustomUnitList(ListCreateAPI): + """List view for custom units""" + + queryset = common.models.CustomUnit.objects.all() + serializer_class = common.serializers.CustomUnitSerializer + permission_classes = [permissions.IsAuthenticated, IsStaffOrReadOnly] + filter_backends = SEARCH_ORDER_FILTER + + +class CustomUnitDetail(RetrieveUpdateDestroyAPI): + """Detail view for a particular custom unit""" + + queryset = common.models.CustomUnit.objects.all() + serializer_class = common.serializers.CustomUnitSerializer + permission_classes = [permissions.IsAuthenticated, IsStaffOrReadOnly] + + class FlagList(ListAPI): """List view for feature flags.""" @@ -554,6 +578,14 @@ common_api_urls = [ re_path(r'^.*$', ProjectCodeList.as_view(), name='api-project-code-list'), ])), + # Custom physical units + re_path(r'^units/', include([ + path(r'/', include([ + re_path(r'^.*$', CustomUnitDetail.as_view(), name='api-custom-unit-detail'), + ])), + re_path(r'^.*$', CustomUnitList.as_view(), name='api-custom-unit-list'), + ])), + # Currencies re_path(r'^currency/', include([ re_path(r'^exchange/', CurrencyExchangeView.as_view(), name='api-currency-exchange'), @@ -586,6 +618,14 @@ common_api_urls = [ path('/', FlagDetail.as_view(), name='api-flag-detail'), re_path(r'^.*$', FlagList.as_view(), name='api-flag-list'), ])), + + # Status + path('generic/status/', include([ + path(f'/', include([ + path('', StatusView.as_view(), name='api-status'), + ])), + path('', AllStatusViews.as_view(), name='api-status-all'), + ])), ] admin_api_urls = [ diff --git a/InvenTree/common/migrations/0017_notesimage.py b/InvenTree/common/migrations/0017_notesimage.py index c9e08af461..8c9aff2f6d 100644 --- a/InvenTree/common/migrations/0017_notesimage.py +++ b/InvenTree/common/migrations/0017_notesimage.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2.18 on 2023-04-17 05:54 +# Generated by Django 3.2.18 on 2023-04-17 05:55 from django.conf import settings from django.db import migrations, models diff --git a/InvenTree/common/migrations/0020_customunit.py b/InvenTree/common/migrations/0020_customunit.py new file mode 100644 index 0000000000..500d34c683 --- /dev/null +++ b/InvenTree/common/migrations/0020_customunit.py @@ -0,0 +1,22 @@ +# Generated by Django 3.2.20 on 2023-07-18 11:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('common', '0019_projectcode_metadata'), + ] + + operations = [ + migrations.CreateModel( + name='CustomUnit', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(help_text='Unit name', max_length=50, unique=True, verbose_name='Name')), + ('symbol', models.CharField(blank=True, help_text='Optional unit symbol', max_length=10, unique=True, verbose_name='Symbol')), + ('definition', models.CharField(help_text='Unit definition', max_length=50, verbose_name='Definition')), + ], + ), + ] diff --git a/InvenTree/common/migrations/0021_auto_20230805_1748.py b/InvenTree/common/migrations/0021_auto_20230805_1748.py new file mode 100644 index 0000000000..66e553b144 --- /dev/null +++ b/InvenTree/common/migrations/0021_auto_20230805_1748.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.20 on 2023-08-05 17:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('common', '0020_customunit'), + ] + + operations = [ + migrations.AlterField( + model_name='inventreesetting', + name='value', + field=models.CharField(blank=True, help_text='Settings value', max_length=2000), + ), + migrations.AlterField( + model_name='inventreeusersetting', + name='value', + field=models.CharField(blank=True, help_text='Settings value', max_length=2000), + ), + ] diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index 8bcdec7eba..69ab8decf0 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -30,7 +30,9 @@ from django.core.exceptions import AppRegistryNotReady, ValidationError from django.core.validators import (MaxValueValidator, MinValueValidator, URLValidator) from django.db import models, transaction -from django.db.utils import IntegrityError, OperationalError +from django.db.models.signals import post_delete, post_save +from django.db.utils import IntegrityError, OperationalError, ProgrammingError +from django.dispatch.dispatcher import receiver from django.urls import reverse from django.utils.timezone import now from django.utils.translation import gettext_lazy as _ @@ -48,6 +50,7 @@ import InvenTree.ready import InvenTree.tasks import InvenTree.validators import order.validators +import report.helpers from plugin import registry logger = logging.getLogger('inventree') @@ -72,8 +75,19 @@ class MetaMixin(models.Model): ) -class EmptyURLValidator(URLValidator): - """Validator for filed with url - that can be empty.""" +class BaseURLValidator(URLValidator): + """Validator for the InvenTree base URL: + + - Allow empty value + - Allow value without specified TLD (top level domain) + """ + + def __init__(self, schemes=None, **kwargs): + """Custom init routine""" + super().__init__(schemes, **kwargs) + + # Override default host_re value - allow optional tld regex + self.host_re = '(' + self.hostname_re + self.domain_re + f'({self.tld_re})?' + '|localhost)' def __call__(self, value): """Make sure empty values pass.""" @@ -127,6 +141,7 @@ class SettingsKeyType(TypedDict, total=False): before_save: Function that gets called after save with *args, **kwargs (optional) after_save: Function that gets called after save with *args, **kwargs (optional) protected: Protected values are not returned to the client, instead "***" is returned (optional, default: False) + required: Is this setting required to work, can be used in combination with .check_all_settings(...) (optional, default: False) model: Auto create a dropdown menu to select an associated model instance (e.g. 'company.company', 'auth.user' and 'auth.group' are possible too, optional) """ @@ -140,6 +155,7 @@ class SettingsKeyType(TypedDict, total=False): before_save: Callable[..., None] after_save: Callable[..., None] protected: bool + required: bool model: str @@ -166,7 +182,7 @@ class BaseInvenTreeSetting(models.Model): do_cache = kwargs.pop('cache', True) - self.clean(**kwargs) + self.clean() self.validate_unique() # Execute before_save action @@ -181,6 +197,39 @@ class BaseInvenTreeSetting(models.Model): # Execute after_save action self._call_settings_function('after_save', args, kwargs) + @classmethod + def build_default_values(cls, **kwargs): + """Ensure that all values defined in SETTINGS are present in the database + + If a particular setting is not present, create it with the default value + """ + cache_key = f"BUILD_DEFAULT_VALUES:{str(cls.__name__)}" + + if InvenTree.helpers.str2bool(cache.get(cache_key, False)): + # Already built default values + return + + try: + existing_keys = cls.objects.filter(**kwargs).values_list('key', flat=True) + settings_keys = cls.SETTINGS.keys() + + missing_keys = set(settings_keys) - set(existing_keys) + + if len(missing_keys) > 0: + logger.info("Building %s default values for %s", len(missing_keys), str(cls)) + cls.objects.bulk_create([ + cls( + key=key, + value=cls.get_setting_default(key), + **kwargs + ) for key in missing_keys if not key.startswith('_') + ]) + except Exception as exc: + logger.exception("Failed to build default values for %s (%s)", str(cls), str(type(exc))) + pass + + cache.set(cache_key, True, timeout=3600) + def _call_settings_function(self, reference: str, args, kwargs): """Call a function associated with a particular setting. @@ -190,7 +239,7 @@ class BaseInvenTreeSetting(models.Model): kwargs: Keyword arguments to pass to the function """ # Get action - setting = self.get_setting_definition(self.key, *args, **kwargs) + setting = self.get_setting_definition(self.key, *args, **{**self.get_filters_for_instance(), **kwargs}) settings_fnc = setting.get(reference, None) # Execute if callable @@ -204,14 +253,13 @@ class BaseInvenTreeSetting(models.Model): def save_to_cache(self): """Save this setting object to cache""" - ckey = self.cache_key # skip saving to cache if no pk is set if self.pk is None: return - logger.debug(f"Saving setting '{ckey}' to cache") + logger.debug("Saving setting '%s' to cache", ckey) try: cache.set( @@ -232,7 +280,6 @@ class BaseInvenTreeSetting(models.Model): - The unique KEY string - Any key:value kwargs associated with the particular setting type (e.g. user-id) """ - key = f"{str(cls.__name__)}:{setting_key}" for k, v in kwargs.items(): @@ -250,13 +297,15 @@ class BaseInvenTreeSetting(models.Model): return {key: getattr(self, key, None) for key in self.extra_unique_fields if hasattr(self, key)} @classmethod - def allValues(cls, exclude_hidden=False, **kwargs): - """Return a dict of "all" defined global settings. + def all_settings(cls, *, exclude_hidden=False, settings_definition: Union[Dict[str, SettingsKeyType], None] = None, **kwargs): + """Return a list of "all" defined settings. This performs a single database lookup, and then any settings which are not *in* the database are assigned their default values """ + filters = cls.get_filters(**kwargs) + results = cls.objects.all() if exclude_hidden: @@ -264,45 +313,83 @@ class BaseInvenTreeSetting(models.Model): results = results.exclude(key__startswith='_') # Optionally filter by other keys - results = results.filter(**cls.get_filters(**kwargs)) + results = results.filter(**filters) + + settings: Dict[str, BaseInvenTreeSetting] = {} # Query the database - settings = {} - for setting in results: if setting.key: - settings[setting.key.upper()] = setting.value + settings[setting.key.upper()] = setting # Specify any "default" values which are not in the database - for key in cls.SETTINGS.keys(): - + settings_definition = settings_definition or cls.SETTINGS + for key, setting in settings_definition.items(): if key.upper() not in settings: - settings[key.upper()] = cls.get_setting_default(key) + settings[key.upper()] = cls( + key=key.upper(), + value=cls.get_setting_default(key, **filters), + **filters + ) - if exclude_hidden: - hidden = cls.SETTINGS[key].get('hidden', False) + # remove any hidden settings + if exclude_hidden and setting.get("hidden", False): + del settings[key.upper()] - if hidden: - # Remove hidden items - del settings[key.upper()] + # format settings values and remove protected + for key, setting in settings.items(): + validator = cls.get_setting_validator(key, **filters) - for key, value in settings.items(): - validator = cls.get_setting_validator(key) - - if cls.is_protected(key): - value = '***' + if cls.is_protected(key, **filters) and setting.value != "": + setting.value = '***' elif cls.validator_is_bool(validator): - value = InvenTree.helpers.str2bool(value) + setting.value = InvenTree.helpers.str2bool(setting.value) elif cls.validator_is_int(validator): try: - value = int(value) + setting.value = int(setting.value) except ValueError: - value = cls.get_setting_default(key) - - settings[key] = value + setting.value = cls.get_setting_default(key, **filters) return settings + @classmethod + def allValues(cls, *, exclude_hidden=False, settings_definition: Union[Dict[str, SettingsKeyType], None] = None, **kwargs): + """Return a dict of "all" defined global settings. + + This performs a single database lookup, + and then any settings which are not *in* the database + are assigned their default values + """ + all_settings = cls.all_settings(exclude_hidden=exclude_hidden, settings_definition=settings_definition, **kwargs) + + settings: Dict[str, Any] = {} + + for key, setting in all_settings.items(): + settings[key] = setting.value + + return settings + + @classmethod + def check_all_settings(cls, *, exclude_hidden=False, settings_definition: Union[Dict[str, SettingsKeyType], None] = None, **kwargs): + """Check if all required settings are set by definition. + + Returns: + is_valid: Are all required settings defined + missing_settings: List of all settings that are missing (empty if is_valid is 'True') + """ + all_settings = cls.all_settings(exclude_hidden=exclude_hidden, settings_definition=settings_definition, **kwargs) + + missing_settings: List[str] = [] + + for setting in all_settings.values(): + if setting.required: + value = setting.value or cls.get_setting_default(setting.key, **kwargs) + + if value == "": + missing_settings.append(setting.key.upper()) + + return len(missing_settings) == 0, missing_settings + @classmethod def get_setting_definition(cls, key, **kwargs): """Return the 'definition' of a particular settings value, as a dict object. @@ -317,8 +404,7 @@ class BaseInvenTreeSetting(models.Model): if settings is not None and key in settings: return settings[key] - else: - return {} + return {} @classmethod def get_setting_name(cls, key, **kwargs): @@ -371,8 +457,7 @@ class BaseInvenTreeSetting(models.Model): if callable(default): return default() - else: - return default + return default @classmethod def get_setting_choices(cls, key, **kwargs): @@ -406,6 +491,17 @@ class BaseInvenTreeSetting(models.Model): **cls.get_filters(**kwargs), } + # Unless otherwise specified, attempt to create the setting + create = kwargs.pop('create', True) + + # Prevent saving to the database during data import + if InvenTree.ready.isImportingData(): + create = False + + # Prevent saving to the database during migrations + if InvenTree.ready.isRunningMigrations(): + create = False + # Perform cache lookup by default do_cache = kwargs.pop('cache', True) @@ -428,15 +524,12 @@ class BaseInvenTreeSetting(models.Model): setting = settings.filter(**filters).first() except (ValueError, cls.DoesNotExist): setting = None - except (IntegrityError, OperationalError): + except (IntegrityError, OperationalError, ProgrammingError): setting = None # Setting does not exist! (Try to create it) if not setting: - # Unless otherwise specified, attempt to create the setting - create = kwargs.pop('create', True) - # Prevent creation of new settings objects when importing data if InvenTree.ready.isImportingData() or not InvenTree.ready.canAppAccessDatabase(allow_test=True, allow_shell=True): create = False @@ -456,7 +549,7 @@ class BaseInvenTreeSetting(models.Model): # Wrap this statement in "atomic", so it can be rolled back if it fails with transaction.atomic(): setting.save(**kwargs) - except (IntegrityError, OperationalError): + except (IntegrityError, OperationalError, ProgrammingError): # It might be the case that the database isn't created yet pass except ValidationError: @@ -513,6 +606,8 @@ class BaseInvenTreeSetting(models.Model): if change_user is not None and not change_user.is_staff: return + attempts = int(kwargs.get('attempts', 3)) + filters = { 'key__iexact': key, @@ -533,12 +628,26 @@ class BaseInvenTreeSetting(models.Model): if setting.is_bool(): value = InvenTree.helpers.str2bool(value) - setting.value = str(value) - setting.save() + try: + setting.value = str(value) + setting.save() + except ValidationError as exc: + # We need to know about validation errors + raise exc + except IntegrityError: + # Likely a race condition has caused a duplicate entry to be created + if attempts > 0: + # Try again + logger.info("Duplicate setting key '%s' for %s - trying again", key, str(cls)) + cls.set_setting(key, value, change_user, create=create, attempts=attempts - 1, **kwargs) + except Exception as exc: + # Some other error + logger.exception("Error setting setting '%s' for %s: %s", key, str(cls), str(type(exc))) + pass key = models.CharField(max_length=50, blank=False, unique=False, help_text=_('Settings key (must be unique - case insensitive)')) - value = models.CharField(max_length=200, blank=True, unique=False, help_text=_('Settings value')) + value = models.CharField(max_length=2000, blank=True, unique=False, help_text=_('Settings value')) @property def name(self): @@ -560,7 +669,7 @@ class BaseInvenTreeSetting(models.Model): """Return units for setting.""" return self.__class__.get_setting_units(self.key, **self.get_filters_for_instance()) - def clean(self, **kwargs): + def clean(self): """If a validator (or multiple validators) are defined for a particular setting key, run them against the 'value' field.""" super().clean() @@ -571,7 +680,7 @@ class BaseInvenTreeSetting(models.Model): elif self.is_bool(): self.value = self.as_bool() - validator = self.__class__.get_setting_validator(self.key, **kwargs) + validator = self.__class__.get_setting_validator(self.key, **self.get_filters_for_instance()) if validator is not None: self.run_validator(validator) @@ -713,19 +822,19 @@ class BaseInvenTreeSetting(models.Model): try: (app, mdl) = model_name.strip().split('.') except ValueError: - logger.error(f"Invalid 'model' parameter for setting {self.key} : '{model_name}'") + logger.exception("Invalid 'model' parameter for setting '%s': '%s'", self.key, model_name) return None app_models = apps.all_models.get(app, None) if app_models is None: - logger.error(f"Error retrieving model class '{model_name}' for setting '{self.key}' - no app named '{app}'") + logger.error("Error retrieving model class '%s' for setting '%s' - no app named '%s'", model_name, self.key, app) return None model = app_models.get(mdl, None) if model is None: - logger.error(f"Error retrieving model class '{model_name}' for setting '{self.key}' - no model named '{mdl}'") + logger.error("Error retrieving model class '%s' for setting '%s' - no model named '%s'", model_name, self.key, mdl) return None # Looks like we have found a model! @@ -778,9 +887,7 @@ class BaseInvenTreeSetting(models.Model): elif self.is_model(): return 'related field' - - else: - return 'string' + return 'string' @classmethod def validator_is_bool(cls, validator): @@ -829,7 +936,7 @@ class BaseInvenTreeSetting(models.Model): @classmethod def is_protected(cls, key, **kwargs): """Check if the setting value is protected.""" - setting = cls.get_setting_definition(key, **kwargs) + setting = cls.get_setting_definition(key, **cls.get_filters(**kwargs)) return setting.get('protected', False) @@ -838,6 +945,18 @@ class BaseInvenTreeSetting(models.Model): """Returns if setting is protected from rendering.""" return self.__class__.is_protected(self.key, **self.get_filters_for_instance()) + @classmethod + def is_required(cls, key, **kwargs): + """Check if this setting value is required.""" + setting = cls.get_setting_definition(key, **cls.get_filters(**kwargs)) + + return setting.get("required", False) + + @property + def required(self): + """Returns if setting is required.""" + return self.__class__.is_required(self.key, **self.get_filters_for_instance()) + def settings_group_options(): """Build up group tuple for settings based on your choices.""" @@ -871,16 +990,37 @@ def validate_email_domains(setting): raise ValidationError(_(f'Invalid domain name: {domain}')) +def currency_exchange_plugins(): + """Return a set of plugin choices which can be used for currency exchange""" + try: + from plugin import registry + plugs = registry.with_mixin('currencyexchange', active=True) + except Exception: + plugs = [] + + return [ + ('', _('No plugin')), + ] + [(plug.slug, plug.human_name) for plug in plugs] + + def update_exchange_rates(setting): """Update exchange rates when base currency is changed""" - if InvenTree.ready.isImportingData(): return if not InvenTree.ready.canAppAccessDatabase(): return - InvenTree.tasks.update_exchange_rates() + InvenTree.tasks.update_exchange_rates(force=True) + + +def reload_plugin_registry(setting): + """When a core plugin setting is changed, reload the plugin registry""" + from plugin import registry + + logger.info("Reloading plugin registry due to change in setting '%s'", setting.key) + + registry.reload_plugins(full_reload=True, force_reload=True, collect=True) class InvenTreeSetting(BaseInvenTreeSetting): @@ -932,6 +1072,13 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'hidden': True, }, + '_PENDING_MIGRATIONS': { + 'name': _('Pending migrations'), + 'description': _('Number of pending database migrations'), + 'default': 0, + 'validator': int, + }, + 'INVENTREE_INSTANCE': { 'name': _('Server Instance Name'), 'default': 'InvenTree', @@ -962,7 +1109,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'INVENTREE_BASE_URL': { 'name': _('Base URL'), 'description': _('Base URL for server instance'), - 'validator': EmptyURLValidator(), + 'validator': BaseURLValidator(), 'default': '', 'after_save': update_instance_url, }, @@ -975,6 +1122,24 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'after_save': update_exchange_rates, }, + 'CURRENCY_UPDATE_INTERVAL': { + 'name': _('Currency Update Interval'), + 'description': _('How often to update exchange rates (set to zero to disable)'), + 'default': 1, + 'units': _('days'), + 'validator': [ + int, + MinValueValidator(0), + ], + }, + + 'CURRENCY_UPDATE_PLUGIN': { + 'name': _('Currency Update Plugin'), + 'description': _('Currency update plugin to use'), + 'choices': currency_exchange_plugins, + 'default': 'inventreecurrencyexchange' + }, + 'INVENTREE_DOWNLOAD_FROM_URL': { 'name': _('Download from URL'), 'description': _('Allow download of remote images and files from external URL'), @@ -1081,7 +1246,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'BARCODE_ENABLE': { 'name': _('Barcode Support'), - 'description': _('Enable barcode scanner support'), + 'description': _('Enable barcode scanner support in the web interface'), 'default': True, 'validator': bool, }, @@ -1249,6 +1414,13 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': '', }, + 'PART_PARAMETER_ENFORCE_UNITS': { + 'name': _('Enforce Parameter Units'), + 'description': _('If units are provided, parameter values must match the specified units'), + 'default': True, + 'validator': bool, + }, + 'PRICING_DECIMAL_PLACES_MIN': { 'name': _('Minimum Pricing Decimal Places'), 'description': _('Minimum number of decimal places to display when rendering pricing data'), @@ -1377,11 +1549,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'name': _('Page Size'), 'description': _('Default page size for PDF reports'), 'default': 'A4', - 'choices': [ - ('A4', 'A4'), - ('Legal', 'Legal'), - ('Letter', 'Letter') - ], + 'choices': report.helpers.report_page_size_options, }, 'REPORT_ENABLE_TEST_REPORT': { @@ -1629,7 +1797,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'description': _('Enable plugins to add URL routes'), 'default': False, 'validator': bool, - 'requires_restart': True, + 'after_save': reload_plugin_registry, }, 'ENABLE_PLUGINS_NAVIGATION': { @@ -1637,7 +1805,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'description': _('Enable plugins to integrate into navigation'), 'default': False, 'validator': bool, - 'requires_restart': True, + 'after_save': reload_plugin_registry, }, 'ENABLE_PLUGINS_APP': { @@ -1645,7 +1813,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'description': _('Enable plugins to add apps'), 'default': False, 'validator': bool, - 'requires_restart': True, + 'after_save': reload_plugin_registry, }, 'ENABLE_PLUGINS_SCHEDULE': { @@ -1653,7 +1821,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'description': _('Enable plugins to run scheduled tasks'), 'default': False, 'validator': bool, - 'requires_restart': True, + 'after_save': reload_plugin_registry, }, 'ENABLE_PLUGINS_EVENTS': { @@ -1661,7 +1829,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'description': _('Enable plugins to respond to internal events'), 'default': False, 'validator': bool, - 'requires_restart': True, + 'after_save': reload_plugin_registry, }, "PROJECT_CODES_ENABLED": { @@ -1678,6 +1846,13 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': False, }, + 'STOCKTAKE_EXCLUDE_EXTERNAL': { + 'name': _('Exclude External Locations'), + 'description': _('Exclude stock items in external locations from stocktake calculations'), + 'validator': bool, + 'default': False, + }, + 'STOCKTAKE_AUTO_DAYS': { 'name': _('Automatic Stocktake Period'), 'description': _('Number of days between automatic stocktake recording (set to zero to disable)'), @@ -1720,13 +1895,12 @@ class InvenTreeSetting(BaseInvenTreeSetting): if options: return options.get('requires_restart', False) - else: - return False + return False def label_printer_options(): """Build a list of available label printer options.""" - printers = [('', _('No Printer (Export to PDF)'))] + printers = [] label_printer_plugins = registry.with_mixin('labels') if label_printer_plugins: printers.extend([(p.slug, p.name + ' - ' + p.human_name) for p in label_printer_plugins]) @@ -1775,13 +1949,6 @@ class InvenTreeUserSetting(BaseInvenTreeSetting): 'validator': bool, }, - 'PART_RECENT_COUNT': { - 'name': _('Recent Part Count'), - 'description': _('Number of recent parts to display on index page'), - 'default': 10, - 'validator': [int, MinValueValidator(1)] - }, - 'HOMEPAGE_BOM_REQUIRES_VALIDATION': { 'name': _('Show unvalidated BOMs'), 'description': _('Show BOMs that await validation on the homepage'), @@ -1796,13 +1963,6 @@ class InvenTreeUserSetting(BaseInvenTreeSetting): 'validator': bool, }, - 'STOCK_RECENT_COUNT': { - 'name': _('Recent Stock Count'), - 'description': _('Number of recent stock items to display on index page'), - 'default': 10, - 'validator': [int, MinValueValidator(1)] - }, - 'HOMEPAGE_STOCK_LOW': { 'name': _('Show low stock'), 'description': _('Show low stock items on the homepage'), @@ -2135,6 +2295,13 @@ class InvenTreeUserSetting(BaseInvenTreeSetting): 'default': '', }, + 'NOTIFICATION_ERROR_REPORT': { + 'name': _('Receive error reports'), + 'description': _('Receive notifications for system errors'), + 'default': True, + 'validator': bool, + } + } typ = 'user' @@ -2194,7 +2361,7 @@ class PriceBreak(MetaMixin): try: converted = convert_money(self.price, currency_code) except MissingRate: - logger.warning(f"No currency conversion rate available for {self.price_currency} -> {currency_code}") + logger.warning("No currency conversion rate available for %s -> %s", self.price_currency, currency_code) return self.price.amount return converted.amount @@ -2266,8 +2433,7 @@ def get_price(instance, quantity, moq=True, multiples=True, currency=None, break if pb_found: cost = pb_cost * quantity return InvenTree.helpers.normalize(cost + instance.base_cost) - else: - return None + return None class ColorTheme(models.Model): @@ -2720,7 +2886,6 @@ class NewsFeedEntry(models.Model): def rename_notes_image(instance, filename): """Function for renaming uploading image file. Will store in the 'notes' directory.""" - fname = os.path.basename(filename) return os.path.join('notes', fname) @@ -2740,3 +2905,88 @@ class NotesImage(models.Model): user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True) date = models.DateTimeField(auto_now_add=True) + + +class CustomUnit(models.Model): + """Model for storing custom physical unit definitions + + Model Attributes: + name: Name of the unit + definition: Definition of the unit + symbol: Symbol for the unit (e.g. 'm' for 'metre') (optional) + + Refer to the pint documentation for further information on unit definitions. + https://pint.readthedocs.io/en/stable/advanced/defining.html + """ + + def fmt_string(self): + """Construct a unit definition string e.g. 'dog_year = 52 * day = dy'""" + fmt = f'{self.name} = {self.definition}' + + if self.symbol: + fmt += f' = {self.symbol}' + + return fmt + + def clean(self): + """Validate that the provided custom unit is indeed valid""" + super().clean() + + from InvenTree.conversion import get_unit_registry + + registry = get_unit_registry() + + # Check that the 'name' field is valid + self.name = self.name.strip() + + # Cannot be zero length + if not self.name.isidentifier(): + raise ValidationError({ + 'name': _('Unit name must be a valid identifier') + }) + + self.definition = self.definition.strip() + + # Check that the 'definition' is valid, by itself + try: + registry.Quantity(self.definition) + except Exception as exc: + raise ValidationError({ + 'definition': str(exc) + }) + + # Finally, test that the entire custom unit definition is valid + try: + registry.define(self.fmt_string()) + except Exception as exc: + raise ValidationError(str(exc)) + + name = models.CharField( + max_length=50, + verbose_name=_('Name'), + help_text=_('Unit name'), + unique=True, blank=False, + ) + + symbol = models.CharField( + max_length=10, + verbose_name=_('Symbol'), + help_text=_('Optional unit symbol'), + unique=True, blank=True, + ) + + definition = models.CharField( + max_length=50, + verbose_name=_('Definition'), + help_text=_('Unit definition'), + blank=False, + ) + + +@receiver(post_save, sender=CustomUnit, dispatch_uid='custom_unit_saved') +@receiver(post_delete, sender=CustomUnit, dispatch_uid='custom_unit_deleted') +def after_custom_unit_updated(sender, instance, **kwargs): + """Callback when a custom unit is updated or deleted""" + # Force reload of the unit registry + from InvenTree.conversion import reload_unit_registry + reload_unit_registry() diff --git a/InvenTree/common/notifications.py b/InvenTree/common/notifications.py index 6abf8999d8..5c2aa1434a 100644 --- a/InvenTree/common/notifications.py +++ b/InvenTree/common/notifications.py @@ -35,7 +35,7 @@ class NotificationMethod: This checks that: - All needed functions are implemented - The method is not disabled via plugin - - All needed contaxt values were provided + - All needed context values were provided """ # Check if a sending fnc is defined if (not hasattr(self, 'send')) and (not hasattr(self, 'send_bulk')): @@ -196,7 +196,7 @@ class MethodStorageClass: filtered_list[ref] = item storage.liste = list(filtered_list.values()) - logger.info(f'Found {len(storage.liste)} notification methods') + logger.info('Found %s notification methods', len(storage.liste)) def get_usersettings(self, user) -> list: """Returns all user settings for a specific user. @@ -242,7 +242,6 @@ class UIMessageNotification(SingleNotificationMethod): def get_targets(self): """Only send notifications for active users""" - return [target for target in self.targets if target.is_active] def send(self, target): @@ -279,7 +278,7 @@ class NotificationBody: name: str slug: str message: str - template: str + template: str = None class InvenTreeNotificationBodies: @@ -339,10 +338,10 @@ def trigger_notification(obj, category=None, obj_ref='pk', **kwargs): delta = timedelta(days=1) if common.models.NotificationEntry.check_recent(category, obj_ref_value, delta): - logger.info(f"Notification '{category}' has recently been sent for '{str(obj)}' - SKIPPING") + logger.info("Notification '%s' has recently been sent for '%s' - SKIPPING", category, str(obj)) return - logger.info(f"Gathering users for notification '{category}'") + logger.info("Gathering users for notification '%s'", category) if target_exclude is None: target_exclude = set() @@ -376,10 +375,10 @@ def trigger_notification(obj, category=None, obj_ref='pk', **kwargs): target_users.add(user) # Unhandled type else: - logger.error(f"Unknown target passed to trigger_notification method: {target}") + logger.error("Unknown target passed to trigger_notification method: %s", target) if target_users: - logger.info(f"Sending notification '{category}' for '{str(obj)}'") + logger.info("Sending notification '%s' for '%s'", category, str(obj)) # Collect possible methods if delivery_methods is None: @@ -388,19 +387,19 @@ def trigger_notification(obj, category=None, obj_ref='pk', **kwargs): delivery_methods = (delivery_methods - IGNORED_NOTIFICATION_CLS) for method in delivery_methods: - logger.info(f"Triggering notification method '{method.METHOD_NAME}'") + logger.info("Triggering notification method '%s'", method.METHOD_NAME) try: deliver_notification(method, obj, category, target_users, context) except NotImplementedError as error: # Allow any single notification method to fail, without failing the others - logger.error(error) + logger.error(error) # noqa: LOG005 except Exception as error: - logger.error(error) + logger.error(error) # noqa: LOG005 # Set delivery flag common.models.NotificationEntry.notify(category, obj_ref_value) else: - logger.info(f"No possible users for notification '{category}'") + logger.info("No possible users for notification '%s'", category) def trigger_superuser_notification(plugin: PluginConfig, msg: str): @@ -440,7 +439,7 @@ def deliver_notification(cls: NotificationMethod, obj, category: str, targets, c if method.targets and len(method.targets) > 0: # Log start - logger.info(f"Notify users via '{method.METHOD_NAME}' for notification '{category}' for '{str(obj)}'") + logger.info("Notify users via '%s' for notification '%s' for '%s'", method.METHOD_NAME, category, str(obj)) # Run setup for delivery method method.setup() @@ -465,6 +464,6 @@ def deliver_notification(cls: NotificationMethod, obj, category: str, targets, c method.cleanup() # Log results - logger.info(f"Notified {success_count} users via '{method.METHOD_NAME}' for notification '{category}' for '{str(obj)}' successfully") + logger.info("Notified %s users via '%s' for notification '%s' for '%s' successfully", success_count, method.METHOD_NAME, category, str(obj)) if not success: logger.info("There were some problems") diff --git a/InvenTree/common/serializers.py b/InvenTree/common/serializers.py index 10616c251a..c791f39f83 100644 --- a/InvenTree/common/serializers.py +++ b/InvenTree/common/serializers.py @@ -13,6 +13,25 @@ from InvenTree.serializers import (InvenTreeImageSerializerField, InvenTreeModelSerializer) +class SettingsValueField(serializers.Field): + """Custom serializer field for a settings value.""" + + def get_attribute(self, instance): + """Return the object instance, not the attribute value.""" + return instance + + def to_representation(self, instance): + """Return the value of the setting: + + - Protected settings are returned as '***' + """ + return '***' if instance.protected else str(instance.value) + + def to_internal_value(self, data): + """Return the internal value of the setting""" + return str(data) + + class SettingsSerializer(InvenTreeModelSerializer): """Base serializer for a settings object.""" @@ -30,6 +49,10 @@ class SettingsSerializer(InvenTreeModelSerializer): api_url = serializers.CharField(read_only=True) + value = SettingsValueField() + + units = serializers.CharField(read_only=True) + def get_choices(self, obj): """Returns the choices available for a given item.""" results = [] @@ -45,16 +68,6 @@ class SettingsSerializer(InvenTreeModelSerializer): return results - def get_value(self, obj): - """Make sure protected values are not returned.""" - # never return protected values - if obj.protected: - result = '***' - else: - result = obj.value - - return result - class GlobalSettingsSerializer(SettingsSerializer): """Serializer for the InvenTreeSetting model.""" @@ -70,6 +83,7 @@ class GlobalSettingsSerializer(SettingsSerializer): 'name', 'description', 'type', + 'units', 'choices', 'model_name', 'api_url', @@ -92,6 +106,7 @@ class UserSettingsSerializer(SettingsSerializer): 'description', 'user', 'type', + 'units', 'choices', 'model_name', 'api_url', @@ -177,7 +192,6 @@ class NotificationMessageSerializer(InvenTreeModelSerializer): def get_target(self, obj): """Function to resolve generic object reference to target.""" - target = get_objectreference(obj, 'target_content_type', 'target_object_id') if target and 'link' not in target: @@ -285,3 +299,18 @@ class FlagSerializer(serializers.Serializer): data['conditions'] = self.instance[instance] return data + + +class CustomUnitSerializer(InvenTreeModelSerializer): + """DRF serializer for CustomUnit model.""" + + class Meta: + """Meta options for CustomUnitSerializer.""" + + model = common_models.CustomUnit + fields = [ + 'pk', + 'name', + 'symbol', + 'definition', + ] diff --git a/InvenTree/common/settings.py b/InvenTree/common/settings.py index 205f13ee00..b62f081a28 100644 --- a/InvenTree/common/settings.py +++ b/InvenTree/common/settings.py @@ -3,6 +3,7 @@ import logging from django.conf import settings +from django.core.cache import cache from moneyed import CURRENCIES @@ -11,11 +12,15 @@ logger = logging.getLogger('inventree') def currency_code_default(): """Returns the default currency code (or USD if not specified)""" - from common.models import InvenTreeSetting + cached_value = cache.get('currency_code_default', '') + + if cached_value: + return cached_value + try: - code = InvenTreeSetting.get_setting('INVENTREE_DEFAULT_CURRENCY', create=False, cache=False) + code = InvenTreeSetting.get_setting('INVENTREE_DEFAULT_CURRENCY', backup_value='', create=True, cache=True) except Exception: # pragma: no cover # Database may not yet be ready, no need to throw an error here code = '' @@ -23,6 +28,9 @@ def currency_code_default(): if code not in CURRENCIES: code = 'USD' # pragma: no cover + # Cache the value for a short amount of time + cache.set('currency_code_default', code, 30) + return code diff --git a/InvenTree/common/tasks.py b/InvenTree/common/tasks.py index 9a91d99b6e..1725dce0ce 100644 --- a/InvenTree/common/tasks.py +++ b/InvenTree/common/tasks.py @@ -93,7 +93,7 @@ def delete_old_notes_images(): # Remove any notes which point to non-existent image files for note in NotesImage.objects.all(): if not os.path.exists(note.image.path): - logger.info(f"Deleting note {note.image.path} - image file does not exist") + logger.info("Deleting note %s - image file does not exist", note.image.path) note.delete() note_classes = getModelsWithMixin(InvenTreeNotesMixin) @@ -112,7 +112,7 @@ def delete_old_notes_images(): break if not found: - logger.info(f"Deleting note {img} - image file not linked to a note") + logger.info("Deleting note %s - image file not linked to a note", img) note.delete() # Finally, remove any images in the notes dir which are not linked to a note @@ -136,5 +136,5 @@ def delete_old_notes_images(): break if not found: - logger.info(f"Deleting note {image} - image file not linked to a note") + logger.info("Deleting note %s - image file not linked to a note", image) os.remove(os.path.join(notes_dir, image)) diff --git a/InvenTree/common/tests.py b/InvenTree/common/tests.py index 4402a16933..61590411f8 100644 --- a/InvenTree/common/tests.py +++ b/InvenTree/common/tests.py @@ -5,9 +5,11 @@ import json import time from datetime import timedelta from http import HTTPStatus +from unittest import mock from django.contrib.auth import get_user_model from django.core.cache import cache +from django.core.exceptions import ValidationError from django.core.files.uploadedfile import SimpleUploadedFile from django.test import Client, TestCase from django.urls import reverse @@ -21,9 +23,10 @@ from plugin import registry from plugin.models import NotificationUserSetting from .api import WebhookView -from .models import (ColorTheme, InvenTreeSetting, InvenTreeUserSetting, - NotesImage, NotificationEntry, NotificationMessage, - ProjectCode, WebhookEndpoint, WebhookMessage) +from .models import (ColorTheme, CustomUnit, InvenTreeSetting, + InvenTreeUserSetting, NotesImage, NotificationEntry, + NotificationMessage, ProjectCode, WebhookEndpoint, + WebhookMessage) CONTENT_TYPE_JSON = 'application/json' @@ -105,6 +108,70 @@ class SettingsTest(InvenTreeTestCase): self.assertIn('PART_COPY_TESTS', result) self.assertIn('STOCK_OWNERSHIP_CONTROL', result) self.assertIn('SIGNUP_GROUP', result) + self.assertIn('SERVER_RESTART_REQUIRED', result) + + result = InvenTreeSetting.allValues(exclude_hidden=True) + self.assertNotIn('SERVER_RESTART_REQUIRED', result) + + def test_all_settings(self): + """Make sure that the all_settings function returns correctly""" + result = InvenTreeSetting.all_settings() + self.assertIn("INVENTREE_INSTANCE", result) + self.assertIsInstance(result['INVENTREE_INSTANCE'], InvenTreeSetting) + + @mock.patch("common.models.InvenTreeSetting.get_setting_definition") + def test_check_all_settings(self, get_setting_definition): + """Make sure that the check_all_settings function returns correctly""" + # define partial schema + settings_definition = { + "AB": { # key that's has not already been accessed + "required": True, + }, + "CD": { + "required": True, + "protected": True, + }, + "EF": {} + } + + def mocked(key, **kwargs): + return settings_definition.get(key, {}) + get_setting_definition.side_effect = mocked + + self.assertEqual(InvenTreeSetting.check_all_settings(settings_definition=settings_definition), (False, ["AB", "CD"])) + InvenTreeSetting.set_setting('AB', "hello", self.user) + InvenTreeSetting.set_setting('CD', "world", self.user) + self.assertEqual(InvenTreeSetting.check_all_settings(), (True, [])) + + @mock.patch("common.models.InvenTreeSetting.get_setting_definition") + def test_settings_validator(self, get_setting_definition): + """Make sure that the validator function gets called on set setting.""" + + def validator(x): + if x == "hello": + return x + + raise ValidationError(f"{x} is not valid") + + mock_validator = mock.Mock(side_effect=validator) + + # define partial schema + settings_definition = { + "AB": { # key that's has not already been accessed + "validator": mock_validator, + }, + } + + def mocked(key, **kwargs): + return settings_definition.get(key, {}) + get_setting_definition.side_effect = mocked + + InvenTreeSetting.set_setting("AB", "hello", self.user) + mock_validator.assert_called_with("hello") + + with self.assertRaises(ValidationError): + InvenTreeSetting.set_setting("AB", "world", self.user) + mock_validator.assert_called_with("world") def run_settings_check(self, key, setting): """Test that all settings are valid. @@ -201,7 +268,6 @@ class SettingsTest(InvenTreeTestCase): def test_global_setting_caching(self): """Test caching operations for the global settings class""" - key = 'PART_NAME_FORMAT' cache_key = InvenTreeSetting.create_cache_key(key) @@ -223,7 +289,6 @@ class SettingsTest(InvenTreeTestCase): def test_user_setting_caching(self): """Test caching operation for the user settings class""" - cache.clear() # Generate a number of new users @@ -268,8 +333,10 @@ class GlobalSettingsApiTest(InvenTreeAPITestCase): response = self.get(url, expected_code=200) + n_public_settings = len([k for k in InvenTreeSetting.SETTINGS.keys() if not k.startswith('_')]) + # Number of results should match the number of settings - self.assertEqual(len(response.data), len(InvenTreeSetting.SETTINGS.keys())) + self.assertEqual(len(response.data), n_public_settings) def test_company_name(self): """Test a settings object lifecycle e2e.""" @@ -541,7 +608,6 @@ class NotificationUserSettingsApiTest(InvenTreeAPITestCase): def test_setting(self): """Test the string name for NotificationUserSetting.""" - NotificationUserSetting.set_setting('NOTIFICATION_METHOD_MAIL', True, change_user=self.user, user=self.user) test_setting = NotificationUserSetting.get_setting_object('NOTIFICATION_METHOD_MAIL', user=self.user) self.assertEqual(str(test_setting), 'NOTIFICATION_METHOD_MAIL (for testuser): True') @@ -754,7 +820,6 @@ class NotificationTest(InvenTreeAPITestCase): def test_api_list(self): """Test list URL.""" - url = reverse('api-notifications-list') self.get(url, expected_code=200) @@ -774,7 +839,6 @@ class NotificationTest(InvenTreeAPITestCase): def test_bulk_delete(self): """Tests for bulk deletion of user notifications""" - from error_report.models import Error # Create some notification messages by throwing errors @@ -843,7 +907,7 @@ class CommonTest(InvenTreeAPITestCase): from plugin import registry # set flag true - common.models.InvenTreeSetting.set_setting('SERVER_RESTART_REQUIRED', False, None) + common.models.InvenTreeSetting.set_setting('SERVER_RESTART_REQUIRED', True, None) # reload the app registry.reload_plugins() @@ -950,7 +1014,6 @@ class CurrencyAPITests(InvenTreeAPITestCase): def test_exchange_endpoint(self): """Test that the currency exchange endpoint works as expected""" - response = self.get(reverse('api-currency-exchange'), expected_code=200) self.assertIn('base_currency', response.data) @@ -958,7 +1021,6 @@ class CurrencyAPITests(InvenTreeAPITestCase): def test_refresh_endpoint(self): """Call the 'refresh currencies' endpoint""" - from djmoney.contrib.exchange.models import Rate # Delete any existing exchange rate data @@ -984,7 +1046,6 @@ class NotesImageTest(InvenTreeAPITestCase): def test_invalid_files(self): """Test that invalid files are rejected.""" - n = NotesImage.objects.count() # Test upload of a simple text file @@ -1016,7 +1077,6 @@ class NotesImageTest(InvenTreeAPITestCase): def test_valid_image(self): """Test upload of a valid image file""" - n = NotesImage.objects.count() # Construct a simple image file @@ -1026,7 +1086,7 @@ class NotesImageTest(InvenTreeAPITestCase): image.save(output, format='PNG') contents = output.getvalue() - response = self.post( + self.post( reverse('api-notes-image-list'), data={ 'image': SimpleUploadedFile('test.png', contents, content_type='image/png'), @@ -1035,8 +1095,6 @@ class NotesImageTest(InvenTreeAPITestCase): expected_code=201 ) - print(response.data) - # Check that a new file has been created self.assertEqual(NotesImage.objects.count(), n + 1) @@ -1065,13 +1123,11 @@ class ProjectCodesTest(InvenTreeAPITestCase): def test_list(self): """Test that the list endpoint works as expected""" - response = self.get(self.url, expected_code=200) self.assertEqual(len(response.data), ProjectCode.objects.count()) def test_delete(self): """Test we can delete a project code via the API""" - n = ProjectCode.objects.count() # Get the first project code @@ -1088,7 +1144,6 @@ class ProjectCodesTest(InvenTreeAPITestCase): def test_duplicate_code(self): """Test that we cannot create two project codes with the same code""" - # Create a new project code response = self.post( self.url, @@ -1103,7 +1158,6 @@ class ProjectCodesTest(InvenTreeAPITestCase): def test_write_access(self): """Test that non-staff users have read-only access""" - # By default user has staff access, can create a new project code response = self.post( self.url, @@ -1149,3 +1203,87 @@ class ProjectCodesTest(InvenTreeAPITestCase): }, expected_code=403 ) + + +class CustomUnitAPITest(InvenTreeAPITestCase): + """Unit tests for the CustomUnit API""" + + @property + def url(self): + """Return the API endpoint for the CustomUnit list""" + return reverse('api-custom-unit-list') + + @classmethod + def setUpTestData(cls): + """Construct some initial test fixture data""" + super().setUpTestData() + + units = [ + CustomUnit(name='metres_per_amp', definition='meter / ampere', symbol='m/A'), + CustomUnit(name='hectares_per_second', definition='hectares per second', symbol='ha/s'), + ] + + CustomUnit.objects.bulk_create(units) + + def test_list(self): + """Test API list functionality""" + response = self.get(self.url, expected_code=200) + self.assertEqual(len(response.data), CustomUnit.objects.count()) + + def test_edit(self): + """Test edit permissions for CustomUnit model""" + unit = CustomUnit.objects.first() + + # Try to edit without permission + self.user.is_staff = False + self.user.save() + + self.patch( + reverse('api-custom-unit-detail', kwargs={'pk': unit.pk}), + { + 'name': 'new_unit_name', + }, + expected_code=403 + ) + + # Ok, what if we have permission? + self.user.is_staff = True + self.user.save() + + self.patch( + reverse('api-custom-unit-detail', kwargs={'pk': unit.pk}), + { + 'name': 'new_unit_name', + }, + # expected_code=200 + ) + + unit.refresh_from_db() + self.assertEqual(unit.name, 'new_unit_name') + + def test_validation(self): + """Test that validation works as expected""" + unit = CustomUnit.objects.first() + + self.user.is_staff = True + self.user.save() + + # Test invalid 'name' values (must be valid identifier) + invalid_name_values = [ + '1', + '1abc', + 'abc def', + 'abc-def', + 'abc.def', + ] + + url = reverse('api-custom-unit-detail', kwargs={'pk': unit.pk}) + + for name in invalid_name_values: + self.patch( + url, + { + 'name': name, + }, + expected_code=400 + ) diff --git a/InvenTree/common/views.py b/InvenTree/common/views.py index 62e8011141..2eeb48b5df 100644 --- a/InvenTree/common/views.py +++ b/InvenTree/common/views.py @@ -480,8 +480,7 @@ class FileManagementAjaxView(AjaxView): self.render_done(form) data = {'form_valid': True, 'success': _('Parts imported')} return self.renderJsonResponse(request, data=data) - else: - self.storage.current_step = self.steps.next + self.storage.current_step = self.steps.next return self.renderJsonResponse(request, data={'form_valid': None}) diff --git a/InvenTree/company/admin.py b/InvenTree/company/admin.py index 9bc5562aaa..5cf7bbda87 100644 --- a/InvenTree/company/admin.py +++ b/InvenTree/company/admin.py @@ -9,9 +9,9 @@ from import_export.fields import Field from InvenTree.admin import InvenTreeResource from part.models import Part -from .models import (Company, ManufacturerPart, ManufacturerPartAttachment, - ManufacturerPartParameter, SupplierPart, - SupplierPriceBreak) +from .models import (Address, Company, Contact, ManufacturerPart, + ManufacturerPartAttachment, ManufacturerPartParameter, + SupplierPart, SupplierPriceBreak) class CompanyResource(InvenTreeResource): @@ -187,6 +187,60 @@ class SupplierPriceBreakAdmin(ImportExportModelAdmin): autocomplete_fields = ('part',) +class AddressResource(InvenTreeResource): + """Class for managing Address data import/export""" + + class Meta: + """Metaclass defining extra options""" + model = Address + skip_unchanged = True + report_skipped = False + clean_model_instances = True + + company = Field(attribute='company', widget=widgets.ForeignKeyWidget(Company)) + + +class AddressAdmin(ImportExportModelAdmin): + """Admin class for the Address model""" + + resource_class = AddressResource + + list_display = ('company', 'line1', 'postal_code', 'country') + + search_fields = [ + 'company', + 'country', + 'postal_code', + ] + + +class ContactResource(InvenTreeResource): + """Class for managing Contact data import/export""" + + class Meta: + """Metaclass defining extra options""" + model = Contact + skip_unchanged = True + report_skipped = False + clean_model_instances = True + + company = Field(attribute='company', widget=widgets.ForeignKeyWidget(Company)) + + +class ContactAdmin(ImportExportModelAdmin): + """Admin class for the Contact model""" + + resource_class = ContactResource + + list_display = ('company', 'name', 'role', 'email', 'phone') + + search_fields = [ + 'company', + 'name', + 'email', + ] + + admin.site.register(Company, CompanyAdmin) admin.site.register(SupplierPart, SupplierPartAdmin) admin.site.register(SupplierPriceBreak, SupplierPriceBreakAdmin) @@ -194,3 +248,6 @@ admin.site.register(SupplierPriceBreak, SupplierPriceBreakAdmin) admin.site.register(ManufacturerPart, ManufacturerPartAdmin) admin.site.register(ManufacturerPartAttachment, ManufacturerPartAttachmentAdmin) admin.site.register(ManufacturerPartParameter, ManufacturerPartParameterAdmin) + +admin.site.register(Address, AddressAdmin) +admin.site.register(Contact, ContactAdmin) diff --git a/InvenTree/company/api.py b/InvenTree/company/api.py index 8137f7a6a8..88f8a875ac 100644 --- a/InvenTree/company/api.py +++ b/InvenTree/company/api.py @@ -4,7 +4,6 @@ from django.db.models import Q from django.urls import include, path, re_path from django_filters import rest_framework as rest_filters -from django_filters.rest_framework import DjangoFilterBackend import part.models from InvenTree.api import (AttachmentMixin, ListCreateDestroyAPIView, @@ -14,11 +13,12 @@ from InvenTree.filters import (ORDER_FILTER, SEARCH_ORDER_FILTER, from InvenTree.helpers import str2bool from InvenTree.mixins import ListCreateAPI, RetrieveUpdateDestroyAPI -from .models import (Company, CompanyAttachment, Contact, ManufacturerPart, - ManufacturerPartAttachment, ManufacturerPartParameter, - SupplierPart, SupplierPriceBreak) -from .serializers import (CompanyAttachmentSerializer, CompanySerializer, - ContactSerializer, +from .models import (Address, Company, CompanyAttachment, Contact, + ManufacturerPart, ManufacturerPartAttachment, + ManufacturerPartParameter, SupplierPart, + SupplierPriceBreak) +from .serializers import (AddressSerializer, CompanyAttachmentSerializer, + CompanySerializer, ContactSerializer, ManufacturerPartAttachmentSerializer, ManufacturerPartParameterSerializer, ManufacturerPartSerializer, SupplierPartSerializer, @@ -88,10 +88,6 @@ class CompanyAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): queryset = CompanyAttachment.objects.all() serializer_class = CompanyAttachmentSerializer - filter_backends = [ - DjangoFilterBackend, - ] - filterset_fields = [ 'company', ] @@ -135,6 +131,32 @@ class ContactDetail(RetrieveUpdateDestroyAPI): serializer_class = ContactSerializer +class AddressList(ListCreateDestroyAPIView): + """API endpoint for list view of Address model""" + + queryset = Address.objects.all() + serializer_class = AddressSerializer + + filter_backends = SEARCH_ORDER_FILTER + + filterset_fields = [ + 'company', + ] + + ordering_fields = [ + 'title', + ] + + ordering = 'title' + + +class AddressDetail(RetrieveUpdateDestroyAPI): + """API endpoint for a single Address object""" + + queryset = Address.objects.all() + serializer_class = AddressSerializer + + class ManufacturerPartFilter(rest_filters.FilterSet): """Custom API filters for the ManufacturerPart list endpoint.""" @@ -219,10 +241,6 @@ class ManufacturerPartAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): queryset = ManufacturerPartAttachment.objects.all() serializer_class = ManufacturerPartAttachmentSerializer - filter_backends = [ - DjangoFilterBackend, - ] - filterset_fields = [ 'manufacturer_part', ] @@ -364,7 +382,6 @@ class SupplierPartList(ListCreateDestroyAPIView): def get_serializer(self, *args, **kwargs): """Return serializer instance for this endpoint""" - # Do we wish to include extra detail? try: params = self.request.query_params @@ -471,7 +488,6 @@ class SupplierPriceBreakList(ListCreateAPI): def get_serializer(self, *args, **kwargs): """Return serializer instance for this endpoint""" - try: params = self.request.query_params @@ -568,6 +584,11 @@ company_api_urls = [ re_path(r'^.*$', ContactList.as_view(), name='api-contact-list'), ])), + re_path(r'^address/', include([ + path('/', AddressDetail.as_view(), name='api-address-detail'), + re_path(r'^.*$', AddressList.as_view(), name='api-address-list'), + ])), + re_path(r'^.*$', CompanyList.as_view(), name='api-company-list'), ] diff --git a/InvenTree/company/migrations/0063_auto_20230502_1956.py b/InvenTree/company/migrations/0063_auto_20230502_1956.py new file mode 100644 index 0000000000..c0cce4e188 --- /dev/null +++ b/InvenTree/company/migrations/0063_auto_20230502_1956.py @@ -0,0 +1,33 @@ +# Generated by Django 3.2.18 on 2023-05-02 19:56 + +import InvenTree.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('company', '0062_contact_metadata'), + ] + + operations = [ + migrations.CreateModel( + name='Address', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(help_text='Title describing the address entry', max_length=100, verbose_name='Address title')), + ('primary', models.BooleanField(default=False, help_text='Set as primary address', verbose_name='Primary address')), + ('line1', models.CharField(blank=True, help_text='Address line 1', max_length=50, verbose_name='Line 1')), + ('line2', models.CharField(blank=True, help_text='Address line 2', max_length=50, verbose_name='Line 2')), + ('postal_code', models.CharField(blank=True, help_text='Postal code', max_length=10, verbose_name='Postal code')), + ('postal_city', models.CharField(blank=True, help_text='Postal code city', max_length=50, verbose_name='City')), + ('province', models.CharField(blank=True, help_text='State or province', max_length=50, verbose_name='State/Province')), + ('country', models.CharField(blank=True, help_text='Address country', max_length=50, verbose_name='Country')), + ('shipping_notes', models.CharField(blank=True, help_text='Notes for shipping courier', max_length=100, verbose_name='Courier shipping notes')), + ('internal_shipping_notes', models.CharField(blank=True, help_text='Shipping notes for internal use', max_length=100, verbose_name='Internal shipping notes')), + ('link', InvenTree.fields.InvenTreeURLField(blank=True, help_text='Link to address information (external)', verbose_name='Link')), + ('company', models.ForeignKey(help_text='Select company', on_delete=django.db.models.deletion.CASCADE, related_name='addresses', to='company.company', verbose_name='Company')), + ], + ), + ] diff --git a/InvenTree/company/migrations/0064_move_address_field_to_address_model.py b/InvenTree/company/migrations/0064_move_address_field_to_address_model.py new file mode 100644 index 0000000000..76d7d3b478 --- /dev/null +++ b/InvenTree/company/migrations/0064_move_address_field_to_address_model.py @@ -0,0 +1,37 @@ +# Generated by Django 3.2.18 on 2023-05-02 20:41 + +from django.db import migrations + +def move_address_to_new_model(apps, schema_editor): + Company = apps.get_model('company', 'Company') + Address = apps.get_model('company', 'Address') + for company in Company.objects.all(): + if company.address != '': + # Address field might exceed length of new model fields + l1 = company.address[:50] + l2 = company.address[50:100] + Address.objects.create(company=company, + title="Primary", + primary=True, + line1=l1, + line2=l2) + company.address = '' + company.save() + +def revert_address_move(apps, schema_editor): + Address = apps.get_model('company', 'Address') + for address in Address.objects.all(): + address.company.address = f'{address.line1}{address.line2}' + address.company.save() + address.delete() + + +class Migration(migrations.Migration): + + dependencies = [ + ('company', '0063_auto_20230502_1956'), + ] + + operations = [ + migrations.RunPython(move_address_to_new_model, reverse_code=revert_address_move) + ] diff --git a/InvenTree/company/migrations/0065_remove_company_address.py b/InvenTree/company/migrations/0065_remove_company_address.py new file mode 100644 index 0000000000..4beaeca792 --- /dev/null +++ b/InvenTree/company/migrations/0065_remove_company_address.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.18 on 2023-05-13 14:53 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('company', '0064_move_address_field_to_address_model'), + ] + + operations = [ + migrations.RemoveField( + model_name='company', + name='address', + ), + ] diff --git a/InvenTree/company/migrations/0066_auto_20230616_2059.py b/InvenTree/company/migrations/0066_auto_20230616_2059.py new file mode 100644 index 0000000000..19ce798301 --- /dev/null +++ b/InvenTree/company/migrations/0066_auto_20230616_2059.py @@ -0,0 +1,22 @@ +# Generated by Django 3.2.19 on 2023-06-16 20:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('company', '0065_remove_company_address'), + ] + + operations = [ + migrations.AlterModelOptions( + name='address', + options={'verbose_name_plural': 'Addresses'}, + ), + migrations.AlterField( + model_name='address', + name='postal_city', + field=models.CharField(blank=True, help_text='Postal code city/region', max_length=50, verbose_name='City/Region'), + ), + ] diff --git a/InvenTree/company/migrations/0067_alter_supplierpricebreak_price_currency.py b/InvenTree/company/migrations/0067_alter_supplierpricebreak_price_currency.py new file mode 100644 index 0000000000..4c18def143 --- /dev/null +++ b/InvenTree/company/migrations/0067_alter_supplierpricebreak_price_currency.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.22 on 2023-10-24 16:44 + +from django.db import migrations +import djmoney.models.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('company', '0066_auto_20230616_2059'), + ] + + operations = [ + migrations.AlterField( + model_name='supplierpricebreak', + name='price_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + ] diff --git a/InvenTree/company/models.py b/InvenTree/company/models.py index c41fa39a6f..f5eef23b3a 100644 --- a/InvenTree/company/models.py +++ b/InvenTree/company/models.py @@ -50,7 +50,7 @@ def rename_company_image(instance, filename): else: ext = '' - fn = 'company_{pk}_img'.format(pk=instance.pk) + fn = f'company_{instance.pk}_img' if ext: fn += '.' + ext @@ -72,7 +72,7 @@ class Company(InvenTreeNotesMixin, MetadataMixin, models.Model): name: Brief name of the company description: Longer form description website: URL for the company website - address: Postal address + address: One-line string representation of primary address phone: contact phone number email: contact email address link: Secondary URL e.g. for link to internal Wiki page @@ -114,10 +114,6 @@ class Company(InvenTreeNotesMixin, MetadataMixin, models.Model): help_text=_('Company website URL') ) - address = models.CharField(max_length=200, - verbose_name=_('Address'), - blank=True, help_text=_('Company address')) - phone = models.CharField(max_length=50, verbose_name=_('Phone number'), blank=True, help_text=_('Contact phone number')) @@ -158,6 +154,21 @@ class Company(InvenTreeNotesMixin, MetadataMixin, models.Model): validators=[InvenTree.validators.validate_currency_code], ) + @property + def address(self): + """Return the string representation for the primary address + + This property exists for backwards compatibility + """ + addr = self.primary_address + + return str(addr) if addr is not None else None + + @property + def primary_address(self): + """Returns address object of primary address. Parsed by serializer""" + return Address.objects.filter(company=self.id).filter(primary=True).first() + @property def currency_code(self): """Return the currency code associated with this company. @@ -174,7 +185,7 @@ class Company(InvenTreeNotesMixin, MetadataMixin, models.Model): def __str__(self): """Get string representation of a Company.""" - return "{n} - {d}".format(n=self.name, d=self.description) + return f"{self.name} - {self.description}" def get_absolute_url(self): """Get the web URL for the detail view for this Company.""" @@ -184,15 +195,13 @@ class Company(InvenTreeNotesMixin, MetadataMixin, models.Model): """Return the URL of the image for this company.""" if self.image: return InvenTree.helpers.getMediaUrl(self.image.url) - else: - return InvenTree.helpers.getBlankImage() + return InvenTree.helpers.getBlankImage() def get_thumbnail_url(self): """Return the URL for the thumbnail image for this Company.""" if self.image: return InvenTree.helpers.getMediaUrl(self.image.thumbnail.url) - else: - return InvenTree.helpers.getBlankThumbnail() + return InvenTree.helpers.getBlankThumbnail() @property def parts(self): @@ -253,6 +262,131 @@ class Contact(MetadataMixin, models.Model): role = models.CharField(max_length=100, blank=True) +class Address(models.Model): + """An address represents a physical location where the company is located. It is possible for a company to have multiple locations + + Attributes: + company: Company link for this address + title: Human-readable name for the address + primary: True if this is the company's primary address + line1: First line of address + line2: Optional line two for address + postal_code: Postal code, city and state + country: Location country + shipping_notes: Notes for couriers transporting shipments to this address + internal_shipping_notes: Internal notes regarding shipping to this address + link: External link to additional address information + """ + + class Meta: + """Metaclass defines extra model options""" + verbose_name_plural = "Addresses" + + def __init__(self, *args, **kwargs): + """Custom init function""" + super().__init__(*args, **kwargs) + + def __str__(self): + """Defines string representation of address to supple a one-line to API calls""" + available_lines = [self.line1, + self.line2, + self.postal_code, + self.postal_city, + self.province, + self.country + ] + + populated_lines = [] + for line in available_lines: + if len(line) > 0: + populated_lines.append(line) + + return ", ".join(populated_lines) + + def save(self, *args, **kwargs): + """Run checks when saving an address: + + - If this address is marked as "primary", ensure that all other addresses for this company are marked as non-primary + """ + others = list(Address.objects.filter(company=self.company).exclude(pk=self.pk).all()) + + # If this is the *only* address for this company, make it the primary one + if len(others) == 0: + self.primary = True + + super().save(*args, **kwargs) + + # Once this address is saved, check others + if self.primary: + for addr in others: + if addr.primary: + addr.primary = False + addr.save() + + @staticmethod + def get_api_url(): + """Return the API URL associated with the Contcat model""" + return reverse('api-address-list') + + company = models.ForeignKey(Company, related_name='addresses', + on_delete=models.CASCADE, + verbose_name=_('Company'), + help_text=_('Select company')) + + title = models.CharField(max_length=100, + verbose_name=_('Address title'), + help_text=_('Title describing the address entry'), + blank=False) + + primary = models.BooleanField(default=False, + verbose_name=_('Primary address'), + help_text=_('Set as primary address')) + + line1 = models.CharField(max_length=50, + verbose_name=_('Line 1'), + help_text=_('Address line 1'), + blank=True) + + line2 = models.CharField(max_length=50, + verbose_name=_('Line 2'), + help_text=_('Address line 2'), + blank=True) + + postal_code = models.CharField(max_length=10, + verbose_name=_('Postal code'), + help_text=_('Postal code'), + blank=True) + + postal_city = models.CharField(max_length=50, + verbose_name=_('City/Region'), + help_text=_('Postal code city/region'), + blank=True) + + province = models.CharField(max_length=50, + verbose_name=_('State/Province'), + help_text=_('State or province'), + blank=True) + + country = models.CharField(max_length=50, + verbose_name=_('Country'), + help_text=_('Address country'), + blank=True) + + shipping_notes = models.CharField(max_length=100, + verbose_name=_('Courier shipping notes'), + help_text=_('Notes for shipping courier'), + blank=True) + + internal_shipping_notes = models.CharField(max_length=100, + verbose_name=_('Internal shipping notes'), + help_text=_('Shipping notes for internal use'), + blank=True) + + link = InvenTreeURLField(blank=True, + verbose_name=_('Link'), + help_text=_('Link to address information (external)')) + + class ManufacturerPart(MetadataMixin, models.Model): """Represents a unique part as provided by a Manufacturer Each ManufacturerPart is identified by a MPN (Manufacturer Part Number) Each ManufacturerPart is also linked to a Part object. A Part may be available from multiple manufacturers. @@ -489,11 +623,12 @@ class SupplierPart(MetadataMixin, InvenTreeBarcodeMixin, common.models.MetaMixin try: # Attempt conversion to specified unit native_value = InvenTree.conversion.convert_physical_value( - self.pack_quantity, self.part.units + self.pack_quantity, self.part.units, + strip_units=False ) # If part units are not provided, value must be dimensionless - if not self.part.units and native_value.units not in ['', 'dimensionless']: + if not self.part.units and not InvenTree.conversion.is_dimensionless(native_value): raise ValidationError({ 'pack_quantity': _("Pack units must be compatible with the base part units") }) @@ -615,7 +750,6 @@ class SupplierPart(MetadataMixin, InvenTreeBarcodeMixin, common.models.MetaMixin def base_quantity(self, quantity=1) -> Decimal: """Calculate the base unit quantiy for a given quantity.""" - q = Decimal(quantity) * Decimal(self.pack_quantity_native) q = round(q, 10).normalize() @@ -640,7 +774,6 @@ class SupplierPart(MetadataMixin, InvenTreeBarcodeMixin, common.models.MetaMixin def update_available_quantity(self, quantity): """Update the available quantity for this SupplierPart""" - self.available = quantity self.availability_updated = datetime.now() self.save() @@ -714,8 +847,7 @@ class SupplierPart(MetadataMixin, InvenTreeBarcodeMixin, common.models.MetaMixin if q is None or r is None: return 0 - else: - return max(q - r, 0) + return max(q - r, 0) def purchase_orders(self): """Returns a list of purchase orders relating to this supplier part.""" @@ -778,7 +910,6 @@ class SupplierPriceBreak(common.models.PriceBreak): @receiver(post_save, sender=SupplierPriceBreak, dispatch_uid='post_save_supplier_price_break') def after_save_supplier_price(sender, instance, created, **kwargs): """Callback function when a SupplierPriceBreak is created or updated""" - if InvenTree.ready.canAppAccessDatabase() and not InvenTree.ready.isImportingData(): if instance.part and instance.part.part: @@ -788,7 +919,6 @@ def after_save_supplier_price(sender, instance, created, **kwargs): @receiver(post_delete, sender=SupplierPriceBreak, dispatch_uid='post_delete_supplier_price_break') def after_delete_supplier_price(sender, instance, **kwargs): """Callback function when a SupplierPriceBreak is deleted""" - if InvenTree.ready.canAppAccessDatabase() and not InvenTree.ready.isImportingData(): if instance.part and instance.part.part: diff --git a/InvenTree/company/serializers.py b/InvenTree/company/serializers.py index f4c04fde22..860818f8dd 100644 --- a/InvenTree/company/serializers.py +++ b/InvenTree/company/serializers.py @@ -20,9 +20,10 @@ from InvenTree.serializers import (InvenTreeAttachmentSerializer, RemoteImageMixin) from part.serializers import PartBriefSerializer -from .models import (Company, CompanyAttachment, Contact, ManufacturerPart, - ManufacturerPartAttachment, ManufacturerPartParameter, - SupplierPart, SupplierPriceBreak) +from .models import (Address, Company, CompanyAttachment, Contact, + ManufacturerPart, ManufacturerPartAttachment, + ManufacturerPartParameter, SupplierPart, + SupplierPriceBreak) class CompanyBriefSerializer(InvenTreeModelSerializer): @@ -45,6 +46,50 @@ class CompanyBriefSerializer(InvenTreeModelSerializer): image = serializers.CharField(source='get_thumbnail_url', read_only=True) +class AddressSerializer(InvenTreeModelSerializer): + """Serializer for the Address Model""" + + class Meta: + """Metaclass options""" + + model = Address + fields = [ + 'pk', + 'company', + 'title', + 'primary', + 'line1', + 'line2', + 'postal_code', + 'postal_city', + 'province', + 'country', + 'shipping_notes', + 'internal_shipping_notes', + 'link', + ] + + +class AddressBriefSerializer(InvenTreeModelSerializer): + """Serializer for Address Model (limited)""" + + class Meta: + """Metaclass options""" + + model = Address + fields = [ + 'pk', + 'line1', + 'line2', + 'postal_code', + 'postal_city', + 'province', + 'country', + 'shipping_notes', + 'internal_shipping_notes' + ] + + class CompanySerializer(RemoteImageMixin, InvenTreeModelSerializer): """Serializer for Company object (full detail)""" @@ -73,11 +118,13 @@ class CompanySerializer(RemoteImageMixin, InvenTreeModelSerializer): 'parts_supplied', 'parts_manufactured', 'remote_image', + 'address_count', + 'primary_address' ] @staticmethod def annotate_queryset(queryset): - """Annoate the supplied queryset with aggregated information""" + """Annotate the supplied queryset with aggregated information""" # Add count of parts manufactured queryset = queryset.annotate( parts_manufactured=SubqueryCount('manufactured_parts') @@ -87,14 +134,21 @@ class CompanySerializer(RemoteImageMixin, InvenTreeModelSerializer): parts_supplied=SubqueryCount('supplied_parts') ) + queryset = queryset.annotate( + address_count=SubqueryCount('addresses') + ) + return queryset + primary_address = AddressSerializer(required=False, allow_null=True, read_only=True) + url = serializers.CharField(source='get_absolute_url', read_only=True) image = InvenTreeImageSerializerField(required=False, allow_null=True) parts_supplied = serializers.IntegerField(read_only=True) parts_manufactured = serializers.IntegerField(read_only=True) + address_count = serializers.IntegerField(read_only=True) currency = InvenTreeCurrencySerializer(help_text=_('Default currency used for this supplier'), required=True) @@ -288,7 +342,6 @@ class SupplierPartSerializer(InvenTreeTagModelSerializer): def __init__(self, *args, **kwargs): """Initialize this serializer with extra detail fields as required""" - # Check if 'available' quantity was supplied self.has_available_quantity = 'available' in kwargs.get('data', {}) @@ -319,6 +372,7 @@ class SupplierPartSerializer(InvenTreeTagModelSerializer): # Annotated field showing total in-stock quantity in_stock = serializers.FloatField(read_only=True) + available = serializers.FloatField(required=False) part_detail = PartBriefSerializer(source='part', many=False, read_only=True) @@ -348,7 +402,6 @@ class SupplierPartSerializer(InvenTreeTagModelSerializer): Fields: in_stock: Current stock quantity for each SupplierPart """ - queryset = queryset.annotate( in_stock=part.filters.annotate_total_stock() ) @@ -357,7 +410,6 @@ class SupplierPartSerializer(InvenTreeTagModelSerializer): def update(self, supplier_part, data): """Custom update functionality for the serializer""" - available = data.pop('available', None) response = super().update(supplier_part, data) @@ -369,7 +421,6 @@ class SupplierPartSerializer(InvenTreeTagModelSerializer): def create(self, validated_data): """Extract manufacturer data and process ManufacturerPart.""" - # Extract 'available' quantity from the serializer available = validated_data.pop('available', None) @@ -414,7 +465,6 @@ class SupplierPriceBreakSerializer(InvenTreeModelSerializer): def __init__(self, *args, **kwargs): """Initialize this serializer with extra fields as required""" - supplier_detail = kwargs.pop('supplier_detail', False) part_detail = kwargs.pop('part_detail', False) diff --git a/InvenTree/company/templates/company/company_base.html b/InvenTree/company/templates/company/company_base.html index 7953635671..238c53847e 100644 --- a/InvenTree/company/templates/company/company_base.html +++ b/InvenTree/company/templates/company/company_base.html @@ -14,10 +14,9 @@ {% block actions %} -{% if user.is_staff and perms.company.change_company %} -{% url 'admin:company_company_change' company.pk as url %} +{% admin_url user "company.company" company.pk as url %} {% include "admin_button.html" with url=url %} -{% endif %} + {% if company.is_supplier and roles.purchase_order.add %} - - - {% include "filter_list.html" with id="supplier-part" %} - - + {% include "filter_list.html" with id="supplier-part" %} {% endif %} @@ -73,29 +52,7 @@
{% if roles.purchase_order.change %}
-
-
-
- - -
- {% include "filter_list.html" with id="manufacturer-part" %} -
-
+ {% include "filter_list.html" with id="manufacturer-part" %}
{% endif %}
@@ -128,9 +85,7 @@
-
- {% include "filter_list.html" with id="purchaseorder" %} -
+ {% include "filter_list.html" with id="purchaseorder" %}
@@ -156,9 +111,7 @@
-
- {% include "filter_list.html" with id="salesorder" %} -
+ {% include "filter_list.html" with id="salesorder" %}
@@ -174,9 +127,7 @@
-
- {% include "filter_list.html" with id="customerstock" %} -
+ {% include "filter_list.html" with id="customerstock" %}
@@ -201,11 +152,7 @@
-
-
- {% include "filter_list.html" with id="returnorder" %} -
-
+ {% include "filter_list.html" with id="returnorder" %}
@@ -246,15 +193,36 @@
-
- {% include "filter_list.html" with id="contacts" %} -
+ {% include "filter_list.html" with id="contacts" %}
+
+
+
+

{% trans "Company addresses" %}

+ {% include "spacer.html" %} +
+ {% if roles.purchase_order.add or roles.sales_order.add %} + + {% endif %} +
+
+
+
+
+ {% include "filter_list.html" with id="addresses" %} +
+ +
+
+
+
@@ -309,6 +277,26 @@ }); }); + // Callback function for when the 'addresses' panel is loaded + onPanelLoad('company-addresses', function(){ + loadAddressTable('#addresses-table', { + params: { + company: {{ company.pk }}, + }, + allow_edit: {% js_bool roles.purchase_order.change %} || {% js_bool roles.sales_order.change %}, + allow_delete: {% js_bool roles.purchase_order.delete %} || {% js_bool roles.sales_order.delete %}, + }); + + $('#new-address').click(function() { + createAddress({ + company: {{ company.pk }}, + onSuccess: function() { + $('#addresses-table').bootstrapTable('refresh'); + } + }) + }) + }) + // Callback function when the 'notes' panel is loaded onPanelLoad('company-notes', function() { @@ -331,9 +319,6 @@ supplier_part_detail: true, location_detail: true, }, - buttons: [ - '#stock-options', - ], filterKey: "companystock", }); }); @@ -453,32 +438,6 @@ } ); - $("#multi-manufacturer-part-delete").click(function() { - var selections = getTableData('#manufacturer-part-table'); - - deleteManufacturerParts(selections, { - success: function() { - $("#manufacturer-part-table").bootstrapTable('refresh'); - } - }); - }); - - $("#multi-manufacturer-part-order").click(function() { - var selections = getTableData('#manufacturer-part-table'); - - var parts = []; - - selections.forEach(function(item) { - var part = item.part_detail; - part.manufacturer_part = item.pk; - parts.push(part); - }); - - orderParts( - parts, - ); - }); - {% endif %} {% if company.is_supplier %} @@ -507,37 +466,6 @@ }, } ); - - $("#multi-supplier-part-delete").click(function() { - - var selections = getTableData("#supplier-part-table"); - - deleteSupplierParts(selections, { - success: function() { - $('#supplier-part-table').bootstrapTable('refresh'); - } - }); - }); - - $("#multi-supplier-part-order").click(function() { - - var selections = getTableData('#supplier-part-table'); - - var parts = []; - - selections.forEach(function(item) { - var part = item.part_detail; - parts.push(part); - }); - - orderParts( - parts, - { - supplier: {{ company.pk }}, - } - ); - }); - {% endif %} enableSidebar('company'); diff --git a/InvenTree/company/templates/company/index.html b/InvenTree/company/templates/company/index.html index b255137114..db7c505f73 100644 --- a/InvenTree/company/templates/company/index.html +++ b/InvenTree/company/templates/company/index.html @@ -5,7 +5,7 @@ {% load inventree_extras %} {% block page_title %} -{% inventree_title %} | {% trans "Supplier List" %} +{% inventree_title %}{% if title %} | {{ title }}{% endif %} {% endblock page_title %} {% block heading %} @@ -24,11 +24,11 @@
-
+
{% include "filter_list.html" with id='company' %}
- +
diff --git a/InvenTree/company/templates/company/manufacturer_part.html b/InvenTree/company/templates/company/manufacturer_part.html index c26e828558..1987c1d204 100644 --- a/InvenTree/company/templates/company/manufacturer_part.html +++ b/InvenTree/company/templates/company/manufacturer_part.html @@ -26,10 +26,10 @@ {% endblock heading %} {% block actions %} -{% if user.is_staff and perms.company.change_company %} -{% url 'admin:company_supplierpart_change' part.pk as url %} + +{% admin_url user 'company.manufacturerpart' part.pk as url %} {% include "admin_button.html" with url=url %} -{% endif %} + {% if roles.purchase_order.change %} {% if roles.purchase_order.add and part.part.purchaseable %}
-
-
- - -
- {% include "filter_list.html" with id='supplier-part' %} -
+ {% include "filter_list.html" with id='supplier-part' %}
@@ -174,17 +164,7 @@ src="{% static 'img/blank_image.png' %}"
-
-
- - -
- {% include "filter_list.html" with id="manufacturer-part-parameters" %} -
+ {% include "filter_list.html" with id="manufacturer-part-parameters" %}
@@ -240,26 +220,6 @@ $('#supplier-create').click(function () { }); }); -$("#supplier-part-delete").click(function() { - - var selections = getTableData('#supplier-table'); - - deleteSupplierParts(selections, { - success: reloadSupplierPartTable, - }); -}); - -$("#multi-parameter-delete").click(function() { - - var selections = getTableData('#parameter-table'); - - deleteManufacturerPartParameters(selections, { - success: function() { - $('#parameter-table').bootstrapTable('refresh'); - } - }); -}); - loadSupplierPartTable( "#supplier-table", "{% url 'api-supplier-part-list' %}", diff --git a/InvenTree/company/templates/company/sidebar.html b/InvenTree/company/templates/company/sidebar.html index 7fe616b7d1..8e3078f342 100644 --- a/InvenTree/company/templates/company/sidebar.html +++ b/InvenTree/company/templates/company/sidebar.html @@ -32,6 +32,8 @@ {% endif %} {% trans "Contacts" as text %} {% include "sidebar_item.html" with label='company-contacts' text=text icon="fa-users" %} +{% trans "Addresses" as text %} +{% include "sidebar_item.html" with label='company-addresses' text=text icon="fa-map-marked" %} {% trans "Notes" as text %} {% include "sidebar_item.html" with label='company-notes' text=text icon="fa-clipboard" %} {% trans "Attachments" as text %} diff --git a/InvenTree/company/templates/company/supplier_part.html b/InvenTree/company/templates/company/supplier_part.html index 4fc29abe38..eeb158653e 100644 --- a/InvenTree/company/templates/company/supplier_part.html +++ b/InvenTree/company/templates/company/supplier_part.html @@ -26,10 +26,9 @@ {% endblock heading %} {% block actions %} -{% if user.is_staff and perms.company.change_company %} -{% url 'admin:company_supplierpart_change' part.pk as url %} +{% admin_url user "company.supplierpart" part.pk as url %} {% include "admin_button.html" with url=url %} -{% endif %} + {% if barcodes %}
@@ -193,7 +192,7 @@ src="{% static 'img/blank_image.png' %}" {% trans "External Link" %} - {% include 'clip_link.html' with link=part.link %} + {% include 'clip_link.html' with link=part.link new_window=True %} {% endif %} @@ -234,9 +233,7 @@ src="{% static 'img/blank_image.png' %}"
-
- {% include "filter_list.html" with id='purchaseorder' %} -
+ {% include "filter_list.html" with id='purchaseorder' %}
@@ -258,10 +255,8 @@ src="{% static 'img/blank_image.png' %}"
-
-
- {% include "filter_list.html" with id='supplierpricebreak' %} -
+
+ {% include "filter_list.html" with id='supplierpricebreak' %}
@@ -326,7 +321,6 @@ loadStockTable($("#stock-table"), { location_detail: true, part_detail: false, }, - buttons: ['#stock-options'], }); $("#item-create").click(function() { diff --git a/InvenTree/company/test_api.py b/InvenTree/company/test_api.py index 4fa3ba595a..33720e30c2 100644 --- a/InvenTree/company/test_api.py +++ b/InvenTree/company/test_api.py @@ -6,7 +6,7 @@ from rest_framework import status from InvenTree.unit_test import InvenTreeAPITestCase -from .models import Company, Contact, ManufacturerPart, SupplierPart +from .models import Address, Company, Contact, ManufacturerPart, SupplierPart class CompanyTest(InvenTreeAPITestCase): @@ -20,7 +20,6 @@ class CompanyTest(InvenTreeAPITestCase): @classmethod def setUpTestData(cls): """Perform initialization for the unit test class""" - super().setUpTestData() # Create some company objects to work with @@ -148,7 +147,6 @@ class ContactTest(InvenTreeAPITestCase): @classmethod def setUpTestData(cls): """Perform init for this test class""" - super().setUpTestData() # Create some companies @@ -178,7 +176,6 @@ class ContactTest(InvenTreeAPITestCase): def test_list(self): """Test company list API endpoint""" - # List all results response = self.get(self.url, {}, expected_code=200) @@ -202,7 +199,6 @@ class ContactTest(InvenTreeAPITestCase): def test_create(self): """Test that we can create a new Contact object via the API""" - n = Contact.objects.count() company = Company.objects.first() @@ -232,7 +228,6 @@ class ContactTest(InvenTreeAPITestCase): def test_edit(self): """Test that we can edit a Contact via the API""" - # Get the first contact contact = Contact.objects.first() # Use this contact in the tests @@ -268,7 +263,6 @@ class ContactTest(InvenTreeAPITestCase): def test_delete(self): """Tests that we can delete a Contact via the API""" - # Get the last contact contact = Contact.objects.first() url = reverse('api-contact-detail', kwargs={'pk': contact.pk}) @@ -284,6 +278,131 @@ class ContactTest(InvenTreeAPITestCase): self.get(url, expected_code=404) +class AddressTest(InvenTreeAPITestCase): + """Test cases for Address API endpoints""" + + roles = [] + + @classmethod + def setUpTestData(cls): + """Perform initialization for this test class""" + super().setUpTestData() + cls.num_companies = 3 + cls.num_addr = 3 + # Create some companies + companies = [ + Company( + name=f"Company {idx}", + description="Some company" + ) for idx in range(cls.num_companies) + ] + + Company.objects.bulk_create(companies) + + addresses = [] + + # Create some contacts + for cmp in Company.objects.all(): + addresses += [ + Address( + company=cmp, + title=f"Address no. {idx}", + ) for idx in range(cls.num_addr) + ] + + cls.url = reverse('api-address-list') + + Address.objects.bulk_create(addresses) + + def test_list(self): + """Test listing all addresses without filtering""" + response = self.get(self.url, expected_code=200) + + self.assertEqual(len(response.data), self.num_companies * self.num_addr) + + def test_filter_list(self): + """Test listing addresses filtered on company""" + company = Company.objects.first() + + response = self.get(self.url, {'company': company.pk}, expected_code=200) + + self.assertEqual(len(response.data), self.num_addr) + + def test_create(self): + """Test creating a new address""" + company = Company.objects.first() + + self.post(self.url, + { + 'company': company.pk, + 'title': 'HQ' + }, + expected_code=403) + + self.assignRole('purchase_order.add') + + self.post(self.url, + { + 'company': company.pk, + 'title': 'HQ' + }, + expected_code=201) + + def test_get(self): + """Test that objects are properly returned from a get""" + addr = Address.objects.first() + + url = reverse('api-address-detail', kwargs={'pk': addr.pk}) + response = self.get(url, expected_code=200) + + self.assertEqual(response.data['pk'], addr.pk) + + for key in ['title', 'line1', 'line2', 'postal_code', 'postal_city', 'province', 'country']: + self.assertIn(key, response.data) + + def test_edit(self): + """Test editing an object""" + addr = Address.objects.first() + + url = reverse('api-address-detail', kwargs={'pk': addr.pk}) + + self.patch( + url, + { + 'title': 'Hello' + }, + expected_code=403 + ) + + self.assignRole('purchase_order.change') + + self.patch( + url, + { + 'title': 'World' + }, + expected_code=200 + ) + + data = self.get(url, expected_code=200).data + + self.assertEqual(data['title'], 'World') + + def test_delete(self): + """Test deleting an object""" + addr = Address.objects.first() + + url = reverse('api-address-detail', kwargs={'pk': addr.pk}) + + self.delete(url, expected_code=403) + + self.assignRole('purchase_order.delete') + + self.delete(url, expected_code=204) + + self.get(url, expected_code=404) + + class ManufacturerTest(InvenTreeAPITestCase): """Series of tests for the Manufacturer DRF API.""" @@ -435,7 +554,6 @@ class SupplierPartTest(InvenTreeAPITestCase): def test_available(self): """Tests for updating the 'available' field""" - url = reverse('api-supplier-part-list') # Should fail when sending an invalid 'available' field @@ -519,7 +637,6 @@ class CompanyMetadataAPITest(InvenTreeAPITestCase): def metatester(self, apikey, model): """Generic tester""" - modeldata = model.objects.first() # Useless test unless a model object is found @@ -548,7 +665,6 @@ class CompanyMetadataAPITest(InvenTreeAPITestCase): def test_metadata(self): """Test all endpoints""" - for apikey, model in { 'api-manufacturer-part-metadata': ManufacturerPart, 'api-supplier-part-metadata': SupplierPart, diff --git a/InvenTree/company/test_migrations.py b/InvenTree/company/test_migrations.py index 1d9a9f88cf..d8285ee5a1 100644 --- a/InvenTree/company/test_migrations.py +++ b/InvenTree/company/test_migrations.py @@ -280,6 +280,45 @@ class TestCurrencyMigration(MigratorTestCase): self.assertIsNotNone(pb.price) +class TestAddressMigration(MigratorTestCase): + """Test moving address data into Address model""" + + migrate_from = ('company', '0063_auto_20230502_1956') + migrate_to = ('company', '0064_move_address_field_to_address_model') + + # Setting up string values for reuse + short_l1 = 'Less than 50 characters long address' + long_l1 = 'More than 50 characters long address testing line ' + l2 = 'splitting functionality' + + def prepare(self): + """Set up some companies with addresses""" + Company = self.old_state.apps.get_model('company', 'company') + + Company.objects.create(name='Company 1', address=self.short_l1) + Company.objects.create(name='Company 2', address=self.long_l1 + self.l2) + + def test_address_migration(self): + """Test database state after applying the migration""" + Address = self.new_state.apps.get_model('company', 'address') + Company = self.new_state.apps.get_model('company', 'company') + + c1 = Company.objects.filter(name='Company 1').first() + c2 = Company.objects.filter(name='Company 2').first() + + self.assertEqual(len(Address.objects.all()), 2) + + a1 = Address.objects.filter(company=c1.pk).first() + a2 = Address.objects.filter(company=c2.pk).first() + + self.assertEqual(a1.line1, self.short_l1) + self.assertEqual(a1.line2, "") + self.assertEqual(a2.line1, self.long_l1) + self.assertEqual(a2.line2, self.l2) + self.assertEqual(c1.address, '') + self.assertEqual(c2.address, '') + + class TestSupplierPartQuantity(MigratorTestCase): """Test that the supplier part quantity is correctly migrated.""" @@ -288,7 +327,6 @@ class TestSupplierPartQuantity(MigratorTestCase): def prepare(self): """Prepare a number of SupplierPart objects""" - Part = self.old_state.apps.get_model('part', 'part') Company = self.old_state.apps.get_model('company', 'company') SupplierPart = self.old_state.apps.get_model('company', 'supplierpart') @@ -315,7 +353,6 @@ class TestSupplierPartQuantity(MigratorTestCase): def test_supplier_part_quantity(self): """Test that the supplier part quantity is correctly migrated.""" - SupplierPart = self.new_state.apps.get_model('company', 'supplierpart') for i, sp in enumerate(SupplierPart.objects.all()): diff --git a/InvenTree/company/test_supplier_parts.py b/InvenTree/company/test_supplier_parts.py index cb07820fdb..21c34d9bbf 100644 --- a/InvenTree/company/test_supplier_parts.py +++ b/InvenTree/company/test_supplier_parts.py @@ -14,7 +14,6 @@ class SupplierPartPackUnitsTests(InvenTreeTestCase): def test_pack_quantity_dimensionless(self): """Test valid values for the 'pack_quantity' field""" - # Create a part without units (dimensionless) part = Part.objects.create(name='Test Part', description='Test part description', component=True) @@ -59,7 +58,6 @@ class SupplierPartPackUnitsTests(InvenTreeTestCase): def test_pack_quantity(self): """Test pack_quantity for a part with a specified dimension""" - # Create a part with units 'm' part = Part.objects.create(name='Test Part', description='Test part description', component=True, units='m') @@ -73,7 +71,7 @@ class SupplierPartPackUnitsTests(InvenTreeTestCase): SKU='TEST-SKU' ) - # All these values are valid for a part with dimesion 'm' + # All these values are valid for a part with dimension 'm' pass_tests = { '': 1, '1': 1, diff --git a/InvenTree/company/tests.py b/InvenTree/company/tests.py index bc9c51fa81..1f6e7ab56d 100644 --- a/InvenTree/company/tests.py +++ b/InvenTree/company/tests.py @@ -8,7 +8,7 @@ from django.test import TestCase from part.models import Part -from .models import (Company, Contact, ManufacturerPart, SupplierPart, +from .models import (Address, Company, Contact, ManufacturerPart, SupplierPart, rename_company_image) @@ -29,13 +29,11 @@ class CompanySimpleTest(TestCase): @classmethod def setUpTestData(cls): """Perform initialization for the tests in this class""" - super().setUpTestData() Company.objects.create(name='ABC Co.', description='Seller of ABC products', website='www.abc-sales.com', - address='123 Sales St.', is_customer=False, is_supplier=True) @@ -174,6 +172,73 @@ class ContactSimpleTest(TestCase): self.assertEqual(Contact.objects.count(), 0) +class AddressTest(TestCase): + """Unit tests for the Address model""" + + def setUp(self): + """Initialization for the tests in this class""" + # Create a simple company + self.c = Company.objects.create(name='Test Corp.', description='We make stuff good') + + def test_create(self): + """Test that object creation with only company supplied is successful""" + Address.objects.create(company=self.c) + self.assertEqual(Address.objects.count(), 1) + + def test_delete(self): + """Test Address deletion""" + addr = Address.objects.create(company=self.c) + addr.delete() + self.assertEqual(Address.objects.count(), 0) + + def test_primary_constraint(self): + """Test that there can only be one company-'primary=true' pair""" + Address.objects.create(company=self.c, primary=True) + Address.objects.create(company=self.c, primary=False) + + self.assertEqual(Address.objects.count(), 2) + + self.assertTrue(Address.objects.first().primary) + + # Create another address, specify *this* as primary + Address.objects.create(company=self.c, primary=True) + + self.assertEqual(Address.objects.count(), 3) + self.assertFalse(Address.objects.first().primary) + self.assertTrue(Address.objects.last().primary) + + def test_first_address_is_primary(self): + """Test that first address related to company is always set to primary""" + addr = Address.objects.create(company=self.c) + self.assertTrue(addr.primary) + + def test_model_str(self): + """Test value of __str__""" + t = "Test address" + l1 = "Busy street 56" + l2 = "Red building" + pcd = "12345" + pct = "City" + pv = "Province" + cn = "COUNTRY" + addr = Address.objects.create(company=self.c, + title=t, + line1=l1, + line2=l2, + postal_code=pcd, + postal_city=pct, + province=pv, + country=cn) + self.assertEqual(str(addr), f'{l1}, {l2}, {pcd}, {pct}, {pv}, {cn}') + + addr2 = Address.objects.create(company=self.c, + title=t, + line1=l1, + postal_code=pcd) + + self.assertEqual(str(addr2), f'{l1}, {pcd}') + + class ManufacturerPartSimpleTest(TestCase): """Unit tests for the ManufacturerPart model""" @@ -187,7 +252,6 @@ class ManufacturerPartSimpleTest(TestCase): def setUp(self): """Initialization for the unit tests in this class""" - # Create a manufacturer part self.part = Part.objects.get(pk=1) manufacturer = Company.objects.get(pk=1) diff --git a/InvenTree/company/views.py b/InvenTree/company/views.py index 147e5e407d..c8b2b31dc0 100644 --- a/InvenTree/company/views.py +++ b/InvenTree/company/views.py @@ -21,7 +21,6 @@ class CompanyIndex(InvenTreeRoleMixin, ListView): def get_context_data(self, **kwargs): """Add extra context data to the company index page""" - ctx = super().get_context_data(**kwargs) # Provide custom context data to the template, diff --git a/InvenTree/config_template.yaml b/InvenTree/config_template.yaml index 7795bb694f..1e51863a68 100644 --- a/InvenTree/config_template.yaml +++ b/InvenTree/config_template.yaml @@ -58,11 +58,29 @@ database: # Use the environment variable INVENTREE_DEBUG debug: True +# Set to False to disable the admin interface (default = True) +# Or, use the environment variable INVENTREE_ADMIN_ENABLED +#admin_enabled: True + +# Set the admin URL (default is 'admin') +# Or, use the environment variable INVENTREE_ADMIN_URL +#admin_url: 'admin' + +# Set enabled frontends +# Use the environment variable INVENTREE_CLASSIC_FRONTEND +# classic_frontend: True +# Use the environment variable INVENTREE_PLATFORM_FRONTEND +# platform_frontend: True + # Configure the system logging level # Use environment variable INVENTREE_LOG_LEVEL # Options: DEBUG / INFO / WARNING / ERROR / CRITICAL log_level: WARNING +# Enable database-level logging +# Use the environment variable INVENTREE_DB_LOGGING +db_logging: False + # Select default system language (default is 'en-us') # Use the environment variable INVENTREE_LANGUAGE language: en-us @@ -183,6 +201,11 @@ login_default_protocol: http remote_login_enabled: False remote_login_header: HTTP_REMOTE_USER +# JWT tokens +# JWT can be used optionally to authenticate users. Turned off by default. +# Alternatively, use the environment variable INVENTREE_USE_JWT +# use_jwt: True + # Logout redirect configuration # This setting may be required if using remote / proxy login to redirect requests # during the logout process (default is 'index'). Please read the docs for more details @@ -218,16 +241,66 @@ remote_login_header: HTTP_REMOTE_USER # KEYCLOAK_URL: 'https://keycloak.custom/auth' # KEYCLOAK_REALM: 'master' +# Add LDAP support +# ldap: +# enabled: false +# debug: false # enable debug mode to troubleshoot ldap configuration +# server_uri: ldaps://example.org +# bind_dn: cn=admin,dc=example,dc=org +# bind_password: admin_password +# search_base_dn: cn=Users,dc=example,dc=org + +# # enable TLS encryption over the standard LDAP port, +# # see: https://django-auth-ldap.readthedocs.io/en/latest/reference.html#auth-ldap-start-tls +# # start_tls: false + +# # uncomment if you want to use direct bind, bind_dn and bin_password is not necessary then +# # user_dn_template: "uid=%(user)s,dc=example,dc=org" + +# # uncomment to set advanced global options, see https://www.python-ldap.org/en/latest/reference/ldap.html#ldap-options +# # for all available options (keys and values starting with OPT_ get automatically converted to python-ldap keys) +# # global_options: +# # OPT_X_TLS_REQUIRE_CERT: OPT_X_TLS_NEVER +# # OPT_X_TLS_CACERTFILE: /opt/inventree/ldapca.pem + +# # uncomment for advanced filter search, default: uid=%(user)s +# # search_filter_str: + +# # uncomment for advanced user attribute mapping (in the format : ) +# # user_attr_map: +# # first_name: givenName +# # last_name: sn +# # email: mail + +# # always update the user on each login, default: true +# # always_update_user: true + +# # cache timeout to reduce traffic with LDAP server, default: 3600 (1h) +# # cache_timeout: 3600 + # Customization options # Add custom messages to the login page or main interface navbar or exchange the logo # Use environment variable INVENTREE_CUSTOMIZE or INVENTREE_CUSTOM_LOGO +# Logo and splash paths and filenames must be relative to the static_root directory # customize: -# login_message: InvenTree demo instance - Click here for login details -# navbar_message:
InvenTree demo mode
-# logo: logo.png -# splash: splash_screen.jpg +# login_message: InvenTree demo instance - Click here for login details +# navbar_message:
InvenTree demo mode
# hide_admin_link: true # hide_password_reset: true +# logo: img/custom_logo.png +# splash: img/custom_splash.jpg + +# Frontend UI settings +# frontend_settings: +# base_url: 'frontend' +# server_list: +# my_server1: +# host: https://demo.inventree.org/ +# name: InvenTree Demo +# default_server: my_server1 +# show_server_selector: false +# sentry_dsn: https://84f0c3ea90c64e5092e2bf5dfe325725@o1047628.ingest.sentry.io/4504160008273920 +# environment: development # Custom flags # InvenTree uses django-flags; read more in their docs at https://cfpb.github.io/django-flags/conditions/ diff --git a/InvenTree/generic/states/__init__.py b/InvenTree/generic/states/__init__.py index 5137b7c3f4..952c31557a 100644 --- a/InvenTree/generic/states/__init__.py +++ b/InvenTree/generic/states/__init__.py @@ -6,10 +6,8 @@ There is a rendered state for each state value. The rendered state is used for d States can be extended with custom options for each InvenTree instance - those options are stored in the database and need to link back to state values. """ -from .api import StatusView from .states import StatusCode __all__ = [ - StatusView, StatusCode, ] diff --git a/InvenTree/generic/states/api.py b/InvenTree/generic/states/api.py index 70e6256232..e5c07d5128 100644 --- a/InvenTree/generic/states/api.py +++ b/InvenTree/generic/states/api.py @@ -26,8 +26,7 @@ class StatusView(APIView): MODEL_REF = 'statusmodel' def get_status_model(self, *args, **kwargs): - """Return the StatusCode moedl based on extra parameters passed to the view""" - + """Return the StatusCode model based on extra parameters passed to the view""" status_model = self.kwargs.get(self.MODEL_REF, None) if status_model is None: @@ -37,7 +36,6 @@ class StatusView(APIView): def get(self, request, *args, **kwargs): """Perform a GET request to learn information about status codes""" - status_class = self.get_status_model() if not inspect.isclass(status_class): @@ -52,3 +50,23 @@ class StatusView(APIView): } return Response(data) + + +class AllStatusViews(StatusView): + """Endpoint for listing all defined status models.""" + + permission_classes = [ + permissions.IsAuthenticated, + ] + + def get(self, request, *args, **kwargs): + """Perform a GET request to learn information about status codes""" + data = {} + + for status_class in StatusCode.__subclasses__(): + data[status_class.__name__] = { + 'class': status_class.__name__, + 'values': status_class.dict(), + } + + return Response(data) diff --git a/InvenTree/generic/states/states.py b/InvenTree/generic/states/states.py index f53b008ea1..7d23ca359d 100644 --- a/InvenTree/generic/states/states.py +++ b/InvenTree/generic/states/states.py @@ -17,13 +17,13 @@ class BaseEnum(enum.IntEnum): def __eq__(self, obj): """Override equality operator to allow comparison with int.""" - if type(self) == type(obj): + if type(self) is type(obj): return super().__eq__(obj) return self.value == obj def __ne__(self, obj): """Override inequality operator to allow comparison with int.""" - if type(self) == type(obj): + if type(self) is type(obj): return super().__ne__(obj) return self.value != obj @@ -70,7 +70,7 @@ class StatusCode(BaseEnum): return False if callable(value): return False - if type(value.value) != int: + if not isinstance(value.value, int): return False return True @@ -163,7 +163,6 @@ class StatusCode(BaseEnum): @classmethod def template_context(cls): """Return a dict representation containing all required information for templates.""" - ret = {x.name: x.value for x in cls.values()} ret['list'] = cls.list() diff --git a/InvenTree/gunicorn.conf.py b/InvenTree/gunicorn.conf.py index b11999aadd..c1b403de12 100644 --- a/InvenTree/gunicorn.conf.py +++ b/InvenTree/gunicorn.conf.py @@ -8,3 +8,6 @@ workers = multiprocessing.cpu_count() * 2 + 1 max_requests = 1000 max_requests_jitter = 50 + +# preload app so that the ready functions are only executed once +preload_app = True diff --git a/InvenTree/label/api.py b/InvenTree/label/api.py index 724c00e4d5..a76b8019e7 100644 --- a/InvenTree/label/api.py +++ b/InvenTree/label/api.py @@ -1,14 +1,15 @@ """API functionality for the 'label' app""" -from django.conf import settings from django.core.exceptions import FieldError, ValidationError -from django.http import HttpResponse, JsonResponse +from django.http import JsonResponse from django.urls import include, path, re_path from django.utils.decorators import method_decorator from django.views.decorators.cache import cache_page, never_cache from django_filters.rest_framework import DjangoFilterBackend +from rest_framework import serializers from rest_framework.exceptions import NotFound +from rest_framework.request import clone_request import build.models import common.models @@ -18,9 +19,8 @@ import label.serializers from InvenTree.api import MetadataView from InvenTree.filters import InvenTreeSearchFilter from InvenTree.mixins import ListAPI, RetrieveAPI, RetrieveUpdateDestroyAPI -from InvenTree.tasks import offload_task from part.models import Part -from plugin.base.label import label as plugin_label +from plugin.builtin.labels.inventree_label import InvenTreeLabelPlugin from plugin.registry import registry from stock.models import StockItem, StockLocation @@ -43,7 +43,6 @@ class LabelFilterMixin: def get_items(self): """Return a list of database objects from query parameter""" - ids = [] # Construct a list of possible query parameter value options @@ -75,7 +74,6 @@ class LabelListView(LabelFilterMixin, ListAPI): As each 'label' instance may optionally define its own filters, the resulting queryset is the 'union' of the two. """ - queryset = super().filter_queryset(queryset) items = self.get_items() @@ -140,17 +138,46 @@ class LabelListView(LabelFilterMixin, ListAPI): class LabelPrintMixin(LabelFilterMixin): """Mixin for printing labels.""" + rolemap = { + "GET": "view", + "POST": "view", + } + + def check_permissions(self, request): + """Override request method to GET so that also non superusers can print using a post request.""" + if request.method == "POST": + request = clone_request(request, "GET") + return super().check_permissions(request) + @method_decorator(never_cache) def dispatch(self, *args, **kwargs): """Prevent caching when printing report templates""" return super().dispatch(*args, **kwargs) + def get_serializer(self, *args, **kwargs): + """Define a get_serializer method to be discoverable by the OPTIONS request.""" + # Check the request to determine if the user has selected a label printing plugin + plugin = self.get_plugin(self.request) + + kwargs.setdefault('context', self.get_serializer_context()) + serializer = plugin.get_printing_options_serializer(self.request, *args, **kwargs) + + # if no serializer is defined, return an empty serializer + if not serializer: + return serializers.Serializer() + + return serializer + def get(self, request, *args, **kwargs): """Perform a GET request against this endpoint to print labels""" common.models.InvenTreeUserSetting.set_setting('DEFAULT_' + self.ITEM_KEY.upper() + '_LABEL_TEMPLATE', self.get_object().pk, None, user=request.user) return self.print(request, self.get_items()) + def post(self, request, *args, **kwargs): + """Perform a GET request against this endpoint to print labels""" + return self.get(request, *args, **kwargs) + def get_plugin(self, request): """Return the label printing plugin associated with this request. @@ -162,26 +189,27 @@ class LabelPrintMixin(LabelFilterMixin): - matching plugin implements the 'labels' mixin - matching plugin is enabled """ - if not settings.PLUGINS_ENABLED: - return None # pragma: no cover - plugin_key = request.query_params.get('plugin', None) - # No plugin provided, and that's OK + # No plugin provided! if plugin_key is None: - return None + # Default to the builtin label printing plugin + plugin_key = InvenTreeLabelPlugin.NAME.lower() plugin = registry.get_plugin(plugin_key) - if plugin: - if plugin.is_active(): - # Only return the plugin if it is enabled! - return plugin - else: - raise ValidationError(f"Plugin '{plugin_key}' is not enabled") - else: + if not plugin: raise NotFound(f"Plugin '{plugin_key}' not found") + if not plugin.is_active(): + raise ValidationError(f"Plugin '{plugin_key}' is not enabled") + + if not plugin.mixin_enabled("labels"): + raise ValidationError(f"Plugin '{plugin_key}' is not a label printing plugin") + + # Only return the plugin if it is enabled and has the label printing mixin + return plugin + def print(self, request, items_to_print): """Print this label template against a number of pre-validated items.""" # Check the request to determine if the user has selected a label printing plugin @@ -189,96 +217,28 @@ class LabelPrintMixin(LabelFilterMixin): if len(items_to_print) == 0: # No valid items provided, return an error message - raise ValidationError('No valid objects provided to label template') - outputs = [] + # Label template + label = self.get_object() - # In debug mode, generate single HTML output, rather than PDF - debug_mode = common.models.InvenTreeSetting.get_setting('REPORT_DEBUG_MODE', cache=False) + # Check the label dimensions + if label.width <= 0 or label.height <= 0: + raise ValidationError('Label has invalid dimensions') - label_name = "label.pdf" + # if the plugin returns a serializer, validate the data + if serializer := plugin.get_printing_options_serializer(request, data=request.data, context=self.get_serializer_context()): + serializer.is_valid(raise_exception=True) - label_names = [] - label_instances = [] + # At this point, we offload the label(s) to the selected plugin. + # The plugin is responsible for handling the request and returning a response. - # Merge one or more PDF files into a single download - for item in items_to_print: - label = self.get_object() - label.object_to_print = item + result = plugin.print_labels(label, items_to_print, request, printing_options=request.data) - label_name = label.generate_filename(request) - - label_names.append(label_name) - label_instances.append(label) - - if debug_mode and plugin is None: - # Note that debug mode is only supported when not using a plugin - outputs.append(label.render_as_string(request)) - else: - outputs.append(label.render(request)) - - if not label_name.endswith(".pdf"): - label_name += ".pdf" - - if plugin is not None: - """Label printing is to be handled by a plugin, rather than being exported to PDF. - - In this case, we do the following: - - - Individually generate each label, exporting as an image file - - Pass all the images through to the label printing plugin - - Return a JSON response indicating that the printing has been offloaded - """ - - for idx, output in enumerate(outputs): - """For each output, we generate a temporary image file, which will then get sent to the printer.""" - - # Generate PDF data for the label - pdf = output.get_document().write_pdf() - - # Offload a background task to print the provided label - offload_task( - plugin_label.print_label, - plugin.plugin_slug(), - pdf, - filename=label_names[idx], - label_instance=label_instances[idx], - user=request.user, - ) - - return JsonResponse({ - 'plugin': plugin.plugin_slug(), - 'labels': label_names, - }) - - elif debug_mode: - """Contatenate all rendered templates into a single HTML string, and return the string as a HTML response.""" - - html = "\n".join(outputs) - - return HttpResponse(html) - - else: - """Concatenate all rendered pages into a single PDF object, and return the resulting document!""" - - pages = [] - - for output in outputs: - doc = output.get_document() - for page in doc.pages: - pages.append(page) - - pdf = outputs[0].get_document().copy(pages).write_pdf() - - inline = common.models.InvenTreeUserSetting.get_setting('LABEL_INLINE', user=request.user, cache=False) - - return InvenTree.helpers.DownloadFile( - pdf, - label_name, - content_type='application/pdf', - inline=inline - ) + if isinstance(result, JsonResponse): + result['plugin'] = plugin.plugin_slug() + return result + raise ValidationError(f"Plugin '{plugin.plugin_slug()}' returned invalid response type '{type(result)}'") class StockItemLabelMixin: diff --git a/InvenTree/label/apps.py b/InvenTree/label/apps.py index 34dd190ad9..9d74917e54 100644 --- a/InvenTree/label/apps.py +++ b/InvenTree/label/apps.py @@ -12,7 +12,8 @@ from django.conf import settings from django.core.exceptions import AppRegistryNotReady from django.db.utils import OperationalError -from InvenTree.ready import canAppAccessDatabase +from InvenTree.ready import (canAppAccessDatabase, isInMainThread, + isPluginRegistryLoaded) logger = logging.getLogger("inventree") @@ -35,7 +36,11 @@ class LabelConfig(AppConfig): def ready(self): """This function is called whenever the label app is loaded.""" - if canAppAccessDatabase(): + # skip loading if plugin registry is not loaded or we run in a background thread + if not isPluginRegistryLoaded() or not isInMainThread(): + return + + if canAppAccessDatabase(allow_test=False): try: self.create_labels() # pragma: no cover @@ -136,7 +141,7 @@ class LabelConfig(AppConfig): ) if not dst_dir.exists(): - logger.info(f"Creating required directory: '{dst_dir}'") + logger.info("Creating required directory: '%s'", dst_dir) dst_dir.mkdir(parents=True, exist_ok=True) # Create labels @@ -161,15 +166,15 @@ class LabelConfig(AppConfig): # File already exists - let's see if it is the "same" if hashFile(dst_file) != hashFile(src_file): # pragma: no cover - logger.info(f"Hash differs for '{filename}'") + logger.info("Hash differs for '%s'", filename) to_copy = True else: - logger.info(f"Label template '{filename}' is not present") + logger.info("Label template '%s' is not present", filename) to_copy = True if to_copy: - logger.info(f"Copying label template '{dst_file}'") + logger.info("Copying label template '%s'", dst_file) # Ensure destination dir exists dst_file.parent.mkdir(parents=True, exist_ok=True) @@ -177,18 +182,23 @@ class LabelConfig(AppConfig): shutil.copyfile(src_file, dst_file) # Check if a label matching the template already exists - if model.objects.filter(label=filename).exists(): - return # pragma: no cover + try: + if model.objects.filter(label=filename).exists(): + return # pragma: no cover + except Exception: + logger.exception("Failed to query label for '%s' - you should run 'invoke update' first!", filename) - logger.info(f"Creating entry for {model} '{label['name']}'") + logger.info("Creating entry for %s '%s'", model, label['name']) - model.objects.create( - name=label['name'], - description=label['description'], - label=filename, - filters='', - enabled=True, - width=label['width'], - height=label['height'], - ) - return + try: + model.objects.create( + name=label['name'], + description=label['description'], + label=filename, + filters='', + enabled=True, + width=label['width'], + height=label['height'], + ) + except Exception: + logger.warning("Failed to create label '%s'", label['name']) diff --git a/InvenTree/label/migrations/0011_auto_20230623_2158.py b/InvenTree/label/migrations/0011_auto_20230623_2158.py new file mode 100644 index 0000000000..764925fc07 --- /dev/null +++ b/InvenTree/label/migrations/0011_auto_20230623_2158.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.19 on 2023-06-23 21:58 + +from django.db import migrations, models +import label.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('label', '0010_buildlinelabel'), + ] + + operations = [ + migrations.AlterField( + model_name='partlabel', + name='filters', + field=models.CharField(blank=True, help_text='Query filters (comma-separated list of key=value pairs)', max_length=250, validators=[label.models.validate_part_filters], verbose_name='Filters'), + ), + migrations.AlterField( + model_name='stockitemlabel', + name='filters', + field=models.CharField(blank=True, help_text='Query filters (comma-separated list of key=value pairs)', max_length=250, validators=[label.models.validate_stock_item_filters], verbose_name='Filters'), + ), + migrations.AlterField( + model_name='stocklocationlabel', + name='filters', + field=models.CharField(blank=True, help_text='Query filters (comma-separated list of key=value pairs)', max_length=250, validators=[label.models.validate_stock_location_filters], verbose_name='Filters'), + ), + ] diff --git a/InvenTree/label/migrations/0012_labeloutput.py b/InvenTree/label/migrations/0012_labeloutput.py new file mode 100644 index 0000000000..3a69fb9a9b --- /dev/null +++ b/InvenTree/label/migrations/0012_labeloutput.py @@ -0,0 +1,26 @@ +# Generated by Django 3.2.20 on 2023-07-14 11:55 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import label.models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('label', '0011_auto_20230623_2158'), + ] + + operations = [ + migrations.CreateModel( + name='LabelOutput', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('label', models.FileField(unique=True, upload_to=label.models.rename_label_output)), + ('created', models.DateField(auto_now_add=True)), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/InvenTree/label/models.py b/InvenTree/label/models.py index 91b503a055..65a0306ce1 100644 --- a/InvenTree/label/models.py +++ b/InvenTree/label/models.py @@ -6,6 +6,7 @@ import os import sys from django.conf import settings +from django.contrib.auth.models import User from django.core.validators import FileExtensionValidator, MinValueValidator from django.db import models from django.template import Context, Template @@ -24,7 +25,7 @@ from plugin.registry import registry try: from django_weasyprint import WeasyTemplateResponseMixin except OSError as err: # pragma: no cover - print("OSError: {e}".format(e=err)) + print(f"OSError: {err}") print("You may require some further system packages to be installed.") sys.exit(1) @@ -39,6 +40,13 @@ def rename_label(instance, filename): return os.path.join('label', 'template', instance.SUBDIR, filename) +def rename_label_output(instance, filename): + """Place the label output file into the correct subdirectory.""" + filename = os.path.basename(filename) + + return os.path.join('label', 'output', filename) + + def validate_stock_item_filters(filters): """Validate query filters for the StockItemLabel model""" filters = validateFilterString(filters, model=stock.models.StockItem) @@ -101,10 +109,7 @@ class LabelTemplate(MetadataMixin, models.Model): def __str__(self): """Format a string representation of a label instance""" - return "{n} - {d}".format( - n=self.name, - d=self.description - ) + return f"{self.name} - {self.description}" name = models.CharField( blank=False, max_length=100, @@ -186,10 +191,38 @@ class LabelTemplate(MetadataMixin, models.Model): return template_string.render(context) - def context(self, request): - """Provides context data to the template.""" + def generate_page_style(self, **kwargs): + """Generate @page style for the label template. + + This is inserted at the top of the style block for a given label + """ + + width = kwargs.get('width', self.width) + height = kwargs.get('height', self.height) + margin = kwargs.get('margin', 0) + + return f""" + @page {{ + size: {width}mm {height}mm; + margin: {margin}mm; + }} + """ + + def context(self, request, **kwargs): + """Provides context data to the template. + + Arguments: + request: The HTTP request object + kwargs: Additional keyword arguments + """ + context = self.get_context_data(request) + # By default, each label is supplied with '@page' data + # However, it can be excluded, e.g. when rendering a label sheet + if kwargs.get('insert_page_style', True): + context['page_style'] = self.generate_page_style() + # Add "basic" context data which gets passed to every label context['base_url'] = get_base_url(request=request) context['date'] = datetime.datetime.now().date() @@ -208,18 +241,31 @@ class LabelTemplate(MetadataMixin, models.Model): return context - def render_as_string(self, request, **kwargs): - """Render the label to a HTML string. + def render_as_string(self, request, target_object=None, **kwargs): + """Render the label to a HTML string""" - Useful for debug mode (viewing generated code) - """ - return render_to_string(self.template_name, self.context(request), request) + if target_object: + self.object_to_print = target_object - def render(self, request, **kwargs): + context = self.context(request, **kwargs) + + return render_to_string( + self.template_name, + context, + request + ) + + def render(self, request, target_object=None, **kwargs): """Render the label template to a PDF file. Uses django-weasyprint plugin to render HTML template """ + + if target_object: + self.object_to_print = target_object + + context = self.context(request, **kwargs) + wp = WeasyprintLabelMixin( request, self.template_name, @@ -230,11 +276,41 @@ class LabelTemplate(MetadataMixin, models.Model): ) return wp.render_to_response( - self.context(request), + context, **kwargs ) +class LabelOutput(models.Model): + """Class representing a label output file + + 'Printing' a label may generate a file object (such as PDF) + which is made available for download. + + Future work will offload this task to the background worker, + and provide a 'progress' bar for the user. + """ + + # File will be stored in a subdirectory + label = models.FileField( + upload_to=rename_label_output, + unique=True, blank=False, null=False, + ) + + # Creation date of label output + created = models.DateField( + auto_now_add=True, + editable=False, + ) + + # User who generated the label + user = models.ForeignKey( + User, + on_delete=models.SET_NULL, + blank=True, null=True, + ) + + class StockItemLabel(LabelTemplate): """Template for printing StockItem labels.""" @@ -247,7 +323,7 @@ class StockItemLabel(LabelTemplate): filters = models.CharField( blank=True, max_length=250, - help_text=_('Query filters (comma-separated list of key=value pairs),'), + help_text=_('Query filters (comma-separated list of key=value pairs)'), verbose_name=_('Filters'), validators=[ validate_stock_item_filters @@ -288,7 +364,7 @@ class StockLocationLabel(LabelTemplate): filters = models.CharField( blank=True, max_length=250, - help_text=_('Query filters (comma-separated list of key=value pairs'), + help_text=_('Query filters (comma-separated list of key=value pairs)'), verbose_name=_('Filters'), validators=[ validate_stock_location_filters] @@ -316,7 +392,7 @@ class PartLabel(LabelTemplate): filters = models.CharField( blank=True, max_length=250, - help_text=_('Part query filters (comma-separated value of key=value pairs)'), + help_text=_('Query filters (comma-separated list of key=value pairs)'), verbose_name=_('Filters'), validators=[ validate_part_filters @@ -361,7 +437,6 @@ class BuildLineLabel(LabelTemplate): def get_context_data(self, request): """Generate context data for each provided BuildLine object.""" - build_line = self.object_to_print return { diff --git a/InvenTree/label/serializers.py b/InvenTree/label/serializers.py index 576d4af8fa..ecceb8ed69 100644 --- a/InvenTree/label/serializers.py +++ b/InvenTree/label/serializers.py @@ -13,7 +13,6 @@ class LabelSerializerBase(InvenTreeModelSerializer): @staticmethod def label_fields(): """Generic serializer fields for a label template""" - return [ 'pk', 'name', diff --git a/InvenTree/label/tasks.py b/InvenTree/label/tasks.py new file mode 100644 index 0000000000..0a0d2ac791 --- /dev/null +++ b/InvenTree/label/tasks.py @@ -0,0 +1,15 @@ +"""Background tasks for the label app""" + +from datetime import timedelta + +from django.utils import timezone + +from InvenTree.tasks import ScheduledTask, scheduled_task +from label.models import LabelOutput + + +@scheduled_task(ScheduledTask.DAILY) +def cleanup_old_label_outputs(): + """Remove old label outputs from the database""" + # Remove any label outputs which are older than 30 days + LabelOutput.objects.filter(created__lte=timezone.now() - timedelta(days=5)).delete() diff --git a/InvenTree/label/templates/label/buildline/buildline_label_base.html b/InvenTree/label/templates/label/buildline/buildline_label_base.html index bec22c5cbb..a088a456f7 100644 --- a/InvenTree/label/templates/label/buildline/buildline_label_base.html +++ b/InvenTree/label/templates/label/buildline/buildline_label_base.html @@ -16,9 +16,9 @@ Refer to the documentation for a full list of available template variables. } .qr { + position: absolute; height: 28mm; width: 28mm; - position: relative; top: 0mm; right: 0mm; float: right; diff --git a/InvenTree/label/templates/label/label_base.html b/InvenTree/label/templates/label/label_base.html index 6ee1c42575..327bf5f60a 100644 --- a/InvenTree/label/templates/label/label_base.html +++ b/InvenTree/label/templates/label/label_base.html @@ -4,15 +4,18 @@ diff --git a/InvenTree/label/templates/label/part/part_label.html b/InvenTree/label/templates/label/part/part_label.html index ef4af6be41..d1cae87d8f 100644 --- a/InvenTree/label/templates/label/part/part_label.html +++ b/InvenTree/label/templates/label/part/part_label.html @@ -5,7 +5,7 @@ {% block style %} .qr { - position: fixed; + position: absolute; left: 0mm; top: 0mm; {% localize off %} @@ -16,7 +16,7 @@ .part { font-family: Arial, Helvetica, sans-serif; - display: inline; + display: flex; position: absolute; {% localize off %} left: {{ height }}mm; @@ -28,7 +28,7 @@ {% block content %} -{% trans 'QC Code' %} +{% trans 'QR Code' %}
{{ part.full_name }} diff --git a/InvenTree/label/templates/label/part/part_label_code128.html b/InvenTree/label/templates/label/part/part_label_code128.html index 982baf4422..37b4abd4a9 100644 --- a/InvenTree/label/templates/label/part/part_label_code128.html +++ b/InvenTree/label/templates/label/part/part_label_code128.html @@ -5,7 +5,7 @@ {% block style %} .qr { - position: fixed; + position: absolute; left: 0mm; top: 0mm; {% localize off %} @@ -16,7 +16,7 @@ .part { font-family: Arial, Helvetica, sans-serif; - display: inline; + display: flex; position: absolute; {% localize off %} left: {{ height }}mm; diff --git a/InvenTree/label/templates/label/stockitem/qr.html b/InvenTree/label/templates/label/stockitem/qr.html index 3a67a7793d..b588834a15 100644 --- a/InvenTree/label/templates/label/stockitem/qr.html +++ b/InvenTree/label/templates/label/stockitem/qr.html @@ -5,7 +5,7 @@ {% block style %} .qr { - position: fixed; + position: absolute; left: 0mm; top: 0mm; {% localize off %} @@ -18,5 +18,5 @@ {% block content %} -{% trans 'QC Code' %} +{% trans 'QR Code' %} {% endblock content %} diff --git a/InvenTree/label/templates/label/stocklocation/qr.html b/InvenTree/label/templates/label/stocklocation/qr.html index 3a67a7793d..fe3d1b519e 100644 --- a/InvenTree/label/templates/label/stocklocation/qr.html +++ b/InvenTree/label/templates/label/stocklocation/qr.html @@ -5,7 +5,7 @@ {% block style %} .qr { - position: fixed; + position: absolute; left: 0mm; top: 0mm; {% localize off %} @@ -17,6 +17,5 @@ {% endblock style %} {% block content %} - -{% trans 'QC Code' %} +{% trans 'QR Code' %} {% endblock content %} diff --git a/InvenTree/label/templates/label/stocklocation/qr_and_text.html b/InvenTree/label/templates/label/stocklocation/qr_and_text.html index aa18b3d332..b5b1ccb3ff 100644 --- a/InvenTree/label/templates/label/stocklocation/qr_and_text.html +++ b/InvenTree/label/templates/label/stocklocation/qr_and_text.html @@ -5,7 +5,7 @@ {% block style %} .qr { - position: fixed; + position: absolute; left: 0mm; top: 0mm; {% localize off %} @@ -16,7 +16,7 @@ .loc { font-family: Arial, Helvetica, sans-serif; - display: inline; + display: flex; position: absolute; {% localize off %} left: {{ height }}mm; diff --git a/InvenTree/label/tests.py b/InvenTree/label/tests.py index 6a94328605..5823cc9175 100644 --- a/InvenTree/label/tests.py +++ b/InvenTree/label/tests.py @@ -1,17 +1,21 @@ """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 @@ -77,11 +81,19 @@ class LabelTest(InvenTreeAPITestCase): for label in labels: url = reverse('api-part-label-print', kwargs={'pk': label.pk}) - self.get(f'{url}?parts={part.pk}', expected_code=200) + + # 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 %} @@ -115,21 +127,35 @@ class LabelTest(InvenTreeAPITestCase): # Ensure we are in "debug" mode (so the report is generated as HTML) InvenTreeSetting.set_setting('REPORT_ENABLE', True, None) - InvenTreeSetting.set_setting('REPORT_DEBUG_MODE', True, None) - # Print via the API + # 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}) - response = self.get(f'{url}?parts=1', expected_code=200) + prt = Part.objects.first() + part_pk = prt.pk + part_name = prt.name - content = str(response.content) + 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("part: 1 - M2x4 LPHS", content) - self.assertIn('data: {"part": 1}', content) - self.assertIn("http://testserver/part/1/", content) - self.assertIn("image: /static/img/blank_image.png", content) - self.assertIn("logo: /static/img/inventree.png", content) + self.assertIn(f"part: {part_pk} - {part_name}", content) + self.assertIn(f'data: {{"part": {part_pk}}}', content) + self.assertIn(f'http://testserver/part/{part_pk}/', content) + self.assertIn("img/blank_image.png", content) + self.assertIn("img/inventree.png", content) def test_metadata(self): """Unit tests for the metadata field.""" diff --git a/InvenTree/locale/bg/LC_MESSAGES/django.po b/InvenTree/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 0000000000..a5d5e53c2b --- /dev/null +++ b/InvenTree/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,13365 @@ +msgid "" +msgstr "" +"Project-Id-Version: inventree\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-12 21:25\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"Language: bg_BG\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: inventree\n" +"X-Crowdin-Project-ID: 452300\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 154\n" + +#: InvenTree/api.py:160 +msgid "API endpoint not found" +msgstr "Не е намерена крайна точка на API" + +#: InvenTree/api.py:425 +msgid "User does not have permission to view this model" +msgstr "Потребителя няма нужното разрешение, за да вижда този модел" + +#: InvenTree/conversion.py:92 +msgid "No value provided" +msgstr "Не е зададена стойност" + +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "Преобразуването на {original} в {unit} не беше успешно" + +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "Зададено е недопустимо количество" + +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "Зададено е недопустимо количество ({exc})" + +#: InvenTree/exceptions.py:89 +msgid "Error details can be found in the admin panel" +msgstr "Подробности за грешката могат да се намерят в администраторския панел" + +#: InvenTree/fields.py:127 +msgid "Enter date" +msgstr "Въведи дата" + +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 +#: report/templates/report/inventree_build_order_base.html:172 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 +msgid "Notes" +msgstr "Бележки" + +#: InvenTree/format.py:154 +#, python-brace-format +msgid "Value '{name}' does not appear in pattern format" +msgstr "Значението '{name}' не отговаря на шаблона" + +#: InvenTree/format.py:164 +msgid "Provided value does not match required pattern: " +msgstr "Въведеното значение не отговаря на задължителния шаблон: " + +#: InvenTree/forms.py:147 +msgid "Enter password" +msgstr "Въведете парола" + +#: InvenTree/forms.py:148 +msgid "Enter new password" +msgstr "Въведи нова парола" + +#: InvenTree/forms.py:157 +msgid "Confirm password" +msgstr "Потвърди паролата" + +#: InvenTree/forms.py:158 +msgid "Confirm new password" +msgstr "Потвърди нова парола" + +#: InvenTree/forms.py:162 +msgid "Old password" +msgstr "Стара парола" + +#: InvenTree/forms.py:199 +msgid "Email (again)" +msgstr "Е-поща отново" + +#: InvenTree/forms.py:203 +msgid "Email address confirmation" +msgstr "Потвърждение на електронната поща" + +#: InvenTree/forms.py:224 +msgid "You must type the same email each time." +msgstr "Трябва ла въведете една и съща електронна поща." + +#: InvenTree/forms.py:255 InvenTree/forms.py:261 +msgid "The provided primary email address is not valid." +msgstr "Въведената основна електронна поща е невалидна." + +#: InvenTree/forms.py:267 +msgid "The provided email domain is not approved." +msgstr "Въведеният домейн на електронната поща не е утвърден." + +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "Регистрацията е деактивирана." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 +msgid "Invalid quantity provided" +msgstr "Въведена е недопустима стойност" + +#: InvenTree/helpers.py:460 +msgid "Empty serial number string" +msgstr "Липсва сериен номер" + +#: InvenTree/helpers.py:490 +msgid "Duplicate serial" +msgstr "Повтарящ се сериен номер" + +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 +#, python-brace-format +msgid "Invalid group range: {group}" +msgstr "Невалиден диапазон от групи: {group}" + +#: InvenTree/helpers.py:552 +#, python-brace-format +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 +#, python-brace-format +msgid "Invalid group sequence: {group}" +msgstr "" + +#: InvenTree/helpers.py:608 +msgid "No serial numbers found" +msgstr "Не са открити серийни номера" + +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:740 +msgid "Remove HTML tags from this value" +msgstr "Премахнете HTML маркерите от тази стойност" + +#: InvenTree/helpers_model.py:123 +msgid "Connection error" +msgstr "Грешка при съединението" + +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 +msgid "Server responded with invalid status code" +msgstr "Сървърът отговари с невалиден статусен код" + +#: InvenTree/helpers_model.py:129 +msgid "Exception occurred" +msgstr "Възникна изключение" + +#: InvenTree/helpers_model.py:137 +msgid "Server responded with invalid Content-Length value" +msgstr "Сървърът отговори с невалидна стойност за дължината на съдържанието (Content-Length)" + +#: InvenTree/helpers_model.py:140 +msgid "Image size is too large" +msgstr "Размерът на изображението е твърде голям" + +#: InvenTree/helpers_model.py:152 +msgid "Image download exceeded maximum size" +msgstr "Сваляното на изображение превиши максималния размер" + +#: InvenTree/helpers_model.py:157 +msgid "Remote server returned empty response" +msgstr "Отдалеченият сървър върна празен отговор" + +#: InvenTree/helpers_model.py:165 +msgid "Supplied URL is not a valid image file" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:81 +msgid "Metadata must be a python dict object" +msgstr "" + +#: InvenTree/models.py:85 +msgid "Plugin Metadata" +msgstr "" + +#: InvenTree/models.py:86 +msgid "JSON metadata field, for use by external plugins" +msgstr "" + +#: InvenTree/models.py:312 +msgid "Improperly formatted pattern" +msgstr "" + +#: InvenTree/models.py:319 +msgid "Unknown format key specified" +msgstr "" + +#: InvenTree/models.py:325 +msgid "Missing required format key" +msgstr "" + +#: InvenTree/models.py:336 +msgid "Reference field cannot be empty" +msgstr "" + +#: InvenTree/models.py:343 +msgid "Reference must match required pattern" +msgstr "" + +#: InvenTree/models.py:373 +msgid "Reference number is too large" +msgstr "" + +#: InvenTree/models.py:455 +msgid "Missing file" +msgstr "" + +#: InvenTree/models.py:456 +msgid "Missing external link" +msgstr "" + +#: InvenTree/models.py:475 stock/models.py:2319 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:326 +msgid "Attachment" +msgstr "" + +#: InvenTree/models.py:476 +msgid "Select file to attach" +msgstr "" + +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_base.html:164 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 +msgid "Link" +msgstr "" + +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 +msgid "Link to external URL" +msgstr "" + +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 +msgid "Comment" +msgstr "" + +#: InvenTree/models.py:486 +msgid "File comment" +msgstr "" + +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 +#: report/templates/report/inventree_test_report_base.html:105 +#: templates/js/translated/stock.js:3007 users/models.py:85 +msgid "User" +msgstr "Потребител" + +#: InvenTree/models.py:496 +msgid "upload date" +msgstr "" + +#: InvenTree/models.py:517 +msgid "Filename must not be empty" +msgstr "" + +#: InvenTree/models.py:526 +msgid "Invalid attachment directory" +msgstr "" + +#: InvenTree/models.py:536 +#, python-brace-format +msgid "Filename contains illegal character '{c}'" +msgstr "" + +#: InvenTree/models.py:539 +msgid "Filename missing extension" +msgstr "" + +#: InvenTree/models.py:546 +msgid "Attachment with this filename already exists" +msgstr "" + +#: InvenTree/models.py:553 +msgid "Error renaming file" +msgstr "" + +#: InvenTree/models.py:728 +msgid "Duplicate names cannot exist under the same parent" +msgstr "" + +#: InvenTree/models.py:752 +msgid "Invalid choice" +msgstr "" + +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 +#: templates/InvenTree/settings/mixins/urls.html:13 +#: templates/InvenTree/settings/notifications.html:17 +#: templates/InvenTree/settings/plugin.html:74 +#: templates/InvenTree/settings/plugin_settings.html:22 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 +msgid "Name" +msgstr "" + +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 +#: company/templates/company/manufacturer_part.html:75 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 +#: report/templates/report/inventree_build_order_base.html:117 +#: stock/admin.py:42 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:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 +msgid "Description" +msgstr "" + +#: InvenTree/models.py:794 stock/models.py:79 +msgid "Description (optional)" +msgstr "" + +#: InvenTree/models.py:802 +msgid "parent" +msgstr "родител" + +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 +msgid "Path" +msgstr "" + +#: InvenTree/models.py:921 +msgid "Markdown notes (optional)" +msgstr "" + +#: InvenTree/models.py:948 +msgid "Barcode Data" +msgstr "" + +#: InvenTree/models.py:949 +msgid "Third party barcode data" +msgstr "" + +#: InvenTree/models.py:954 +msgid "Barcode Hash" +msgstr "" + +#: InvenTree/models.py:955 +msgid "Unique hash of barcode data" +msgstr "" + +#: InvenTree/models.py:995 +msgid "Existing barcode found" +msgstr "" + +#: InvenTree/models.py:1036 +msgid "Server Error" +msgstr "" + +#: InvenTree/models.py:1037 +msgid "An error has been logged by the server." +msgstr "" + +#: InvenTree/serializers.py:59 part/models.py:3904 +msgid "Must be a valid number" +msgstr "" + +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 +#: templates/InvenTree/settings/settings_staff_js.html:44 +#: templates/currency_data.html:5 +msgid "Currency" +msgstr "" + +#: InvenTree/serializers.py:91 +msgid "Select currency from available options" +msgstr "" + +#: InvenTree/serializers.py:364 +msgid "Filename" +msgstr "" + +#: InvenTree/serializers.py:401 +msgid "Invalid value" +msgstr "" + +#: InvenTree/serializers.py:423 +msgid "Data File" +msgstr "" + +#: InvenTree/serializers.py:424 +msgid "Select data file for upload" +msgstr "" + +#: InvenTree/serializers.py:445 +msgid "Unsupported file type" +msgstr "" + +#: InvenTree/serializers.py:451 +msgid "File is too large" +msgstr "" + +#: InvenTree/serializers.py:472 +msgid "No columns found in file" +msgstr "" + +#: InvenTree/serializers.py:475 +msgid "No data rows found in file" +msgstr "" + +#: InvenTree/serializers.py:598 +msgid "No data rows provided" +msgstr "" + +#: InvenTree/serializers.py:601 +msgid "No data columns supplied" +msgstr "" + +#: InvenTree/serializers.py:678 +#, python-brace-format +msgid "Missing required column: '{name}'" +msgstr "" + +#: InvenTree/serializers.py:687 +#, python-brace-format +msgid "Duplicate column: '{col}'" +msgstr "" + +#: InvenTree/serializers.py:712 +#: templates/InvenTree/settings/mixins/urls.html:14 +msgid "URL" +msgstr "" + +#: InvenTree/serializers.py:713 +msgid "URL of remote image file" +msgstr "" + +#: InvenTree/serializers.py:726 +msgid "Downloading images from remote URL is not enabled" +msgstr "" + +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 +msgid "Czech" +msgstr "" + +#: InvenTree/settings.py:821 +msgid "Danish" +msgstr "" + +#: InvenTree/settings.py:822 +msgid "German" +msgstr "" + +#: InvenTree/settings.py:823 +msgid "Greek" +msgstr "" + +#: InvenTree/settings.py:824 +msgid "English" +msgstr "" + +#: InvenTree/settings.py:825 +msgid "Spanish" +msgstr "" + +#: InvenTree/settings.py:826 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/settings.py:827 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/settings.py:828 +msgid "Finnish" +msgstr "" + +#: InvenTree/settings.py:829 +msgid "French" +msgstr "" + +#: InvenTree/settings.py:830 +msgid "Hebrew" +msgstr "" + +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "Хинди" + +#: InvenTree/settings.py:832 +msgid "Hungarian" +msgstr "Унгарски" + +#: InvenTree/settings.py:833 +msgid "Italian" +msgstr "Италиански" + +#: InvenTree/settings.py:834 +msgid "Japanese" +msgstr "Японски" + +#: InvenTree/settings.py:835 +msgid "Korean" +msgstr "Корейски" + +#: InvenTree/settings.py:836 +msgid "Dutch" +msgstr "Нидерландски" + +#: InvenTree/settings.py:837 +msgid "Norwegian" +msgstr "Норвежки" + +#: InvenTree/settings.py:838 +msgid "Polish" +msgstr "Полски" + +#: InvenTree/settings.py:839 +msgid "Portuguese" +msgstr "Португалски" + +#: InvenTree/settings.py:840 +msgid "Portuguese (Brazilian)" +msgstr "Португалски (Бразилия)" + +#: InvenTree/settings.py:841 +msgid "Russian" +msgstr "Руски" + +#: InvenTree/settings.py:842 +msgid "Slovenian" +msgstr "Словенски" + +#: InvenTree/settings.py:843 +msgid "Swedish" +msgstr "Шведски" + +#: InvenTree/settings.py:844 +msgid "Thai" +msgstr "Тайландски" + +#: InvenTree/settings.py:845 +msgid "Turkish" +msgstr "Турски" + +#: InvenTree/settings.py:846 +msgid "Vietnamese" +msgstr "Виетнамски" + +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "Китайски (опростен)" + +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "Китайски (традиционен)" + +#: InvenTree/status.py:68 part/serializers.py:1002 +msgid "Background worker check failed" +msgstr "" + +#: InvenTree/status.py:72 +msgid "Email backend not configured" +msgstr "" + +#: InvenTree/status.py:75 +msgid "InvenTree system health checks failed" +msgstr "" + +#: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 +#: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 +#: InvenTree/status_codes.py:188 generic/states/tests.py:16 +#: templates/js/translated/table_filters.js:594 +msgid "Pending" +msgstr "" + +#: InvenTree/status_codes.py:13 generic/states/tests.py:17 +msgid "Placed" +msgstr "" + +#: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 +#: InvenTree/status_codes.py:172 generic/states/tests.py:18 +#: 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:43 +#: InvenTree/status_codes.py:150 InvenTree/status_codes.py:173 +msgid "Cancelled" +msgstr "" + +#: InvenTree/status_codes.py:16 InvenTree/status_codes.py:44 +#: InvenTree/status_codes.py:71 +msgid "Lost" +msgstr "Изгубен" + +#: InvenTree/status_codes.py:17 InvenTree/status_codes.py:45 +#: InvenTree/status_codes.py:73 +msgid "Returned" +msgstr "Върнат" + +#: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 +msgid "In Progress" +msgstr "Изпълнява се" + +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 +msgid "Shipped" +msgstr "Изпратено" + +#: InvenTree/status_codes.py:66 +msgid "OK" +msgstr "Да" + +#: InvenTree/status_codes.py:67 +msgid "Attention needed" +msgstr "" + +#: InvenTree/status_codes.py:68 +msgid "Damaged" +msgstr "" + +#: InvenTree/status_codes.py:69 +msgid "Destroyed" +msgstr "" + +#: InvenTree/status_codes.py:70 +msgid "Rejected" +msgstr "" + +#: InvenTree/status_codes.py:72 +msgid "Quarantined" +msgstr "" + +#: InvenTree/status_codes.py:91 +msgid "Legacy stock tracking entry" +msgstr "" + +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 +msgid "Stock item created" +msgstr "" + +#: InvenTree/status_codes.py:96 +msgid "Edited stock item" +msgstr "" + +#: InvenTree/status_codes.py:97 +msgid "Assigned serial number" +msgstr "" + +#: InvenTree/status_codes.py:100 +msgid "Stock counted" +msgstr "Наличността е преброена" + +#: InvenTree/status_codes.py:101 +msgid "Stock manually added" +msgstr "" + +#: InvenTree/status_codes.py:102 +msgid "Stock manually removed" +msgstr "" + +#: InvenTree/status_codes.py:105 +msgid "Location changed" +msgstr "" + +#: InvenTree/status_codes.py:106 +msgid "Stock updated" +msgstr "" + +#: InvenTree/status_codes.py:109 +msgid "Installed into assembly" +msgstr "" + +#: InvenTree/status_codes.py:110 +msgid "Removed from assembly" +msgstr "" + +#: InvenTree/status_codes.py:112 +msgid "Installed component item" +msgstr "" + +#: InvenTree/status_codes.py:113 +msgid "Removed component item" +msgstr "" + +#: InvenTree/status_codes.py:116 +msgid "Split from parent item" +msgstr "" + +#: InvenTree/status_codes.py:117 +msgid "Split child item" +msgstr "" + +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 +msgid "Merged stock items" +msgstr "" + +#: InvenTree/status_codes.py:123 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:126 +msgid "Build order output created" +msgstr "" + +#: InvenTree/status_codes.py:127 +msgid "Build order output completed" +msgstr "" + +#: InvenTree/status_codes.py:128 +msgid "Build order output rejected" +msgstr "" + +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 +msgid "Consumed by build order" +msgstr "" + +#: InvenTree/status_codes.py:132 +msgid "Shipped against Sales Order" +msgstr "" + +#: InvenTree/status_codes.py:135 +msgid "Received against Purchase Order" +msgstr "" + +#: InvenTree/status_codes.py:138 +msgid "Returned against Return Order" +msgstr "" + +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 +msgid "Sent to customer" +msgstr "" + +#: InvenTree/status_codes.py:142 +msgid "Returned from customer" +msgstr "" + +#: InvenTree/status_codes.py:149 +msgid "Production" +msgstr "" + +#: InvenTree/status_codes.py:191 +msgid "Return" +msgstr "" + +#: InvenTree/status_codes.py:194 +msgid "Repair" +msgstr "" + +#: InvenTree/status_codes.py:197 +msgid "Replace" +msgstr "" + +#: InvenTree/status_codes.py:200 +msgid "Refund" +msgstr "" + +#: InvenTree/status_codes.py:203 +msgid "Reject" +msgstr "" + +#: InvenTree/validators.py:31 InvenTree/validators.py:33 +msgid "Invalid physical unit" +msgstr "" + +#: InvenTree/validators.py:39 +msgid "Not a valid currency code" +msgstr "" + +#: InvenTree/validators.py:106 InvenTree/validators.py:122 +msgid "Overage value must not be negative" +msgstr "" + +#: InvenTree/validators.py:124 +msgid "Overage must not exceed 100%" +msgstr "" + +#: InvenTree/validators.py:131 +msgid "Invalid value for overage" +msgstr "" + +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 +msgid "Edit User Information" +msgstr "" + +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 +msgid "Set Password" +msgstr "" + +#: InvenTree/views.py:437 +msgid "Password fields must match" +msgstr "" + +#: InvenTree/views.py:445 +msgid "Wrong password provided" +msgstr "" + +#: InvenTree/views.py:642 templates/navbar.html:160 +msgid "System Information" +msgstr "" + +#: InvenTree/views.py:649 templates/navbar.html:171 +msgid "About InvenTree" +msgstr "" + +#: build/api.py:237 +msgid "Build must be cancelled before it can be deleted" +msgstr "" + +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/templates/build/build_base.html:27 +#: report/templates/report/inventree_build_order_base.html:105 +#: templates/email/build_order_completed.html:16 +#: templates/email/overdue_build_order.html:15 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 +msgid "Build Order" +msgstr "" + +#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/templates/build/index.html:8 build/templates/build/index.html:12 +#: order/templates/order/sales_order_detail.html:111 +#: order/templates/order/so_sidebar.html:13 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 +#: templates/InvenTree/search.html:141 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 +msgid "Build Orders" +msgstr "" + +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 +msgid "Invalid choice for parent build" +msgstr "" + +#: build/models.py:166 +msgid "Build Order Reference" +msgstr "" + +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 +#: report/templates/report/inventree_bill_of_materials_report.html:139 +#: report/templates/report/inventree_po_report_base.html:28 +#: report/templates/report/inventree_return_order_report_base.html:26 +#: report/templates/report/inventree_so_report_base.html:28 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 +#: templates/js/translated/pricing.js:386 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 +msgid "Reference" +msgstr "" + +#: build/models.py:178 +msgid "Brief description of the build (optional)" +msgstr "" + +#: build/models.py:186 build/templates/build/build_base.html:183 +#: build/templates/build/detail.html:87 +msgid "Parent Build" +msgstr "" + +#: build/models.py:187 +msgid "BuildOrder to which this build is allocated" +msgstr "" + +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 +#: 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:206 stock/serializers.py:614 +#: 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:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 +msgid "Part" +msgstr "Част" + +#: build/models.py:200 +msgid "Select part to build" +msgstr "" + +#: build/models.py:205 +msgid "Sales Order Reference" +msgstr "" + +#: build/models.py:209 +msgid "SalesOrder to which this build is allocated" +msgstr "" + +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 +msgid "Source Location" +msgstr "" + +#: build/models.py:218 +msgid "Select location to take stock from for this build (leave blank to take from any stock location)" +msgstr "" + +#: build/models.py:223 +msgid "Destination Location" +msgstr "" + +#: build/models.py:227 +msgid "Select location where the completed items will be stored" +msgstr "" + +#: build/models.py:231 +msgid "Build Quantity" +msgstr "" + +#: build/models.py:234 +msgid "Number of stock items to build" +msgstr "" + +#: build/models.py:238 +msgid "Completed items" +msgstr "" + +#: build/models.py:240 +msgid "Number of stock items which have been completed" +msgstr "" + +#: build/models.py:244 +msgid "Build Status" +msgstr "" + +#: build/models.py:248 +msgid "Build status code" +msgstr "" + +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 +msgid "Batch Code" +msgstr "" + +#: build/models.py:261 build/serializers.py:276 +msgid "Batch code for this build output" +msgstr "" + +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 +msgid "Creation Date" +msgstr "" + +#: build/models.py:268 +msgid "Target completion date" +msgstr "" + +#: build/models.py:269 +msgid "Target date for build completion. Build will be overdue after this date." +msgstr "" + +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 +msgid "Completion Date" +msgstr "" + +#: build/models.py:278 +msgid "completed by" +msgstr "" + +#: build/models.py:286 templates/js/translated/build.js:2192 +msgid "Issued by" +msgstr "" + +#: build/models.py:287 +msgid "User who issued this build order" +msgstr "" + +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 +#: report/templates/report/inventree_build_order_base.html:158 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 +msgid "Responsible" +msgstr "" + +#: build/models.py:296 +msgid "User or group responsible for this build order" +msgstr "" + +#: build/models.py:301 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 +msgid "External Link" +msgstr "" + +#: build/models.py:306 +msgid "Build Priority" +msgstr "" + +#: build/models.py:309 +msgid "Priority of this build order" +msgstr "" + +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 +#, python-brace-format +msgid "Build order {build} has been completed" +msgstr "" + +#: build/models.py:558 +msgid "A build order has been completed" +msgstr "" + +#: build/models.py:768 build/models.py:843 +msgid "No build output specified" +msgstr "" + +#: build/models.py:771 +msgid "Build output is already completed" +msgstr "" + +#: build/models.py:774 +msgid "Build output does not match Build Order" +msgstr "" + +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 +msgid "Quantity must be greater than zero" +msgstr "" + +#: build/models.py:852 build/serializers.py:223 +msgid "Quantity cannot be greater than the output quantity" +msgstr "" + +#: build/models.py:1266 +msgid "Build object" +msgstr "" + +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 +#: 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:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 +#: 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:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 +msgid "Quantity" +msgstr "" + +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 +msgid "Stock quantity to allocate to build" +msgstr "" + +#: build/models.py:1547 +msgid "Install into" +msgstr "" + +#: build/models.py:1548 +msgid "Destination stock item" +msgstr "" + +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 +msgid "Build Output" +msgstr "" + +#: build/serializers.py:167 +msgid "Build output does not match the parent build" +msgstr "" + +#: build/serializers.py:171 +msgid "Output part does not match BuildOrder part" +msgstr "" + +#: build/serializers.py:175 +msgid "This build output has already been completed" +msgstr "" + +#: build/serializers.py:186 +msgid "This build output is not fully allocated" +msgstr "" + +#: build/serializers.py:206 build/serializers.py:243 +msgid "Enter quantity for build output" +msgstr "" + +#: build/serializers.py:264 +msgid "Integer quantity required for trackable parts" +msgstr "" + +#: build/serializers.py:267 +msgid "Integer quantity required, as the bill of materials contains trackable parts" +msgstr "" + +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 +msgid "Serial Numbers" +msgstr "" + +#: build/serializers.py:283 +msgid "Enter serial numbers for build outputs" +msgstr "" + +#: build/serializers.py:296 +msgid "Auto Allocate Serial Numbers" +msgstr "" + +#: build/serializers.py:297 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "" + +#: build/serializers.py:332 stock/api.py:788 +msgid "The following serial numbers already exist or are invalid" +msgstr "" + +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +msgid "A list of build outputs must be provided" +msgstr "" + +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 +#: templates/js/translated/barcode.js:530 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 +msgid "Location" +msgstr "" + +#: build/serializers.py:422 +msgid "Stock location for scrapped outputs" +msgstr "" + +#: build/serializers.py:428 +msgid "Discard Allocations" +msgstr "" + +#: build/serializers.py:429 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "" + +#: build/serializers.py:434 +msgid "Reason for scrapping build output(s)" +msgstr "" + +#: build/serializers.py:494 +msgid "Location for completed build outputs" +msgstr "" + +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 +msgid "Status" +msgstr "" + +#: build/serializers.py:506 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:507 +msgid "Complete outputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:576 +msgid "Remove Allocated Stock" +msgstr "" + +#: build/serializers.py:577 +msgid "Subtract any stock which has already been allocated to this build" +msgstr "" + +#: build/serializers.py:583 +msgid "Remove Incomplete Outputs" +msgstr "" + +#: build/serializers.py:584 +msgid "Delete any build outputs which have not been completed" +msgstr "" + +#: build/serializers.py:611 +msgid "Not permitted" +msgstr "" + +#: build/serializers.py:612 +msgid "Accept as consumed by this build order" +msgstr "" + +#: build/serializers.py:613 +msgid "Deallocate before completing this build order" +msgstr "" + +#: build/serializers.py:635 +msgid "Overallocated Stock" +msgstr "" + +#: build/serializers.py:637 +msgid "How do you want to handle extra stock items assigned to the build order" +msgstr "" + +#: build/serializers.py:647 +msgid "Some stock items have been overallocated" +msgstr "" + +#: build/serializers.py:652 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:653 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:663 templates/js/translated/build.js:307 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:669 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:679 templates/js/translated/build.js:311 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:688 templates/js/translated/build.js:295 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:718 +msgid "Build Line" +msgstr "" + +#: build/serializers.py:728 +msgid "Build output" +msgstr "" + +#: build/serializers.py:736 +msgid "Build output must point to the same build" +msgstr "" + +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 +msgid "bom_item.part must point to the same part as the build order" +msgstr "" + +#: build/serializers.py:801 stock/serializers.py:1002 +msgid "Item must be in stock" +msgstr "" + +#: build/serializers.py:849 order/serializers.py:1153 +#, python-brace-format +msgid "Available quantity ({q}) exceeded" +msgstr "" + +#: build/serializers.py:855 +msgid "Build output must be specified for allocation of tracked parts" +msgstr "" + +#: build/serializers.py:862 +msgid "Build output cannot be specified for allocation of untracked parts" +msgstr "" + +#: build/serializers.py:886 order/serializers.py:1435 +msgid "Allocation items must be provided" +msgstr "" + +#: build/serializers.py:943 +msgid "Stock location where parts are to be sourced (leave blank to take from any location)" +msgstr "" + +#: build/serializers.py:951 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:952 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:957 +msgid "Interchangeable Stock" +msgstr "" + +#: build/serializers.py:958 +msgid "Stock items in multiple locations can be used interchangeably" +msgstr "" + +#: build/serializers.py:963 +msgid "Substitute Stock" +msgstr "" + +#: build/serializers.py:964 +msgid "Allow allocation of substitute parts" +msgstr "" + +#: build/serializers.py:969 +msgid "Optional Items" +msgstr "" + +#: build/serializers.py:970 +msgid "Allocate optional BOM items to build order" +msgstr "" + +#: build/tasks.py:149 +msgid "Stock required for build order" +msgstr "" + +#: build/tasks.py:166 +msgid "Overdue Build Order" +msgstr "" + +#: build/tasks.py:171 +#, python-brace-format +msgid "Build order {bo} is now overdue" +msgstr "" + +#: build/templates/build/build_base.html:18 +msgid "Part thumbnail" +msgstr "" + +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 +#: order/templates/order/order_base.html:29 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 +msgid "Barcode actions" +msgstr "" + +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 +#: order/templates/order/order_base.html:33 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 +msgid "Show QR Code" +msgstr "" + +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 +#: order/templates/order/order_base.html:36 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 +#: templates/js/translated/barcode.js:479 +#: templates/js/translated/barcode.js:484 +msgid "Unlink Barcode" +msgstr "" + +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 +#: order/templates/order/order_base.html:38 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 +msgid "Link Barcode" +msgstr "" + +#: build/templates/build/build_base.html:56 +#: order/templates/order/order_base.html:46 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 +msgid "Print actions" +msgstr "" + +#: build/templates/build/build_base.html:60 +msgid "Print build order report" +msgstr "" + +#: build/templates/build/build_base.html:67 +msgid "Build actions" +msgstr "" + +#: build/templates/build/build_base.html:71 +msgid "Edit Build" +msgstr "" + +#: build/templates/build/build_base.html:73 +msgid "Cancel Build" +msgstr "" + +#: build/templates/build/build_base.html:76 +msgid "Duplicate Build" +msgstr "" + +#: build/templates/build/build_base.html:79 +msgid "Delete Build" +msgstr "" + +#: build/templates/build/build_base.html:84 +#: build/templates/build/build_base.html:85 +msgid "Complete Build" +msgstr "" + +#: build/templates/build/build_base.html:107 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:117 +msgid "No build outputs have been created for this build order" +msgstr "" + +#: build/templates/build/build_base.html:124 +msgid "Build Order is ready to mark as completed" +msgstr "" + +#: build/templates/build/build_base.html:129 +msgid "Build Order cannot be completed as outstanding outputs remain" +msgstr "" + +#: build/templates/build/build_base.html:134 +msgid "Required build quantity has not yet been completed" +msgstr "" + +#: build/templates/build/build_base.html:139 +msgid "Stock has not been fully allocated to this Build Order" +msgstr "" + +#: build/templates/build/build_base.html:160 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 +msgid "Target Date" +msgstr "" + +#: build/templates/build/build_base.html:165 +#, python-format +msgid "This build was due on %(target)s" +msgstr "" + +#: build/templates/build/build_base.html:165 +#: build/templates/build/build_base.html:222 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 +msgid "Overdue" +msgstr "" + +#: build/templates/build/build_base.html:177 +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "" + +#: build/templates/build/build_base.html:190 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 +#: order/templates/order/sales_order_base.html:9 +#: order/templates/order/sales_order_base.html:28 +#: report/templates/report/inventree_build_order_base.html:135 +#: report/templates/report/inventree_so_report_base.html:14 +#: stock/templates/stock/item_base.html:369 +#: templates/email/overdue_sales_order.html:15 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 +msgid "Sales Order" +msgstr "" + +#: build/templates/build/build_base.html:197 +#: build/templates/build/detail.html:115 +#: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 +msgid "Issued By" +msgstr "" + +#: build/templates/build/build_base.html:211 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 +msgid "Priority" +msgstr "" + +#: build/templates/build/build_base.html:273 +msgid "Delete Build Order" +msgstr "" + +#: build/templates/build/build_base.html:283 +msgid "Build Order QR Code" +msgstr "" + +#: build/templates/build/build_base.html:295 +msgid "Link Barcode to Build Order" +msgstr "" + +#: build/templates/build/detail.html:15 +msgid "Build Details" +msgstr "" + +#: build/templates/build/detail.html:38 +msgid "Stock Source" +msgstr "" + +#: build/templates/build/detail.html:43 +msgid "Stock can be taken from any available location." +msgstr "" + +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 +msgid "Destination" +msgstr "" + +#: build/templates/build/detail.html:56 +msgid "Destination location not specified" +msgstr "" + +#: build/templates/build/detail.html:73 +msgid "Allocated Parts" +msgstr "" + +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 +msgid "Batch" +msgstr "" + +#: build/templates/build/detail.html:133 +#: order/templates/order/order_base.html:173 +#: order/templates/order/return_order_base.html:151 +#: order/templates/order/sales_order_base.html:186 +#: templates/js/translated/build.js:2184 +msgid "Created" +msgstr "" + +#: build/templates/build/detail.html:144 +msgid "No target date set" +msgstr "" + +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + +#: build/templates/build/detail.html:153 +msgid "Build not complete" +msgstr "" + +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 +msgid "Child Build Orders" +msgstr "" + +#: build/templates/build/detail.html:177 +msgid "Allocate Stock to Build" +msgstr "" + +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "" + +#: build/templates/build/detail.html:184 +msgid "Automatically allocate stock to build" +msgstr "" + +#: build/templates/build/detail.html:185 +msgid "Auto Allocate" +msgstr "" + +#: build/templates/build/detail.html:187 +msgid "Manually allocate stock to build" +msgstr "" + +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 +msgid "Allocate Stock" +msgstr "" + +#: build/templates/build/detail.html:191 +msgid "Order required parts" +msgstr "" + +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 +msgid "Order Parts" +msgstr "" + +#: build/templates/build/detail.html:210 +msgid "Incomplete Build Outputs" +msgstr "" + +#: build/templates/build/detail.html:214 +msgid "Create new build output" +msgstr "" + +#: build/templates/build/detail.html:215 +msgid "New Build Output" +msgstr "" + +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +msgid "Consumed Stock" +msgstr "" + +#: build/templates/build/detail.html:244 +msgid "Completed Build Outputs" +msgstr "" + +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 +#: company/templates/company/manufacturer_part_sidebar.html:9 +#: company/templates/company/sidebar.html:39 +#: order/templates/order/po_sidebar.html:9 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 +#: order/templates/order/return_order_sidebar.html:7 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 +#: stock/templates/stock/stock_sidebar.html:23 +msgid "Attachments" +msgstr "" + +#: build/templates/build/detail.html:271 +msgid "Build Notes" +msgstr "" + +#: build/templates/build/detail.html:422 +msgid "Allocation Complete" +msgstr "" + +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "" + +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 +msgid "New Build Order" +msgstr "" + +#: build/templates/build/sidebar.html:5 +msgid "Build Order Details" +msgstr "" + +#: build/templates/build/sidebar.html:10 +msgid "Incomplete Outputs" +msgstr "" + +#: common/files.py:63 +#, python-brace-format +msgid "Unsupported file format: {fmt}" +msgstr "" + +#: common/files.py:65 +msgid "Error reading file (invalid encoding)" +msgstr "" + +#: common/files.py:70 +msgid "Error reading file (invalid format)" +msgstr "" + +#: common/files.py:72 +msgid "Error reading file (incorrect dimension)" +msgstr "" + +#: common/files.py:74 +msgid "Error reading file (data could be corrupted)" +msgstr "" + +#: common/forms.py:13 +msgid "File" +msgstr "" + +#: common/forms.py:14 +msgid "Select file to upload" +msgstr "" + +#: common/forms.py:28 +msgid "{name.title()} File" +msgstr "" + +#: common/forms.py:29 +#, python-brace-format +msgid "Select {name} file to upload" +msgstr "" + +#: common/models.py:71 +msgid "Updated" +msgstr "" + +#: common/models.py:72 +msgid "Timestamp of last update" +msgstr "" + +#: common/models.py:119 +msgid "Unique project code" +msgstr "" + +#: common/models.py:126 +msgid "Project description" +msgstr "" + +#: common/models.py:648 +msgid "Settings key (must be unique - case insensitive)" +msgstr "" + +#: common/models.py:650 +msgid "Settings value" +msgstr "" + +#: common/models.py:691 +msgid "Chosen value is not a valid option" +msgstr "" + +#: common/models.py:708 +msgid "Value must be a boolean value" +msgstr "" + +#: common/models.py:719 +msgid "Value must be an integer value" +msgstr "" + +#: common/models.py:758 +msgid "Key string must be unique" +msgstr "" + +#: common/models.py:963 +msgid "No group" +msgstr "" + +#: common/models.py:988 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/models.py:990 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "" + +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 +msgid "Restart required" +msgstr "" + +#: common/models.py:1069 +msgid "A setting has been changed which requires a server restart" +msgstr "" + +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 +msgid "Server Instance Name" +msgstr "" + +#: common/models.py:1085 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:1090 +msgid "Use instance name" +msgstr "" + +#: common/models.py:1091 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:1097 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:1098 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:1104 company/models.py:101 company/models.py:102 +msgid "Company name" +msgstr "" + +#: common/models.py:1105 +msgid "Internal company name" +msgstr "" + +#: common/models.py:1110 +msgid "Base URL" +msgstr "" + +#: common/models.py:1111 +msgid "Base URL for server instance" +msgstr "" + +#: common/models.py:1118 +msgid "Default Currency" +msgstr "" + +#: common/models.py:1119 +msgid "Select base currency for pricing calculations" +msgstr "" + +#: common/models.py:1126 +msgid "Currency Update Interval" +msgstr "" + +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" + +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" +msgstr "" + +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "" + +#: common/models.py:1164 +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:1169 +msgid "Require confirm" +msgstr "" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "" + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "" + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" + +#: common/models.py:1197 +msgid "Automatic Backup" +msgstr "" + +#: common/models.py:1198 +msgid "Enable automatic backup of database and media files" +msgstr "" + +#: common/models.py:1204 +msgid "Auto Backup Interval" +msgstr "" + +#: common/models.py:1205 +msgid "Specify number of days between automated backup events" +msgstr "" + +#: common/models.py:1215 +msgid "Task Deletion Interval" +msgstr "" + +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1226 +msgid "Error Log Deletion Interval" +msgstr "" + +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1237 +msgid "Notification Deletion Interval" +msgstr "" + +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "" + +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" + +#: common/models.py:1255 +msgid "Barcode Input Delay" +msgstr "" + +#: common/models.py:1256 +msgid "Barcode input processing delay time" +msgstr "" + +#: common/models.py:1266 +msgid "Barcode Webcam Support" +msgstr "" + +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" +msgstr "" + +#: common/models.py:1273 +msgid "Part Revisions" +msgstr "" + +#: common/models.py:1274 +msgid "Enable revision field for Part" +msgstr "" + +#: common/models.py:1280 +msgid "IPN Regex" +msgstr "" + +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" +msgstr "" + +#: common/models.py:1285 +msgid "Allow Duplicate IPN" +msgstr "" + +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" +msgstr "" + +#: common/models.py:1292 +msgid "Allow Editing IPN" +msgstr "" + +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" +msgstr "" + +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" +msgstr "" + +#: common/models.py:1307 +msgid "Copy parameter data by default when duplicating a part" +msgstr "" + +#: common/models.py:1313 +msgid "Copy Part Test Data" +msgstr "" + +#: common/models.py:1314 +msgid "Copy test data by default when duplicating a part" +msgstr "" + +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" +msgstr "" + +#: common/models.py:1321 +msgid "Copy category parameter templates when creating a part" +msgstr "" + +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" +msgstr "" + +#: common/models.py:1328 +msgid "Parts are templates by default" +msgstr "" + +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" +msgstr "" + +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" +msgstr "" + +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" +msgstr "" + +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" +msgstr "" + +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" +msgstr "" + +#: common/models.py:1349 +msgid "Parts are purchaseable by default" +msgstr "" + +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" +msgstr "" + +#: common/models.py:1363 +msgid "Parts are trackable by default" +msgstr "" + +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" +msgstr "" + +#: common/models.py:1370 +msgid "Parts are virtual by default" +msgstr "" + +#: common/models.py:1376 +msgid "Show Import in Views" +msgstr "" + +#: common/models.py:1377 +msgid "Display the import wizard in some part views" +msgstr "" + +#: common/models.py:1383 +msgid "Show related parts" +msgstr "" + +#: common/models.py:1384 +msgid "Display related parts for a part" +msgstr "" + +#: common/models.py:1390 +msgid "Initial Stock Data" +msgstr "" + +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" +msgstr "" + +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" +msgstr "" + +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" +msgstr "" + +#: common/models.py:1404 +msgid "Part Name Display Format" +msgstr "" + +#: common/models.py:1405 +msgid "Format to display the part name" +msgstr "" + +#: common/models.py:1412 +msgid "Part Category Default Icon" +msgstr "" + +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1436 +msgid "Maximum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1437 +msgid "Maximum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1447 +msgid "Use Supplier Pricing" +msgstr "" + +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" +msgstr "" + +#: common/models.py:1454 +msgid "Purchase History Override" +msgstr "" + +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" +msgstr "" + +#: common/models.py:1461 +msgid "Use Stock Item Pricing" +msgstr "" + +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" +msgstr "" + +#: common/models.py:1468 +msgid "Stock Item Pricing Age" +msgstr "" + +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" +msgstr "" + +#: common/models.py:1479 +msgid "Use Variant Pricing" +msgstr "" + +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" +msgstr "" + +#: common/models.py:1486 +msgid "Active Variants Only" +msgstr "" + +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" +msgstr "" + +#: common/models.py:1493 +msgid "Pricing Rebuild Interval" +msgstr "" + +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" +msgstr "" + +#: common/models.py:1504 +msgid "Internal Prices" +msgstr "" + +#: common/models.py:1505 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:1511 +msgid "Internal Price Override" +msgstr "" + +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" +msgstr "" + +#: common/models.py:1518 +msgid "Enable label printing" +msgstr "" + +#: common/models.py:1519 +msgid "Enable label printing from the web interface" +msgstr "" + +#: common/models.py:1525 +msgid "Label Image DPI" +msgstr "" + +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" +msgstr "" + +#: common/models.py:1535 +msgid "Enable Reports" +msgstr "" + +#: common/models.py:1536 +msgid "Enable generation of reports" +msgstr "" + +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:1543 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" +msgstr "" + +#: common/models.py:1550 +msgid "Default page size for PDF reports" +msgstr "" + +#: common/models.py:1556 +msgid "Enable Test Reports" +msgstr "" + +#: common/models.py:1557 +msgid "Enable generation of test reports" +msgstr "" + +#: common/models.py:1563 +msgid "Attach Test Reports" +msgstr "" + +#: common/models.py:1564 +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +msgstr "" + +#: common/models.py:1570 +msgid "Globally Unique Serials" +msgstr "" + +#: common/models.py:1571 +msgid "Serial numbers for stock items must be globally unique" +msgstr "" + +#: common/models.py:1577 +msgid "Autofill Serial Numbers" +msgstr "" + +#: common/models.py:1578 +msgid "Autofill serial numbers in forms" +msgstr "" + +#: common/models.py:1584 +msgid "Delete Depleted Stock" +msgstr "" + +#: common/models.py:1585 +msgid "Determines default behaviour when a stock item is depleted" +msgstr "" + +#: common/models.py:1591 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:1592 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" +msgstr "" + +#: common/models.py:1598 +msgid "Enable stock expiry functionality" +msgstr "" + +#: common/models.py:1604 +msgid "Sell Expired Stock" +msgstr "" + +#: common/models.py:1605 +msgid "Allow sale of expired stock" +msgstr "" + +#: common/models.py:1611 +msgid "Stock Stale Time" +msgstr "" + +#: common/models.py:1612 +msgid "Number of days stock items are considered stale before expiring" +msgstr "" + +#: common/models.py:1619 +msgid "Build Expired Stock" +msgstr "" + +#: common/models.py:1620 +msgid "Allow building with expired stock" +msgstr "" + +#: common/models.py:1626 +msgid "Stock Ownership Control" +msgstr "" + +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" +msgstr "" + +#: common/models.py:1633 +msgid "Stock Location Default Icon" +msgstr "" + +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1646 +msgid "Build Order Reference Pattern" +msgstr "" + +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" +msgstr "" + +#: common/models.py:1653 +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" +msgstr "" + +#: common/models.py:1660 +msgid "Return Order Reference Pattern" +msgstr "" + +#: common/models.py:1661 +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" +msgstr "" + +#: common/models.py:1668 +msgid "Allow editing of return orders after they have been completed" +msgstr "" + +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" +msgstr "" + +#: common/models.py:1675 +msgid "Required pattern for generating Sales Order reference field" +msgstr "" + +#: common/models.py:1681 +msgid "Sales Order Default Shipment" +msgstr "" + +#: common/models.py:1682 +msgid "Enable creation of default shipment with sales orders" +msgstr "" + +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" +msgstr "" + +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" +msgstr "" + +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" +msgstr "" + +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" +msgstr "" + +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" +msgstr "" + +#: common/models.py:1752 +msgid "Mail twice" +msgstr "" + +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" +msgstr "" + +#: common/models.py:1759 +msgid "Password twice" +msgstr "" + +#: common/models.py:1760 +msgid "On signup ask users twice for their password" +msgstr "" + +#: common/models.py:1766 +msgid "Allowed domains" +msgstr "" + +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgstr "" + +#: common/models.py:1773 +msgid "Group on signup" +msgstr "" + +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" +msgstr "" + +#: common/models.py:1780 +msgid "Enforce MFA" +msgstr "" + +#: common/models.py:1781 +msgid "Users must use multifactor security." +msgstr "" + +#: common/models.py:1787 +msgid "Check plugins on startup" +msgstr "" + +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" +msgstr "" + +#: common/models.py:1796 +msgid "Enable URL integration" +msgstr "" + +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" +msgstr "" + +#: common/models.py:1804 +msgid "Enable navigation integration" +msgstr "" + +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" +msgstr "" + +#: common/models.py:1812 +msgid "Enable app integration" +msgstr "" + +#: common/models.py:1813 +msgid "Enable plugins to add apps" +msgstr "" + +#: common/models.py:1820 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:1821 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1828 +msgid "Enable event integration" +msgstr "" + +#: common/models.py:1829 +msgid "Enable plugins to respond to internal events" +msgstr "" + +#: common/models.py:1836 +msgid "Enable project codes" +msgstr "" + +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" +msgstr "" + +#: common/models.py:1843 +msgid "Stocktake Functionality" +msgstr "" + +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgstr "" + +#: common/models.py:1850 +msgid "Exclude External Locations" +msgstr "" + +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "" + +#: common/models.py:1857 +msgid "Automatic Stocktake Period" +msgstr "" + +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" +msgstr "" + +#: common/models.py:1867 +msgid "Report Deletion Interval" +msgstr "" + +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" +msgstr "" + +#: common/models.py:1925 +msgid "Hide inactive parts" +msgstr "" + +#: common/models.py:1926 +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "" + +#: common/models.py:1932 +msgid "Show subscribed parts" +msgstr "" + +#: common/models.py:1933 +msgid "Show subscribed parts on the homepage" +msgstr "" + +#: common/models.py:1939 +msgid "Show subscribed categories" +msgstr "" + +#: common/models.py:1940 +msgid "Show subscribed part categories on the homepage" +msgstr "" + +#: common/models.py:1946 +msgid "Show latest parts" +msgstr "" + +#: common/models.py:1947 +msgid "Show latest parts on the homepage" +msgstr "" + +#: common/models.py:1953 +msgid "Show unvalidated BOMs" +msgstr "" + +#: common/models.py:1954 +msgid "Show BOMs that await validation on the homepage" +msgstr "" + +#: common/models.py:1960 +msgid "Show recent stock changes" +msgstr "" + +#: common/models.py:1961 +msgid "Show recently changed stock items on the homepage" +msgstr "" + +#: common/models.py:1967 +msgid "Show low stock" +msgstr "" + +#: common/models.py:1968 +msgid "Show low stock items on the homepage" +msgstr "" + +#: common/models.py:1974 +msgid "Show depleted stock" +msgstr "" + +#: common/models.py:1975 +msgid "Show depleted stock items on the homepage" +msgstr "" + +#: common/models.py:1981 +msgid "Show needed stock" +msgstr "" + +#: common/models.py:1982 +msgid "Show stock items needed for builds on the homepage" +msgstr "" + +#: common/models.py:1988 +msgid "Show expired stock" +msgstr "" + +#: common/models.py:1989 +msgid "Show expired stock items on the homepage" +msgstr "" + +#: common/models.py:1995 +msgid "Show stale stock" +msgstr "" + +#: common/models.py:1996 +msgid "Show stale stock items on the homepage" +msgstr "" + +#: common/models.py:2002 +msgid "Show pending builds" +msgstr "" + +#: common/models.py:2003 +msgid "Show pending builds on the homepage" +msgstr "" + +#: common/models.py:2009 +msgid "Show overdue builds" +msgstr "" + +#: common/models.py:2010 +msgid "Show overdue builds on the homepage" +msgstr "" + +#: common/models.py:2016 +msgid "Show outstanding POs" +msgstr "" + +#: common/models.py:2017 +msgid "Show outstanding POs on the homepage" +msgstr "" + +#: common/models.py:2023 +msgid "Show overdue POs" +msgstr "" + +#: common/models.py:2024 +msgid "Show overdue POs on the homepage" +msgstr "" + +#: common/models.py:2030 +msgid "Show outstanding SOs" +msgstr "" + +#: common/models.py:2031 +msgid "Show outstanding SOs on the homepage" +msgstr "" + +#: common/models.py:2037 +msgid "Show overdue SOs" +msgstr "" + +#: common/models.py:2038 +msgid "Show overdue SOs on the homepage" +msgstr "" + +#: common/models.py:2044 +msgid "Show pending SO shipments" +msgstr "" + +#: common/models.py:2045 +msgid "Show pending SO shipments on the homepage" +msgstr "" + +#: common/models.py:2051 +msgid "Show News" +msgstr "" + +#: common/models.py:2052 +msgid "Show news on the homepage" +msgstr "" + +#: common/models.py:2058 +msgid "Inline label display" +msgstr "" + +#: common/models.py:2059 +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2065 +msgid "Default label printer" +msgstr "" + +#: common/models.py:2066 +msgid "Configure which label printer should be selected by default" +msgstr "" + +#: common/models.py:2072 +msgid "Inline report display" +msgstr "" + +#: common/models.py:2073 +msgid "Display PDF reports in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2079 +msgid "Search Parts" +msgstr "" + +#: common/models.py:2080 +msgid "Display parts in search preview window" +msgstr "" + +#: common/models.py:2086 +msgid "Search Supplier Parts" +msgstr "" + +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" +msgstr "" + +#: common/models.py:2093 +msgid "Search Manufacturer Parts" +msgstr "" + +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" +msgstr "" + +#: common/models.py:2100 +msgid "Hide Inactive Parts" +msgstr "" + +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" +msgstr "" + +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" +msgstr "" + +#: common/models.py:2121 +msgid "Hide Unavailable Stock Items" +msgstr "" + +#: common/models.py:2122 +msgid "Exclude stock items which are not available from the search preview window" +msgstr "" + +#: common/models.py:2128 +msgid "Search Locations" +msgstr "" + +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" +msgstr "" + +#: common/models.py:2177 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 +msgid "Unit price at specified quantity" +msgstr "" + +#: common/models.py:2511 common/models.py:2689 +msgid "Endpoint" +msgstr "" + +#: common/models.py:2512 +msgid "Endpoint at which this webhook is received" +msgstr "" + +#: common/models.py:2521 +msgid "Name for this webhook" +msgstr "" + +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 +msgid "Active" +msgstr "" + +#: common/models.py:2527 +msgid "Is this webhook active" +msgstr "" + +#: common/models.py:2541 users/models.py:132 +msgid "Token" +msgstr "" + +#: common/models.py:2542 +msgid "Token for access" +msgstr "" + +#: common/models.py:2549 +msgid "Secret" +msgstr "" + +#: common/models.py:2550 +msgid "Shared secret for HMAC" +msgstr "" + +#: common/models.py:2656 +msgid "Message ID" +msgstr "" + +#: common/models.py:2657 +msgid "Unique identifier for this message" +msgstr "" + +#: common/models.py:2665 +msgid "Host" +msgstr "" + +#: common/models.py:2666 +msgid "Host from which this message was received" +msgstr "" + +#: common/models.py:2673 +msgid "Header" +msgstr "" + +#: common/models.py:2674 +msgid "Header of this message" +msgstr "" + +#: common/models.py:2680 +msgid "Body" +msgstr "" + +#: common/models.py:2681 +msgid "Body of this message" +msgstr "" + +#: common/models.py:2690 +msgid "Endpoint on which this message was received" +msgstr "" + +#: common/models.py:2695 +msgid "Worked on" +msgstr "" + +#: common/models.py:2696 +msgid "Was the work on this message finished?" +msgstr "" + +#: common/models.py:2850 +msgid "Id" +msgstr "" + +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 +msgid "Title" +msgstr "" + +#: common/models.py:2866 templates/js/translated/news.js:60 +msgid "Published" +msgstr "" + +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 +msgid "Author" +msgstr "" + +#: common/models.py:2876 templates/js/translated/news.js:52 +msgid "Summary" +msgstr "" + +#: common/models.py:2881 +msgid "Read" +msgstr "" + +#: common/models.py:2882 +msgid "Was this news item read?" +msgstr "" + +#: common/models.py:2901 company/models.py:139 part/models.py:881 +#: report/templates/report/inventree_bill_of_materials_report.html:126 +#: report/templates/report/inventree_bill_of_materials_report.html:148 +#: report/templates/report/inventree_return_order_report_base.html:35 +#: stock/templates/stock/item_base.html:133 templates/503.html:31 +#: templates/hover_image.html:7 templates/hover_image.html:9 +#: templates/modals.html:6 +msgid "Image" +msgstr "" + +#: common/models.py:2902 +msgid "Image file" +msgstr "" + +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 +#, python-brace-format +msgid "New {verbose_name}" +msgstr "" + +#: common/notifications.py:292 +msgid "A new order has been created and assigned to you" +msgstr "" + +#: common/notifications.py:298 common/notifications.py:305 +msgid "Items Received" +msgstr "" + +#: common/notifications.py:300 +msgid "Items have been received against a purchase order" +msgstr "" + +#: common/notifications.py:307 +msgid "Items have been received against a return order" +msgstr "" + +#: common/notifications.py:419 +msgid "Error raised by plugin" +msgstr "" + +#: common/views.py:85 order/templates/order/order_wizard/po_upload.html:51 +#: order/templates/order/purchase_order_detail.html:24 order/views.py:118 +#: part/templates/part/import_wizard/part_upload.html:58 part/views.py:108 +#: templates/patterns/wizard/upload.html:37 +msgid "Upload File" +msgstr "" + +#: common/views.py:86 order/templates/order/order_wizard/match_fields.html:52 +#: order/views.py:119 +#: part/templates/part/import_wizard/ajax_match_fields.html:45 +#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:109 +#: templates/patterns/wizard/match_fields.html:51 +msgid "Match Fields" +msgstr "" + +#: common/views.py:87 +msgid "Match Items" +msgstr "" + +#: common/views.py:420 +msgid "Fields matching failed" +msgstr "" + +#: common/views.py:481 +msgid "Parts imported" +msgstr "" + +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 +#: order/templates/order/order_wizard/match_parts.html:19 +#: order/templates/order/order_wizard/po_upload.html:49 +#: part/templates/part/import_wizard/match_fields.html:27 +#: part/templates/part/import_wizard/match_references.html:19 +#: part/templates/part/import_wizard/part_upload.html:56 +#: templates/patterns/wizard/match_fields.html:26 +#: templates/patterns/wizard/upload.html:35 +msgid "Previous Step" +msgstr "" + +#: company/models.py:106 +msgid "Company description" +msgstr "" + +#: company/models.py:107 +msgid "Description of the company" +msgstr "" + +#: company/models.py:113 company/templates/company/company_base.html:100 +#: templates/InvenTree/settings/plugin_settings.html:54 +#: templates/js/translated/company.js:522 +msgid "Website" +msgstr "" + +#: company/models.py:114 +msgid "Company website URL" +msgstr "" + +#: company/models.py:118 +msgid "Phone number" +msgstr "" + +#: company/models.py:119 +msgid "Contact phone number" +msgstr "" + +#: company/models.py:122 +msgid "Contact email address" +msgstr "" + +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 +msgid "Contact" +msgstr "" + +#: company/models.py:126 +msgid "Point of contact" +msgstr "" + +#: company/models.py:128 +msgid "Link to external company information" +msgstr "" + +#: company/models.py:142 +msgid "is customer" +msgstr "" + +#: company/models.py:142 +msgid "Do you sell items to this company?" +msgstr "" + +#: company/models.py:144 +msgid "is supplier" +msgstr "" + +#: company/models.py:144 +msgid "Do you purchase items from this company?" +msgstr "" + +#: company/models.py:146 +msgid "is manufacturer" +msgstr "" + +#: company/models.py:146 +msgid "Does this company manufacture parts?" +msgstr "" + +#: company/models.py:153 +msgid "Default currency used for this company" +msgstr "" + +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 +msgid "Company" +msgstr "" + +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 +msgid "Base Part" +msgstr "" + +#: company/models.py:416 company/models.py:692 +msgid "Select part" +msgstr "" + +#: company/models.py:427 company/templates/company/company_base.html:76 +#: company/templates/company/manufacturer_part.html:90 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 +msgid "Manufacturer" +msgstr "" + +#: company/models.py:428 +msgid "Select manufacturer" +msgstr "" + +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 +msgid "MPN" +msgstr "" + +#: company/models.py:435 +msgid "Manufacturer Part Number" +msgstr "" + +#: company/models.py:441 +msgid "URL for external manufacturer part link" +msgstr "" + +#: company/models.py:447 +msgid "Manufacturer part description" +msgstr "" + +#: company/models.py:494 company/models.py:518 company/models.py:713 +#: 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:525 +msgid "Parameter name" +msgstr "" + +#: company/models.py:531 +#: report/templates/report/inventree_test_report_base.html:104 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 +msgid "Value" +msgstr "" + +#: company/models.py:532 +msgid "Parameter value" +msgstr "" + +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 +msgid "Units" +msgstr "" + +#: company/models.py:539 +msgid "Parameter units" +msgstr "" + +#: company/models.py:633 +msgid "Pack units must be compatible with the base part units" +msgstr "" + +#: company/models.py:639 +msgid "Pack units must be greater than zero" +msgstr "" + +#: company/models.py:655 +msgid "Linked manufacturer part must reference the same base part" +msgstr "" + +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 +#: templates/email/overdue_purchase_order.html:16 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 +#: templates/js/translated/pricing.js:498 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 +msgid "Supplier" +msgstr "" + +#: company/models.py:700 +msgid "Select supplier" +msgstr "" + +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 +#: templates/js/translated/pricing.js:510 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 +msgid "SKU" +msgstr "" + +#: company/models.py:706 part/serializers.py:436 +msgid "Supplier stock keeping unit" +msgstr "" + +#: company/models.py:714 +msgid "Select manufacturer part" +msgstr "" + +#: company/models.py:720 +msgid "URL for external supplier part link" +msgstr "" + +#: company/models.py:726 +msgid "Supplier part description" +msgstr "" + +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_bill_of_materials_report.html:140 +#: report/templates/report/inventree_po_report_base.html:32 +#: report/templates/report/inventree_return_order_report_base.html:27 +#: report/templates/report/inventree_slr_report.html:105 +#: report/templates/report/inventree_so_report_base.html:32 +#: stock/serializers.py:501 +msgid "Note" +msgstr "" + +#: company/models.py:735 part/models.py:1889 +msgid "base cost" +msgstr "" + +#: company/models.py:735 part/models.py:1889 +msgid "Minimum charge (e.g. stocking fee)" +msgstr "" + +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 +msgid "Packaging" +msgstr "" + +#: company/models.py:737 +msgid "Part packaging" +msgstr "" + +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 +msgid "Pack Quantity" +msgstr "" + +#: company/models.py:742 +msgid "Total quantity supplied in a single pack. Leave empty for single items." +msgstr "" + +#: company/models.py:758 part/models.py:1891 +msgid "multiple" +msgstr "" + +#: company/models.py:758 +msgid "Order multiple" +msgstr "" + +#: company/models.py:767 +msgid "Quantity available from supplier" +msgstr "" + +#: company/models.py:771 +msgid "Availability Updated" +msgstr "" + +#: company/models.py:772 +msgid "Date of last update of availability data" +msgstr "" + +#: company/serializers.py:153 +msgid "Default currency used for this supplier" +msgstr "" + +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 +msgid "Create Purchase Order" +msgstr "" + +#: company/templates/company/company_base.html:27 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:32 +msgid "Edit company information" +msgstr "" + +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:37 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 +msgid "Delete Company" +msgstr "" + +#: company/templates/company/company_base.html:47 +#: company/templates/company/manufacturer_part.html:51 +#: company/templates/company/supplier_part.html:83 +#: part/templates/part/part_thumb.html:20 +#: report/templates/report/inventree_build_order_base.html:98 +#: report/templates/report/inventree_po_report_base.html:40 +#: report/templates/report/inventree_so_report_base.html:40 +#: report/templates/report/inventree_test_report_base.html:84 +#: report/templates/report/inventree_test_report_base.html:163 +msgid "Part image" +msgstr "" + +#: company/templates/company/company_base.html:55 +#: part/templates/part/part_thumb.html:12 +msgid "Upload new image" +msgstr "" + +#: company/templates/company/company_base.html:58 +#: part/templates/part/part_thumb.html:14 +msgid "Download image from URL" +msgstr "" + +#: company/templates/company/company_base.html:60 +#: part/templates/part/part_thumb.html:16 +msgid "Delete image" +msgstr "" + +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 +#: templates/email/overdue_sales_order.html:16 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 +msgid "Customer" +msgstr "" + +#: company/templates/company/company_base.html:111 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 +msgid "Remove Image" +msgstr "" + +#: company/templates/company/company_base.html:206 +msgid "Remove associated image from this company" +msgstr "" + +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 +#: templates/InvenTree/settings/user.html:88 +#: templates/InvenTree/settings/user_sso.html:43 +msgid "Remove" +msgstr "" + +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 +msgid "Upload Image" +msgstr "" + +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 +msgid "Download Image" +msgstr "" + +#: company/templates/company/detail.html:15 +#: company/templates/company/manufacturer_part_sidebar.html:7 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 +msgid "Supplier Parts" +msgstr "" + +#: company/templates/company/detail.html:19 +msgid "Create new supplier part" +msgstr "" + +#: company/templates/company/detail.html:20 +#: company/templates/company/manufacturer_part.html:123 +#: part/templates/part/detail.html:356 +msgid "New Supplier Part" +msgstr "" + +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 +msgid "Manufacturer Parts" +msgstr "" + +#: company/templates/company/detail.html:45 +msgid "Create new manufacturer part" +msgstr "" + +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 +msgid "New Manufacturer Part" +msgstr "" + +#: company/templates/company/detail.html:65 +msgid "Supplier Stock" +msgstr "" + +#: company/templates/company/detail.html:75 +#: company/templates/company/sidebar.html:12 +#: company/templates/company/supplier_part_sidebar.html:7 +#: order/templates/order/order_base.html:13 +#: order/templates/order/purchase_orders.html:8 +#: order/templates/order/purchase_orders.html:12 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 +msgid "Purchase Orders" +msgstr "" + +#: company/templates/company/detail.html:79 +#: order/templates/order/purchase_orders.html:17 +msgid "Create new purchase order" +msgstr "" + +#: company/templates/company/detail.html:80 +#: order/templates/order/purchase_orders.html:18 +msgid "New Purchase Order" +msgstr "" + +#: company/templates/company/detail.html:101 +#: company/templates/company/sidebar.html:21 +#: order/templates/order/sales_order_base.html:13 +#: order/templates/order/sales_orders.html:8 +#: order/templates/order/sales_orders.html:15 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 +msgid "Sales Orders" +msgstr "" + +#: company/templates/company/detail.html:105 +#: order/templates/order/sales_orders.html:20 +msgid "Create new sales order" +msgstr "" + +#: company/templates/company/detail.html:106 +#: order/templates/order/sales_orders.html:21 +msgid "New Sales Order" +msgstr "" + +#: company/templates/company/detail.html:126 +msgid "Assigned Stock" +msgstr "" + +#: company/templates/company/detail.html:142 +#: company/templates/company/sidebar.html:29 +#: order/templates/order/return_order_base.html:13 +#: order/templates/order/return_orders.html:8 +#: order/templates/order/return_orders.html:15 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 +msgid "Return Orders" +msgstr "" + +#: company/templates/company/detail.html:146 +#: order/templates/order/return_orders.html:20 +msgid "Create new return order" +msgstr "" + +#: company/templates/company/detail.html:147 +#: order/templates/order/return_orders.html:21 +msgid "New Return Order" +msgstr "" + +#: company/templates/company/detail.html:168 +msgid "Company Notes" +msgstr "" + +#: company/templates/company/detail.html:183 +msgid "Company Contacts" +msgstr "" + +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 +msgid "Add Contact" +msgstr "" + +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "" + +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 +#: templates/InvenTree/search.html:180 templates/navbar.html:49 +msgid "Manufacturers" +msgstr "" + +#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 +msgid "Order part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:39 +#: templates/js/translated/company.js:1333 +msgid "Edit manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:43 +#: templates/js/translated/company.js:1334 +msgid "Delete manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:65 +#: company/templates/company/supplier_part.html:97 +msgid "Internal Part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:95 +msgid "No manufacturer information available" +msgstr "" + +#: company/templates/company/manufacturer_part.html:119 +#: company/templates/company/supplier_part.html:15 company/views.py:31 +#: part/admin.py:60 part/templates/part/part_sidebar.html:33 +#: templates/InvenTree/search.html:190 templates/navbar.html:48 +msgid "Suppliers" +msgstr "" + +#: company/templates/company/manufacturer_part.html:156 +#: company/templates/company/manufacturer_part_sidebar.html:5 +#: part/templates/part/category_sidebar.html:20 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 +#: templates/InvenTree/settings/category.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 +msgid "Add Parameter" +msgstr "" + +#: company/templates/company/sidebar.html:6 +msgid "Manufactured Parts" +msgstr "" + +#: company/templates/company/sidebar.html:10 +msgid "Supplied Parts" +msgstr "" + +#: company/templates/company/sidebar.html:16 +msgid "Supplied Stock Items" +msgstr "" + +#: company/templates/company/sidebar.html:25 +msgid "Assigned Stock Items" +msgstr "" + +#: company/templates/company/sidebar.html:33 +msgid "Contacts" +msgstr "" + +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + +#: company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 +msgid "Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 +msgid "Supplier part actions" +msgstr "" + +#: company/templates/company/supplier_part.html:55 +#: company/templates/company/supplier_part.html:56 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 +msgid "Order Part" +msgstr "" + +#: company/templates/company/supplier_part.html:60 +#: company/templates/company/supplier_part.html:61 +msgid "Update Availability" +msgstr "" + +#: company/templates/company/supplier_part.html:63 +#: company/templates/company/supplier_part.html:64 +#: templates/js/translated/company.js:294 +msgid "Edit Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:68 +#: company/templates/company/supplier_part.html:69 +#: templates/js/translated/company.js:269 +msgid "Duplicate Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:73 +msgid "Delete Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:74 +msgid "Delete Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:133 +msgid "No supplier information available" +msgstr "" + +#: company/templates/company/supplier_part.html:206 +msgid "Supplier Part Stock" +msgstr "" + +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 +msgid "Create new stock item" +msgstr "" + +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 +msgid "New Stock Item" +msgstr "" + +#: company/templates/company/supplier_part.html:223 +msgid "Supplier Part Orders" +msgstr "" + +#: company/templates/company/supplier_part.html:246 +msgid "Pricing Information" +msgstr "" + +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 +#: templates/js/translated/pricing.js:684 +msgid "Add Price Break" +msgstr "" + +#: company/templates/company/supplier_part.html:276 +msgid "Supplier Part QR Code" +msgstr "" + +#: company/templates/company/supplier_part.html:287 +msgid "Link Barcode to Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:359 +msgid "Update Part Availability" +msgstr "" + +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 +#: stock/templates/stock/location_sidebar.html:7 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 +msgid "Stock Items" +msgstr "" + +#: company/templates/company/supplier_part_sidebar.html:9 +msgid "Supplier Part Pricing" +msgstr "" + +#: company/views.py:32 +msgid "New Supplier" +msgstr "" + +#: company/views.py:38 +msgid "New Manufacturer" +msgstr "" + +#: company/views.py:43 templates/InvenTree/search.html:210 +#: templates/navbar.html:60 +msgid "Customers" +msgstr "" + +#: company/views.py:44 +msgid "New Customer" +msgstr "" + +#: company/views.py:51 templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/views.py:52 +msgid "New Company" +msgstr "" + +#: label/models.py:117 +msgid "Label name" +msgstr "" + +#: label/models.py:124 +msgid "Label description" +msgstr "" + +#: label/models.py:131 +msgid "Label" +msgstr "" + +#: label/models.py:132 +msgid "Label template file" +msgstr "" + +#: label/models.py:138 report/models.py:311 +msgid "Enabled" +msgstr "" + +#: label/models.py:139 +msgid "Label template is enabled" +msgstr "" + +#: label/models.py:144 +msgid "Width [mm]" +msgstr "" + +#: label/models.py:145 +msgid "Label width, specified in mm" +msgstr "" + +#: label/models.py:151 +msgid "Height [mm]" +msgstr "" + +#: label/models.py:152 +msgid "Label height, specified in mm" +msgstr "" + +#: label/models.py:158 report/models.py:304 +msgid "Filename Pattern" +msgstr "" + +#: label/models.py:159 +msgid "Pattern for generating label filenames" +msgstr "" + +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 +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 "" + +#: order/admin.py:29 order/models.py:72 +#: report/templates/report/inventree_po_report_base.html:31 +#: report/templates/report/inventree_so_report_base.html:31 +#: templates/js/translated/order.js:327 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 +msgid "Total Price" +msgstr "" + +#: order/api.py:231 +msgid "No matching purchase order found" +msgstr "" + +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 +#: order/templates/order/order_base.html:9 +#: order/templates/order/order_base.html:18 +#: report/templates/report/inventree_po_report_base.html:14 +#: stock/templates/stock/item_base.html:176 +#: templates/email/overdue_purchase_order.html:15 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 +msgid "Purchase Order" +msgstr "" + +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 +#: 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:278 +#: templates/js/translated/stock.js:2912 +msgid "Return Order" +msgstr "" + +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 +msgid "Unknown" +msgstr "" + +#: order/models.py:73 +msgid "Total price for this order" +msgstr "" + +#: order/models.py:78 order/serializers.py:50 +msgid "Order Currency" +msgstr "" + +#: order/models.py:80 order/serializers.py:51 +msgid "Currency for this order (leave blank to use company default)" +msgstr "" + +#: order/models.py:206 +msgid "Contact does not match selected company" +msgstr "" + +#: order/models.py:226 +msgid "Order description (optional)" +msgstr "" + +#: order/models.py:231 +msgid "Select project code for this order" +msgstr "" + +#: order/models.py:234 order/models.py:1093 order/models.py:1451 +msgid "Link to external page" +msgstr "" + +#: order/models.py:239 +msgid "Expected date for order delivery. Order will be overdue after this date." +msgstr "" + +#: order/models.py:248 +msgid "Created By" +msgstr "" + +#: order/models.py:255 +msgid "User or group responsible for this order" +msgstr "" + +#: order/models.py:265 +msgid "Point of contact for this order" +msgstr "" + +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 +msgid "Order reference" +msgstr "" + +#: order/models.py:372 order/models.py:794 +msgid "Purchase order status" +msgstr "" + +#: order/models.py:387 +msgid "Company from which the items are being ordered" +msgstr "" + +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 +msgid "Supplier Reference" +msgstr "" + +#: order/models.py:395 +msgid "Supplier order reference code" +msgstr "" + +#: order/models.py:402 +msgid "received by" +msgstr "" + +#: order/models.py:407 order/models.py:1759 +msgid "Issue Date" +msgstr "" + +#: order/models.py:408 order/models.py:1760 +msgid "Date order was issued" +msgstr "" + +#: order/models.py:414 order/models.py:1766 +msgid "Date order was completed" +msgstr "" + +#: order/models.py:449 +msgid "Part supplier must match PO supplier" +msgstr "" + +#: order/models.py:610 +msgid "Quantity must be a positive number" +msgstr "" + +#: order/models.py:783 +msgid "Company to which the items are being sold" +msgstr "" + +#: order/models.py:802 order/models.py:1753 +msgid "Customer Reference " +msgstr "" + +#: order/models.py:802 order/models.py:1754 +msgid "Customer order reference code" +msgstr "" + +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 +msgid "Shipment Date" +msgstr "" + +#: order/models.py:811 +msgid "shipped by" +msgstr "" + +#: order/models.py:860 +msgid "Order cannot be completed as no parts have been assigned" +msgstr "" + +#: order/models.py:864 +msgid "Only an open order can be marked as complete" +msgstr "" + +#: order/models.py:867 templates/js/translated/sales_order.js:503 +msgid "Order cannot be completed as there are incomplete shipments" +msgstr "" + +#: order/models.py:870 +msgid "Order cannot be completed as there are incomplete line items" +msgstr "" + +#: order/models.py:1074 +msgid "Item quantity" +msgstr "" + +#: order/models.py:1086 +msgid "Line item reference" +msgstr "" + +#: order/models.py:1088 +msgid "Line item notes" +msgstr "" + +#: order/models.py:1099 +msgid "Target date for this line item (leave blank to use the target date from the order)" +msgstr "" + +#: order/models.py:1117 +msgid "Line item description (optional)" +msgstr "" + +#: order/models.py:1122 +msgid "Context" +msgstr "" + +#: order/models.py:1123 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:1132 +msgid "Unit price" +msgstr "" + +#: order/models.py:1162 +msgid "Supplier part must match supplier" +msgstr "" + +#: order/models.py:1170 +msgid "deleted" +msgstr "" + +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 +msgid "Order" +msgstr "" + +#: order/models.py:1194 +msgid "Supplier part" +msgstr "" + +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 +msgid "Received" +msgstr "" + +#: order/models.py:1202 +msgid "Number of items received" +msgstr "" + +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 +msgid "Purchase Price" +msgstr "" + +#: order/models.py:1210 +msgid "Unit purchase price" +msgstr "" + +#: order/models.py:1223 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:1288 +msgid "Virtual part cannot be assigned to a sales order" +msgstr "" + +#: order/models.py:1293 +msgid "Only salable parts can be assigned to a sales order" +msgstr "" + +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 +msgid "Sale Price" +msgstr "" + +#: order/models.py:1320 +msgid "Unit sale price" +msgstr "" + +#: order/models.py:1330 +msgid "Shipped quantity" +msgstr "" + +#: order/models.py:1406 +msgid "Date of shipment" +msgstr "" + +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 +msgid "Delivery Date" +msgstr "" + +#: order/models.py:1412 +msgid "Date of delivery of shipment" +msgstr "" + +#: order/models.py:1419 +msgid "Checked By" +msgstr "" + +#: order/models.py:1420 +msgid "User who checked this shipment" +msgstr "" + +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 +msgid "Shipment" +msgstr "" + +#: order/models.py:1428 +msgid "Shipment number" +msgstr "" + +#: order/models.py:1436 +msgid "Tracking Number" +msgstr "" + +#: order/models.py:1437 +msgid "Shipment tracking information" +msgstr "" + +#: order/models.py:1444 +msgid "Invoice Number" +msgstr "" + +#: order/models.py:1445 +msgid "Reference number for associated invoice" +msgstr "" + +#: order/models.py:1467 +msgid "Shipment has already been sent" +msgstr "" + +#: order/models.py:1470 +msgid "Shipment has no allocated stock items" +msgstr "" + +#: order/models.py:1583 order/models.py:1585 +msgid "Stock item has not been assigned" +msgstr "" + +#: order/models.py:1591 +msgid "Cannot allocate stock item to a line with a different part" +msgstr "" + +#: order/models.py:1593 +msgid "Cannot allocate stock to a line without a part" +msgstr "" + +#: order/models.py:1596 +msgid "Allocation quantity cannot exceed stock quantity" +msgstr "" + +#: order/models.py:1606 order/serializers.py:1146 +msgid "Quantity must be 1 for serialized stock item" +msgstr "" + +#: order/models.py:1609 +msgid "Sales order does not match shipment" +msgstr "" + +#: order/models.py:1610 +msgid "Shipment does not match sales order" +msgstr "" + +#: order/models.py:1618 +msgid "Line" +msgstr "" + +#: order/models.py:1627 +msgid "Sales order shipment reference" +msgstr "" + +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 +msgid "Item" +msgstr "" + +#: order/models.py:1641 +msgid "Select stock item to allocate" +msgstr "" + +#: order/models.py:1644 +msgid "Enter stock allocation quantity" +msgstr "" + +#: order/models.py:1723 +msgid "Return Order reference" +msgstr "" + +#: order/models.py:1737 +msgid "Company from which items are being returned" +msgstr "" + +#: order/models.py:1748 +msgid "Return order status" +msgstr "" + +#: order/models.py:1895 +msgid "Only serialized items can be assigned to a Return Order" +msgstr "" + +#: order/models.py:1911 +msgid "Select item to return from customer" +msgstr "" + +#: order/models.py:1916 +msgid "Received Date" +msgstr "" + +#: order/models.py:1917 +msgid "The date this this return item was received" +msgstr "" + +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 +msgid "Outcome" +msgstr "" + +#: order/models.py:1928 +msgid "Outcome for this line item" +msgstr "" + +#: order/models.py:1934 +msgid "Cost associated with return or repair for this line item" +msgstr "" + +#: order/serializers.py:258 +msgid "Order cannot be cancelled" +msgstr "" + +#: order/serializers.py:273 order/serializers.py:1164 +msgid "Allow order to be closed with incomplete line items" +msgstr "" + +#: order/serializers.py:283 order/serializers.py:1174 +msgid "Order has incomplete line items" +msgstr "" + +#: order/serializers.py:396 +msgid "Order is not open" +msgstr "" + +#: order/serializers.py:414 +msgid "Purchase price currency" +msgstr "" + +#: order/serializers.py:432 +msgid "Supplier part must be specified" +msgstr "" + +#: order/serializers.py:437 +msgid "Purchase order must be specified" +msgstr "" + +#: order/serializers.py:443 +msgid "Supplier must match purchase order" +msgstr "" + +#: order/serializers.py:444 +msgid "Purchase order must match supplier" +msgstr "" + +#: order/serializers.py:482 order/serializers.py:1250 +msgid "Line Item" +msgstr "" + +#: order/serializers.py:488 +msgid "Line item does not match purchase order" +msgstr "" + +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 +msgid "Select destination location for received items" +msgstr "" + +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 +msgid "Enter batch code for incoming stock items" +msgstr "" + +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 +msgid "Enter serial numbers for incoming stock items" +msgstr "" + +#: order/serializers.py:538 templates/js/translated/barcode.js:52 +msgid "Barcode" +msgstr "" + +#: order/serializers.py:539 +msgid "Scanned barcode" +msgstr "" + +#: order/serializers.py:555 +msgid "Barcode is already in use" +msgstr "" + +#: order/serializers.py:579 +msgid "An integer quantity must be provided for trackable parts" +msgstr "" + +#: order/serializers.py:633 order/serializers.py:1638 +msgid "Line items must be provided" +msgstr "" + +#: order/serializers.py:650 +msgid "Destination location must be specified" +msgstr "" + +#: order/serializers.py:661 +msgid "Supplied barcode values must be unique" +msgstr "" + +#: order/serializers.py:986 +msgid "Sale price currency" +msgstr "" + +#: order/serializers.py:1043 +msgid "No shipment details provided" +msgstr "" + +#: order/serializers.py:1107 order/serializers.py:1259 +msgid "Line item is not associated with this order" +msgstr "" + +#: order/serializers.py:1129 +msgid "Quantity must be positive" +msgstr "" + +#: order/serializers.py:1272 +msgid "Enter serial numbers to allocate" +msgstr "" + +#: order/serializers.py:1294 order/serializers.py:1418 +msgid "Shipment has already been shipped" +msgstr "" + +#: order/serializers.py:1297 order/serializers.py:1421 +msgid "Shipment is not associated with this order" +msgstr "" + +#: order/serializers.py:1351 +msgid "No match found for the following serial numbers" +msgstr "" + +#: order/serializers.py:1361 +msgid "The following serial numbers are already allocated" +msgstr "" + +#: order/serializers.py:1591 +msgid "Return order line item" +msgstr "" + +#: order/serializers.py:1597 +msgid "Line item does not match return order" +msgstr "" + +#: order/serializers.py:1600 +msgid "Line item has already been received" +msgstr "" + +#: order/serializers.py:1631 +msgid "Items can only be received against orders which are in progress" +msgstr "" + +#: order/serializers.py:1710 +msgid "Line price currency" +msgstr "" + +#: order/tasks.py:26 +msgid "Overdue Purchase Order" +msgstr "" + +#: order/tasks.py:31 +#, python-brace-format +msgid "Purchase order {po} is now overdue" +msgstr "" + +#: order/tasks.py:87 +msgid "Overdue Sales Order" +msgstr "" + +#: order/tasks.py:92 +#, python-brace-format +msgid "Sales order {so} is now overdue" +msgstr "" + +#: order/templates/order/order_base.html:51 +msgid "Print purchase order report" +msgstr "" + +#: order/templates/order/order_base.html:53 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 +msgid "Export order to file" +msgstr "" + +#: order/templates/order/order_base.html:59 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 +msgid "Order actions" +msgstr "" + +#: order/templates/order/order_base.html:64 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 +msgid "Edit order" +msgstr "" + +#: order/templates/order/order_base.html:68 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 +msgid "Cancel order" +msgstr "" + +#: order/templates/order/order_base.html:73 +msgid "Duplicate order" +msgstr "" + +#: order/templates/order/order_base.html:79 +#: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 +#: order/templates/order/return_order_base.html:83 +#: order/templates/order/sales_order_base.html:83 +#: order/templates/order/sales_order_base.html:84 +msgid "Issue Order" +msgstr "" + +#: order/templates/order/order_base.html:83 +#: order/templates/order/return_order_base.html:86 +msgid "Mark order as complete" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:91 +msgid "Supplier part thumbnail" +msgstr "" + +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 +msgid "Order Reference" +msgstr "" + +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 +msgid "Order Status" +msgstr "" + +#: order/templates/order/order_base.html:141 +msgid "No suppplier information available" +msgstr "" + +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 +msgid "Completed Line Items" +msgstr "" + +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 +msgid "Incomplete" +msgstr "" + +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 +#: report/templates/report/inventree_build_order_base.html:121 +msgid "Issued" +msgstr "" + +#: order/templates/order/order_base.html:224 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 +msgid "Total cost could not be calculated" +msgstr "" + +#: order/templates/order/order_base.html:318 +msgid "Purchase Order QR Code" +msgstr "" + +#: order/templates/order/order_base.html:330 +msgid "Link Barcode to Purchase Order" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:9 +#: part/templates/part/import_wizard/ajax_match_fields.html:9 +#: part/templates/part/import_wizard/match_fields.html:9 +#: templates/patterns/wizard/match_fields.html:8 +msgid "Missing selections for the following required columns" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:20 +#: part/templates/part/import_wizard/ajax_match_fields.html:20 +#: part/templates/part/import_wizard/match_fields.html:20 +#: templates/patterns/wizard/match_fields.html:19 +msgid "Duplicate selections found, see below. Fix them then retry submitting." +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:29 +#: order/templates/order/order_wizard/match_parts.html:21 +#: part/templates/part/import_wizard/match_fields.html:29 +#: part/templates/part/import_wizard/match_references.html:21 +#: templates/patterns/wizard/match_fields.html:28 +msgid "Submit Selections" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:35 +#: part/templates/part/import_wizard/ajax_match_fields.html:28 +#: part/templates/part/import_wizard/match_fields.html:35 +#: templates/patterns/wizard/match_fields.html:34 +msgid "File Fields" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:42 +#: part/templates/part/import_wizard/ajax_match_fields.html:35 +#: part/templates/part/import_wizard/match_fields.html:42 +#: templates/patterns/wizard/match_fields.html:41 +msgid "Remove column" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:60 +#: part/templates/part/import_wizard/ajax_match_fields.html:53 +#: part/templates/part/import_wizard/match_fields.html:60 +#: templates/patterns/wizard/match_fields.html:59 +msgid "Duplicate selection" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:71 +#: order/templates/order/order_wizard/match_parts.html:52 +#: part/templates/part/import_wizard/ajax_match_fields.html:64 +#: part/templates/part/import_wizard/ajax_match_references.html:42 +#: part/templates/part/import_wizard/match_fields.html:71 +#: part/templates/part/import_wizard/match_references.html:49 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 +#: templates/patterns/wizard/match_fields.html:70 +msgid "Remove row" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:12 +#: part/templates/part/import_wizard/ajax_match_references.html:12 +#: part/templates/part/import_wizard/match_references.html:12 +msgid "Errors exist in the submitted data" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:28 +#: part/templates/part/import_wizard/ajax_match_references.html:21 +#: part/templates/part/import_wizard/match_references.html:28 +msgid "Row" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:29 +msgid "Select Supplier Part" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:8 +msgid "Return to Orders" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:13 +msgid "Upload File for Purchase Order" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:14 +msgid "Order is already processed. Files cannot be uploaded." +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:27 +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: part/templates/part/import_wizard/part_upload.html:26 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + +#: order/templates/order/po_sidebar.html:5 +#: order/templates/order/return_order_detail.html:18 +#: order/templates/order/so_sidebar.html:5 +#: report/templates/report/inventree_po_report_base.html:22 +#: report/templates/report/inventree_return_order_report_base.html:19 +#: report/templates/report/inventree_so_report_base.html:22 +msgid "Line Items" +msgstr "" + +#: order/templates/order/po_sidebar.html:7 +msgid "Received Stock" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:18 +msgid "Purchase Order Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:27 +#: order/templates/order/return_order_detail.html:24 +#: order/templates/order/sales_order_detail.html:24 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 +msgid "Add Line Item" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:31 +#: order/templates/order/purchase_order_detail.html:32 +#: order/templates/order/return_order_detail.html:28 +#: order/templates/order/return_order_detail.html:29 +msgid "Receive Line Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:50 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:74 +msgid "Received Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 +msgid "Order Notes" +msgstr "" + +#: order/templates/order/return_order_base.html:18 +#: order/templates/order/sales_order_base.html:18 +msgid "Customer logo thumbnail" +msgstr "" + +#: order/templates/order/return_order_base.html:60 +msgid "Print return order report" +msgstr "" + +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 +msgid "Print packing list" +msgstr "" + +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 +msgid "Customer Reference" +msgstr "" + +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:99 +#: part/templates/part/part_pricing.html:114 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 +msgid "Total Cost" +msgstr "" + +#: order/templates/order/return_order_base.html:263 +msgid "Return Order QR Code" +msgstr "" + +#: order/templates/order/return_order_base.html:275 +msgid "Link Barcode to Return Order" +msgstr "" + +#: order/templates/order/return_order_sidebar.html:5 +msgid "Order Details" +msgstr "" + +#: order/templates/order/sales_order_base.html:60 +msgid "Print sales order report" +msgstr "" + +#: order/templates/order/sales_order_base.html:88 +#: order/templates/order/sales_order_base.html:89 +msgid "Ship Items" +msgstr "" + +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 +msgid "Complete Sales Order" +msgstr "" + +#: order/templates/order/sales_order_base.html:131 +msgid "This Sales Order has not been fully allocated" +msgstr "" + +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 +#: order/templates/order/so_sidebar.html:11 +msgid "Completed Shipments" +msgstr "" + +#: order/templates/order/sales_order_base.html:312 +msgid "Sales Order QR Code" +msgstr "" + +#: order/templates/order/sales_order_base.html:324 +msgid "Link Barcode to Sales Order" +msgstr "" + +#: order/templates/order/sales_order_detail.html:18 +msgid "Sales Order Items" +msgstr "" + +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 +msgid "Pending Shipments" +msgstr "" + +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +msgid "Actions" +msgstr "" + +#: order/templates/order/sales_order_detail.html:80 +msgid "New Shipment" +msgstr "" + +#: order/views.py:120 +msgid "Match Supplier Parts" +msgstr "" + +#: order/views.py:389 +msgid "Sales order not found" +msgstr "" + +#: order/views.py:395 +msgid "Price not found" +msgstr "" + +#: order/views.py:398 +#, python-brace-format +msgid "Updated {part} unit-price to {price}" +msgstr "" + +#: order/views.py:403 +#, python-brace-format +msgid "Updated {part} unit-price to {price} and quantity to {qty}" +msgstr "" + +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 +msgid "Part ID" +msgstr "" + +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 +msgid "Part Name" +msgstr "" + +#: part/admin.py:35 part/stocktake.py:219 +msgid "Part Description" +msgstr "" + +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 +msgid "IPN" +msgstr "" + +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 +msgid "Revision" +msgstr "" + +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 +msgid "Keywords" +msgstr "" + +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 +msgid "Category ID" +msgstr "" + +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 +msgid "Category Name" +msgstr "" + +#: part/admin.py:44 part/admin.py:194 +msgid "Default Location ID" +msgstr "" + +#: part/admin.py:45 +msgid "Default Supplier ID" +msgstr "" + +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 +msgid "Variant Of" +msgstr "" + +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 +msgid "Minimum Stock" +msgstr "" + +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 +msgid "In Stock" +msgstr "" + +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: part/admin.py:63 part/templates/part/part_sidebar.html:27 +msgid "Used In" +msgstr "" + +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 +msgid "Building" +msgstr "" + +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 +msgid "Minimum Cost" +msgstr "" + +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 +msgid "Maximum Cost" +msgstr "" + +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 +msgid "Parent ID" +msgstr "" + +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 +msgid "Parent Name" +msgstr "" + +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 +msgid "Category Path" +msgstr "" + +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 +msgid "Parts" +msgstr "" + +#: part/admin.py:261 +msgid "BOM Level" +msgstr "" + +#: part/admin.py:263 +msgid "BOM Item ID" +msgstr "" + +#: part/admin.py:267 +msgid "Parent IPN" +msgstr "" + +#: part/admin.py:270 part/models.py:3679 +msgid "Part IPN" +msgstr "" + +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 +msgid "Minimum Price" +msgstr "" + +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 +msgid "Maximum Price" +msgstr "" + +#: part/api.py:505 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:525 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:543 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:629 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:774 +msgid "Valid" +msgstr "" + +#: part/api.py:775 +msgid "Validate entire Bill of Materials" +msgstr "" + +#: part/api.py:781 +msgid "This option must be selected" +msgstr "" + +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 +msgid "Default Location" +msgstr "" + +#: part/bom.py:175 templates/email/low_stock_notification.html:16 +msgid "Total Stock" +msgstr "Цялостна наличност" + +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 +msgid "Available Stock" +msgstr "" + +#: part/forms.py:48 +msgid "Input quantity for price calculation" +msgstr "" + +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 +#: part/templates/part/part_app_base.html:10 +msgid "Part Category" +msgstr "" + +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 +msgid "Part Categories" +msgstr "" + +#: part/models.py:98 +msgid "Default location for parts in this category" +msgstr "" + +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 +msgid "Structural" +msgstr "" + +#: part/models.py:105 +msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." +msgstr "" + +#: part/models.py:109 +msgid "Default keywords" +msgstr "" + +#: part/models.py:109 +msgid "Default keywords for parts in this category" +msgstr "" + +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 +msgid "Icon" +msgstr "" + +#: part/models.py:115 stock/models.py:143 +msgid "Icon (optional)" +msgstr "" + +#: part/models.py:134 +msgid "You cannot make this part category structural because some parts are already assigned to it!" +msgstr "" + +#: part/models.py:451 +msgid "Invalid choice for parent part" +msgstr "" + +#: part/models.py:494 part/models.py:497 +#, python-brace-format +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" + +#: part/models.py:506 +#, python-brace-format +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" + +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 +msgid "Stock item with this serial number already exists" +msgstr "" + +#: part/models.py:770 +msgid "Duplicate IPN not allowed in part settings" +msgstr "" + +#: part/models.py:775 +msgid "Part with this Name, IPN and Revision already exists." +msgstr "" + +#: part/models.py:789 +msgid "Parts cannot be assigned to structural part categories!" +msgstr "" + +#: part/models.py:813 part/models.py:3676 +msgid "Part name" +msgstr "" + +#: part/models.py:819 +msgid "Is Template" +msgstr "" + +#: part/models.py:820 +msgid "Is this part a template part?" +msgstr "" + +#: part/models.py:830 +msgid "Is this part a variant of another part?" +msgstr "" + +#: part/models.py:837 +msgid "Part description (optional)" +msgstr "" + +#: part/models.py:843 +msgid "Part keywords to improve visibility in search results" +msgstr "" + +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 +msgid "Category" +msgstr "" + +#: part/models.py:851 +msgid "Part category" +msgstr "" + +#: part/models.py:857 +msgid "Internal Part Number" +msgstr "" + +#: part/models.py:862 +msgid "Part revision or version number" +msgstr "" + +#: part/models.py:888 +msgid "Where is this item normally stored?" +msgstr "" + +#: part/models.py:933 part/templates/part/part_base.html:376 +msgid "Default Supplier" +msgstr "" + +#: part/models.py:934 +msgid "Default supplier part" +msgstr "" + +#: part/models.py:941 +msgid "Default Expiry" +msgstr "" + +#: part/models.py:942 +msgid "Expiry time (in days) for stock items of this part" +msgstr "" + +#: part/models.py:949 +msgid "Minimum allowed stock level" +msgstr "" + +#: part/models.py:956 +msgid "Units of measure for this part" +msgstr "" + +#: part/models.py:965 +msgid "Can this part be built from other parts?" +msgstr "" + +#: part/models.py:971 +msgid "Can this part be used to build other parts?" +msgstr "" + +#: part/models.py:977 +msgid "Does this part have tracking for unique items?" +msgstr "" + +#: part/models.py:982 +msgid "Can this part be purchased from external suppliers?" +msgstr "" + +#: part/models.py:987 +msgid "Can this part be sold to customers?" +msgstr "" + +#: part/models.py:992 +msgid "Is this part active?" +msgstr "" + +#: part/models.py:997 +msgid "Is this a virtual part, such as a software product or license?" +msgstr "" + +#: part/models.py:999 +msgid "BOM checksum" +msgstr "" + +#: part/models.py:999 +msgid "Stored BOM checksum" +msgstr "" + +#: part/models.py:1002 +msgid "BOM checked by" +msgstr "" + +#: part/models.py:1004 +msgid "BOM checked date" +msgstr "" + +#: part/models.py:1008 +msgid "Creation User" +msgstr "" + +#: part/models.py:1014 +msgid "Owner responsible for this part" +msgstr "" + +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 +msgid "Last Stocktake" +msgstr "" + +#: part/models.py:1891 +msgid "Sell multiple" +msgstr "" + +#: part/models.py:2857 +msgid "Currency used to cache pricing calculations" +msgstr "" + +#: part/models.py:2874 +msgid "Minimum BOM Cost" +msgstr "" + +#: part/models.py:2875 +msgid "Minimum cost of component parts" +msgstr "" + +#: part/models.py:2880 +msgid "Maximum BOM Cost" +msgstr "" + +#: part/models.py:2881 +msgid "Maximum cost of component parts" +msgstr "" + +#: part/models.py:2886 +msgid "Minimum Purchase Cost" +msgstr "" + +#: part/models.py:2887 +msgid "Minimum historical purchase cost" +msgstr "" + +#: part/models.py:2892 +msgid "Maximum Purchase Cost" +msgstr "" + +#: part/models.py:2893 +msgid "Maximum historical purchase cost" +msgstr "" + +#: part/models.py:2898 +msgid "Minimum Internal Price" +msgstr "" + +#: part/models.py:2899 +msgid "Minimum cost based on internal price breaks" +msgstr "" + +#: part/models.py:2904 +msgid "Maximum Internal Price" +msgstr "" + +#: part/models.py:2905 +msgid "Maximum cost based on internal price breaks" +msgstr "" + +#: part/models.py:2910 +msgid "Minimum Supplier Price" +msgstr "" + +#: part/models.py:2911 +msgid "Minimum price of part from external suppliers" +msgstr "" + +#: part/models.py:2916 +msgid "Maximum Supplier Price" +msgstr "" + +#: part/models.py:2917 +msgid "Maximum price of part from external suppliers" +msgstr "" + +#: part/models.py:2922 +msgid "Minimum Variant Cost" +msgstr "" + +#: part/models.py:2923 +msgid "Calculated minimum cost of variant parts" +msgstr "" + +#: part/models.py:2928 +msgid "Maximum Variant Cost" +msgstr "" + +#: part/models.py:2929 +msgid "Calculated maximum cost of variant parts" +msgstr "" + +#: part/models.py:2935 +msgid "Calculated overall minimum cost" +msgstr "" + +#: part/models.py:2941 +msgid "Calculated overall maximum cost" +msgstr "" + +#: part/models.py:2946 +msgid "Minimum Sale Price" +msgstr "" + +#: part/models.py:2947 +msgid "Minimum sale price based on price breaks" +msgstr "" + +#: part/models.py:2952 +msgid "Maximum Sale Price" +msgstr "" + +#: part/models.py:2953 +msgid "Maximum sale price based on price breaks" +msgstr "" + +#: part/models.py:2958 +msgid "Minimum Sale Cost" +msgstr "" + +#: part/models.py:2959 +msgid "Minimum historical sale price" +msgstr "" + +#: part/models.py:2964 +msgid "Maximum Sale Cost" +msgstr "" + +#: part/models.py:2965 +msgid "Maximum historical sale price" +msgstr "" + +#: part/models.py:2984 +msgid "Part for stocktake" +msgstr "" + +#: part/models.py:2989 +msgid "Item Count" +msgstr "" + +#: part/models.py:2990 +msgid "Number of individual stock entries at time of stocktake" +msgstr "" + +#: part/models.py:2997 +msgid "Total available stock at time of stocktake" +msgstr "" + +#: part/models.py:3001 part/models.py:3081 +#: part/templates/part/part_scheduling.html:13 +#: report/templates/report/inventree_test_report_base.html:106 +#: templates/InvenTree/settings/plugin_settings.html:37 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 +msgid "Date" +msgstr "" + +#: part/models.py:3002 +msgid "Date stocktake was performed" +msgstr "" + +#: part/models.py:3010 +msgid "Additional notes" +msgstr "" + +#: part/models.py:3018 +msgid "User who performed this stocktake" +msgstr "" + +#: part/models.py:3023 +msgid "Minimum Stock Cost" +msgstr "" + +#: part/models.py:3024 +msgid "Estimated minimum cost of stock on hand" +msgstr "" + +#: part/models.py:3029 +msgid "Maximum Stock Cost" +msgstr "" + +#: part/models.py:3030 +msgid "Estimated maximum cost of stock on hand" +msgstr "" + +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 +msgid "Report" +msgstr "" + +#: part/models.py:3089 +msgid "Stocktake report file (generated internally)" +msgstr "" + +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 +msgid "Part Count" +msgstr "" + +#: part/models.py:3095 +msgid "Number of parts covered by stocktake" +msgstr "" + +#: part/models.py:3103 +msgid "User who requested this stocktake report" +msgstr "" + +#: part/models.py:3239 +msgid "Test templates can only be created for trackable parts" +msgstr "" + +#: part/models.py:3256 +msgid "Test with this name already exists for this part" +msgstr "" + +#: part/models.py:3276 templates/js/translated/part.js:2863 +msgid "Test Name" +msgstr "" + +#: part/models.py:3277 +msgid "Enter a name for the test" +msgstr "" + +#: part/models.py:3282 +msgid "Test Description" +msgstr "" + +#: part/models.py:3283 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 +msgid "Required" +msgstr "" + +#: part/models.py:3289 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:3294 templates/js/translated/part.js:2880 +msgid "Requires Value" +msgstr "" + +#: part/models.py:3295 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:3300 templates/js/translated/part.js:2887 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:3301 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:3346 +msgid "Checkbox parameters cannot have units" +msgstr "" + +#: part/models.py:3351 +msgid "Checkbox parameters cannot have choices" +msgstr "" + +#: part/models.py:3369 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3385 +msgid "Parameter template name must be unique" +msgstr "" + +#: part/models.py:3400 +msgid "Parameter Name" +msgstr "" + +#: part/models.py:3406 +msgid "Physical units for this parameter" +msgstr "" + +#: part/models.py:3416 +msgid "Parameter description" +msgstr "" + +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 +msgid "Checkbox" +msgstr "" + +#: part/models.py:3423 +msgid "Is this parameter a checkbox?" +msgstr "" + +#: part/models.py:3428 templates/js/translated/part.js:1633 +msgid "Choices" +msgstr "" + +#: part/models.py:3429 +msgid "Valid choices for this parameter (comma-separated)" +msgstr "" + +#: part/models.py:3503 +msgid "Invalid choice for parameter value" +msgstr "" + +#: part/models.py:3545 +msgid "Parent Part" +msgstr "" + +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 +msgid "Parameter Template" +msgstr "" + +#: part/models.py:3555 +msgid "Data" +msgstr "" + +#: part/models.py:3555 +msgid "Parameter Value" +msgstr "" + +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 +msgid "Default Value" +msgstr "" + +#: part/models.py:3631 +msgid "Default Parameter Value" +msgstr "" + +#: part/models.py:3668 +msgid "Part ID or part name" +msgstr "" + +#: part/models.py:3672 +msgid "Unique part ID value" +msgstr "" + +#: part/models.py:3680 +msgid "Part IPN value" +msgstr "" + +#: part/models.py:3683 +msgid "Level" +msgstr "" + +#: part/models.py:3684 +msgid "BOM level" +msgstr "" + +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 +msgid "Select parent part" +msgstr "" + +#: part/models.py:3779 +msgid "Sub part" +msgstr "" + +#: part/models.py:3780 +msgid "Select part to be used in BOM" +msgstr "" + +#: part/models.py:3786 +msgid "BOM quantity for this BOM item" +msgstr "" + +#: part/models.py:3791 +msgid "This BOM item is optional" +msgstr "" + +#: part/models.py:3797 +msgid "This BOM item is consumable (it is not tracked in build orders)" +msgstr "" + +#: part/models.py:3801 part/templates/part/upload_bom.html:55 +msgid "Overage" +msgstr "" + +#: part/models.py:3802 +msgid "Estimated build wastage quantity (absolute or percentage)" +msgstr "" + +#: part/models.py:3805 +msgid "BOM item reference" +msgstr "" + +#: part/models.py:3808 +msgid "BOM item notes" +msgstr "" + +#: part/models.py:3812 +msgid "Checksum" +msgstr "" + +#: part/models.py:3812 +msgid "BOM line checksum" +msgstr "" + +#: part/models.py:3817 templates/js/translated/table_filters.js:174 +msgid "Validated" +msgstr "" + +#: part/models.py:3818 +msgid "This BOM item has been validated" +msgstr "" + +#: part/models.py:3823 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:3824 +msgid "This BOM item is inherited by BOMs for variant parts" +msgstr "" + +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 +msgid "Allow Variants" +msgstr "" + +#: part/models.py:3830 +msgid "Stock items for variant parts can be used for this BOM item" +msgstr "" + +#: part/models.py:3916 stock/models.py:613 +msgid "Quantity must be integer value for trackable parts" +msgstr "" + +#: part/models.py:3925 part/models.py:3927 +msgid "Sub part must be specified" +msgstr "" + +#: part/models.py:4052 +msgid "BOM Item Substitute" +msgstr "" + +#: part/models.py:4073 +msgid "Substitute part cannot be the same as the master part" +msgstr "" + +#: part/models.py:4086 +msgid "Parent BOM item" +msgstr "" + +#: part/models.py:4094 +msgid "Substitute part" +msgstr "" + +#: part/models.py:4109 +msgid "Part 1" +msgstr "" + +#: part/models.py:4113 +msgid "Part 2" +msgstr "" + +#: part/models.py:4113 +msgid "Select Related Part" +msgstr "" + +#: part/models.py:4130 +msgid "Part relationship cannot be created between a part and itself" +msgstr "" + +#: part/models.py:4134 +msgid "Duplicate relationship already exists" +msgstr "" + +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:346 +msgid "No parts selected" +msgstr "" + +#: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 +msgid "Select manufacturer (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:447 +msgid "Manufacturer part number" +msgstr "" + +#: part/serializers.py:453 +msgid "Selected company is not a valid supplier" +msgstr "" + +#: part/serializers.py:460 +msgid "Selected company is not a valid manufacturer" +msgstr "" + +#: part/serializers.py:471 +msgid "Manufacturer part matching this MPN already exists" +msgstr "" + +#: part/serializers.py:479 +msgid "Supplier part matching this SKU already exists" +msgstr "" + +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 +msgid "Duplicate Part" +msgstr "" + +#: part/serializers.py:738 +msgid "Copy initial data from another Part" +msgstr "" + +#: part/serializers.py:743 templates/js/translated/part.js:102 +msgid "Initial Stock" +msgstr "" + +#: part/serializers.py:743 +msgid "Create Part with initial stock quantity" +msgstr "" + +#: part/serializers.py:748 +msgid "Supplier Information" +msgstr "" + +#: part/serializers.py:748 +msgid "Add initial supplier information for this part" +msgstr "" + +#: part/serializers.py:754 +msgid "Copy Category Parameters" +msgstr "" + +#: part/serializers.py:755 +msgid "Copy parameter templates from selected part category" +msgstr "" + +#: part/serializers.py:961 +msgid "Limit stocktake report to a particular part, and any variant parts" +msgstr "" + +#: part/serializers.py:967 +msgid "Limit stocktake report to a particular part category, and any child categories" +msgstr "" + +#: part/serializers.py:973 +msgid "Limit stocktake report to a particular stock location, and any child locations" +msgstr "" + +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 +msgid "Generate Report" +msgstr "" + +#: part/serializers.py:985 +msgid "Generate report file containing calculated stocktake data" +msgstr "" + +#: part/serializers.py:990 +msgid "Update Parts" +msgstr "" + +#: part/serializers.py:991 +msgid "Update specified parts with calculated stocktake data" +msgstr "" + +#: part/serializers.py:998 +msgid "Stocktake functionality is not enabled" +msgstr "" + +#: part/serializers.py:1087 +msgid "Update" +msgstr "" + +#: part/serializers.py:1088 +msgid "Update pricing for this part" +msgstr "" + +#: part/serializers.py:1395 +msgid "Select part to copy BOM from" +msgstr "" + +#: part/serializers.py:1403 +msgid "Remove Existing Data" +msgstr "" + +#: part/serializers.py:1404 +msgid "Remove existing BOM items before copying" +msgstr "" + +#: part/serializers.py:1409 +msgid "Include Inherited" +msgstr "" + +#: part/serializers.py:1410 +msgid "Include BOM items which are inherited from templated parts" +msgstr "" + +#: part/serializers.py:1415 +msgid "Skip Invalid Rows" +msgstr "" + +#: part/serializers.py:1416 +msgid "Enable this option to skip invalid rows" +msgstr "" + +#: part/serializers.py:1421 +msgid "Copy Substitute Parts" +msgstr "" + +#: part/serializers.py:1422 +msgid "Copy substitute parts when duplicate BOM items" +msgstr "" + +#: part/serializers.py:1462 +msgid "Clear Existing BOM" +msgstr "" + +#: part/serializers.py:1463 +msgid "Delete existing BOM items before uploading" +msgstr "" + +#: part/serializers.py:1493 +msgid "No part column specified" +msgstr "" + +#: part/serializers.py:1537 +msgid "Multiple matching parts found" +msgstr "" + +#: part/serializers.py:1540 +msgid "No matching part found" +msgstr "" + +#: part/serializers.py:1543 +msgid "Part is not designated as a component" +msgstr "" + +#: part/serializers.py:1552 +msgid "Quantity not provided" +msgstr "" + +#: part/serializers.py:1560 +msgid "Invalid quantity" +msgstr "" + +#: part/serializers.py:1581 +msgid "At least one BOM item is required" +msgstr "" + +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 +msgid "Total Quantity" +msgstr "" + +#: part/stocktake.py:224 +msgid "Total Cost Min" +msgstr "" + +#: part/stocktake.py:225 +msgid "Total Cost Max" +msgstr "" + +#: part/stocktake.py:289 +msgid "Stocktake Report Available" +msgstr "" + +#: part/stocktake.py:290 +msgid "A new stocktake report is available for download" +msgstr "" + +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + +#: part/templates/part/bom.html:6 +msgid "You do not have permission to edit the BOM." +msgstr "" + +#: part/templates/part/bom.html:15 +msgid "The BOM this part has been changed, and must be validated" +msgstr "" + +#: part/templates/part/bom.html:17 +#, python-format +msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s" +msgstr "" + +#: part/templates/part/bom.html:21 +#, python-format +msgid "The BOM for %(part)s has not been validated." +msgstr "" + +#: part/templates/part/category.html:35 +msgid "Perform stocktake for this part category" +msgstr "" + +#: part/templates/part/category.html:41 part/templates/part/category.html:45 +msgid "You are subscribed to notifications for this category" +msgstr "" + +#: part/templates/part/category.html:49 +msgid "Subscribe to notifications for this category" +msgstr "" + +#: part/templates/part/category.html:55 +msgid "Category Actions" +msgstr "" + +#: part/templates/part/category.html:60 +msgid "Edit category" +msgstr "" + +#: part/templates/part/category.html:61 +msgid "Edit Category" +msgstr "" + +#: part/templates/part/category.html:65 +msgid "Delete category" +msgstr "" + +#: part/templates/part/category.html:66 +msgid "Delete Category" +msgstr "" + +#: part/templates/part/category.html:102 +msgid "Top level part category" +msgstr "" + +#: part/templates/part/category.html:122 part/templates/part/category.html:207 +#: part/templates/part/category_sidebar.html:7 +msgid "Subcategories" +msgstr "" + +#: part/templates/part/category.html:127 +msgid "Parts (Including subcategories)" +msgstr "" + +#: part/templates/part/category.html:165 +msgid "Create new part" +msgstr "" + +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 +msgid "New Part" +msgstr "" + +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 +msgid "Part Parameters" +msgstr "" + +#: part/templates/part/category.html:211 +msgid "Create new part category" +msgstr "" + +#: part/templates/part/category.html:212 +msgid "New Category" +msgstr "" + +#: part/templates/part/category_sidebar.html:13 +msgid "Import Parts" +msgstr "" + +#: part/templates/part/copy_part.html:10 +#, python-format +msgid "Make a copy of part '%(full_name)s'." +msgstr "" + +#: part/templates/part/copy_part.html:14 +#: part/templates/part/create_part.html:11 +msgid "Possible Matching Parts" +msgstr "" + +#: part/templates/part/copy_part.html:15 +#: part/templates/part/create_part.html:12 +msgid "The new part may be a duplicate of these existing parts" +msgstr "" + +#: part/templates/part/create_part.html:17 +#, python-format +msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" +msgstr "" + +#: part/templates/part/detail.html:20 +msgid "Part Stock" +msgstr "" + +#: part/templates/part/detail.html:44 +msgid "Refresh scheduling data" +msgstr "" + +#: part/templates/part/detail.html:45 part/templates/part/prices.html:15 +#: templates/js/translated/tables.js:552 +msgid "Refresh" +msgstr "" + +#: part/templates/part/detail.html:66 +msgid "Add stocktake information" +msgstr "" + +#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 +msgid "Stocktake" +msgstr "" + +#: part/templates/part/detail.html:83 +msgid "Part Test Templates" +msgstr "" + +#: part/templates/part/detail.html:88 +msgid "Add Test Template" +msgstr "" + +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 +msgid "Sales Order Allocations" +msgstr "" + +#: part/templates/part/detail.html:156 +msgid "Part Notes" +msgstr "" + +#: part/templates/part/detail.html:171 +msgid "Part Variants" +msgstr "" + +#: part/templates/part/detail.html:175 +msgid "Create new variant" +msgstr "" + +#: part/templates/part/detail.html:176 +msgid "New Variant" +msgstr "" + +#: part/templates/part/detail.html:199 +msgid "Add new parameter" +msgstr "" + +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 +msgid "Related Parts" +msgstr "" + +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +msgid "Add Related" +msgstr "" + +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 +#: report/templates/report/inventree_bill_of_materials_report.html:100 +msgid "Bill of Materials" +msgstr "" + +#: part/templates/part/detail.html:260 +msgid "Export actions" +msgstr "" + +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 +msgid "Export BOM" +msgstr "" + +#: part/templates/part/detail.html:266 +msgid "Print BOM Report" +msgstr "" + +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 +msgid "Upload BOM" +msgstr "" + +#: part/templates/part/detail.html:278 +msgid "Validate BOM" +msgstr "" + +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +msgid "Add BOM Item" +msgstr "" + +#: part/templates/part/detail.html:297 +msgid "Assemblies" +msgstr "" + +#: part/templates/part/detail.html:313 +msgid "Part Builds" +msgstr "" + +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/detail.html:352 +msgid "Part Suppliers" +msgstr "" + +#: part/templates/part/detail.html:372 +msgid "Part Manufacturers" +msgstr "" + +#: part/templates/part/detail.html:659 +msgid "Related Part" +msgstr "" + +#: part/templates/part/detail.html:667 +msgid "Add Related Part" +msgstr "" + +#: part/templates/part/detail.html:752 +msgid "Add Test Result Template" +msgstr "" + +#: part/templates/part/import_wizard/ajax_part_upload.html:29 +#: part/templates/part/import_wizard/part_upload.html:14 +msgid "Insufficient privileges." +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:8 +msgid "Return to Parts" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:13 +msgid "Import Parts from File" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:31 +msgid "Requirements for part import" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:33 +msgid "The part import file must contain the required named columns as provided in the " +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:33 +msgid "Part Import Template" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:89 +msgid "Download Part Import Template" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:92 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 +msgid "Format" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:93 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 +#: templates/js/translated/order.js:130 +msgid "Select file format" +msgstr "" + +#: part/templates/part/part_app_base.html:12 +msgid "Part List" +msgstr "" + +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 +msgid "You are subscribed to notifications for this part" +msgstr "" + +#: part/templates/part/part_base.html:33 +msgid "Subscribe to notifications for this part" +msgstr "" + +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 +msgid "Print Label" +msgstr "" + +#: part/templates/part/part_base.html:58 +msgid "Show pricing information" +msgstr "" + +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 +msgid "Stock actions" +msgstr "" + +#: part/templates/part/part_base.html:70 +msgid "Count part stock" +msgstr "" + +#: part/templates/part/part_base.html:76 +msgid "Transfer part stock" +msgstr "" + +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 +msgid "Part actions" +msgstr "" + +#: part/templates/part/part_base.html:94 +msgid "Duplicate part" +msgstr "" + +#: part/templates/part/part_base.html:97 +msgid "Edit part" +msgstr "" + +#: part/templates/part/part_base.html:100 +msgid "Delete part" +msgstr "" + +#: part/templates/part/part_base.html:119 +msgid "Part is a template part (variants can be made from this part)" +msgstr "" + +#: part/templates/part/part_base.html:123 +msgid "Part can be assembled from other parts" +msgstr "" + +#: part/templates/part/part_base.html:127 +msgid "Part can be used in assemblies" +msgstr "" + +#: part/templates/part/part_base.html:131 +msgid "Part stock is tracked by serial number" +msgstr "" + +#: part/templates/part/part_base.html:135 +msgid "Part can be purchased from external suppliers" +msgstr "" + +#: part/templates/part/part_base.html:139 +msgid "Part can be sold to customers" +msgstr "" + +#: part/templates/part/part_base.html:145 +msgid "Part is not active" +msgstr "" + +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 +msgid "Inactive" +msgstr "" + +#: part/templates/part/part_base.html:153 +msgid "Part is virtual (not a physical part)" +msgstr "" + +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 +msgid "Allocated to Build Orders" +msgstr "" + +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 +msgid "Allocated to Sales Orders" +msgstr "" + +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +msgid "Can Build" +msgstr "" + +#: part/templates/part/part_base.html:291 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 +#: templates/js/translated/pricing.js:391 +#: templates/js/translated/pricing.js:1054 +msgid "Price Range" +msgstr "" + +#: part/templates/part/part_base.html:352 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:444 +msgid "Part QR Code" +msgstr "" + +#: part/templates/part/part_base.html:461 +msgid "Link Barcode to Part" +msgstr "" + +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 +msgid "part" +msgstr "" + +#: part/templates/part/part_base.html:512 +msgid "Calculate" +msgstr "" + +#: part/templates/part/part_base.html:529 +msgid "Remove associated image from this part" +msgstr "" + +#: part/templates/part/part_base.html:580 +msgid "No matching images found" +msgstr "" + +#: part/templates/part/part_base.html:676 +msgid "Hide Part Details" +msgstr "" + +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:73 +#: part/templates/part/prices.html:216 templates/js/translated/pricing.js:485 +msgid "Supplier Pricing" +msgstr "" + +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:95 +#: part/templates/part/part_pricing.html:110 +msgid "Unit Cost" +msgstr "" + +#: part/templates/part/part_pricing.html:40 +msgid "No supplier pricing available" +msgstr "" + +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:87 +#: part/templates/part/prices.html:239 +msgid "BOM Pricing" +msgstr "" + +#: part/templates/part/part_pricing.html:66 +msgid "Unit Purchase Price" +msgstr "" + +#: part/templates/part/part_pricing.html:72 +msgid "Total Purchase Price" +msgstr "" + +#: part/templates/part/part_pricing.html:83 +msgid "No BOM pricing available" +msgstr "" + +#: part/templates/part/part_pricing.html:92 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/part_pricing.html:123 +msgid "No pricing information is available for this part." +msgstr "" + +#: part/templates/part/part_scheduling.html:14 +msgid "Scheduled Quantity" +msgstr "" + +#: part/templates/part/part_sidebar.html:11 +msgid "Variants" +msgstr "" + +#: part/templates/part/part_sidebar.html:14 +#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 +#: stock/templates/stock/stock_app_base.html:10 +#: templates/InvenTree/search.html:153 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 +msgid "Stock" +msgstr "Наличност" + +#: part/templates/part/part_sidebar.html:30 +#: templates/InvenTree/settings/sidebar.html:39 +msgid "Pricing" +msgstr "" + +#: part/templates/part/part_sidebar.html:44 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:54 +msgid "Test Templates" +msgstr "" + +#: part/templates/part/part_thumb.html:11 +msgid "Select from existing images" +msgstr "" + +#: part/templates/part/prices.html:11 +msgid "Pricing Overview" +msgstr "" + +#: part/templates/part/prices.html:14 +msgid "Refresh Part Pricing" +msgstr "" + +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 +msgid "Last Updated" +msgstr "" + +#: part/templates/part/prices.html:34 part/templates/part/prices.html:116 +msgid "Price Category" +msgstr "" + +#: part/templates/part/prices.html:35 part/templates/part/prices.html:117 +msgid "Minimum" +msgstr "" + +#: part/templates/part/prices.html:36 part/templates/part/prices.html:118 +msgid "Maximum" +msgstr "" + +#: part/templates/part/prices.html:48 part/templates/part/prices.html:163 +msgid "Internal Pricing" +msgstr "" + +#: part/templates/part/prices.html:61 part/templates/part/prices.html:195 +msgid "Purchase History" +msgstr "" + +#: part/templates/part/prices.html:95 part/templates/part/prices.html:263 +msgid "Variant Pricing" +msgstr "" + +#: part/templates/part/prices.html:102 +msgid "Overall Pricing" +msgstr "" + +#: part/templates/part/prices.html:138 part/templates/part/prices.html:315 +msgid "Sale History" +msgstr "" + +#: part/templates/part/prices.html:146 +msgid "Sale price data is not available for this part" +msgstr "" + +#: part/templates/part/prices.html:153 +msgid "Price range data is not available for this part." +msgstr "" + +#: part/templates/part/prices.html:164 part/templates/part/prices.html:196 +#: part/templates/part/prices.html:217 part/templates/part/prices.html:240 +#: part/templates/part/prices.html:264 part/templates/part/prices.html:287 +#: part/templates/part/prices.html:316 +msgid "Jump to overview" +msgstr "" + +#: part/templates/part/prices.html:169 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/prices.html:286 +msgid "Sale Pricing" +msgstr "" + +#: part/templates/part/prices.html:292 +msgid "Add Sell Price Break" +msgstr "" + +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 +msgid "No Stock" +msgstr "Няма наличност" + +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 +msgid "Low Stock" +msgstr "Ниска наличност" + +#: part/templates/part/upload_bom.html:8 +msgid "Return to BOM" +msgstr "" + +#: part/templates/part/upload_bom.html:13 +msgid "Upload Bill of Materials" +msgstr "" + +#: part/templates/part/upload_bom.html:19 +msgid "BOM upload requirements" +msgstr "" + +#: part/templates/part/upload_bom.html:23 +#: part/templates/part/upload_bom.html:90 +msgid "Upload BOM File" +msgstr "" + +#: part/templates/part/upload_bom.html:29 +msgid "Submit BOM Data" +msgstr "" + +#: part/templates/part/upload_bom.html:37 +msgid "Requirements for BOM upload" +msgstr "" + +#: part/templates/part/upload_bom.html:39 +msgid "The BOM file must contain the required named columns as provided in the " +msgstr "" + +#: part/templates/part/upload_bom.html:39 +msgid "BOM Upload Template" +msgstr "" + +#: part/templates/part/upload_bom.html:40 +msgid "Each part must already exist in the database" +msgstr "" + +#: part/templates/part/variant_part.html:9 +msgid "Create new part variant" +msgstr "" + +#: part/templates/part/variant_part.html:10 +msgid "Create a new variant part from this template" +msgstr "" + +#: part/templatetags/inventree_extras.py:185 +msgid "Unknown database" +msgstr "" + +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" +msgstr "" + +#: part/views.py:110 +msgid "Match References" +msgstr "" + +#: part/views.py:242 +#, python-brace-format +msgid "Can't import part {new_part.name} because there is no category assigned" +msgstr "" + +#: part/views.py:383 +msgid "Select Part Image" +msgstr "" + +#: part/views.py:409 +msgid "Updated part image" +msgstr "" + +#: part/views.py:412 +msgid "Part image not found" +msgstr "" + +#: part/views.py:507 +msgid "Part Pricing" +msgstr "" + +#: plugin/base/action/api.py:27 +msgid "No action specified" +msgstr "" + +#: plugin/base/action/api.py:38 +msgid "No matching action found" +msgstr "" + +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 +msgid "Missing barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:82 +msgid "No match found for barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:86 +msgid "Match found for barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 +msgid "Barcode matches existing item" +msgstr "" + +#: plugin/base/barcodes/api.py:217 +msgid "No match found for provided value" +msgstr "" + +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 +msgid "Label printing failed" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:25 +msgid "InvenTree Barcodes" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:26 +msgid "Provides native support for barcodes" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:28 +#: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 +msgid "InvenTree contributors" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:33 +msgid "InvenTree Notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:35 +msgid "Integrated outgoing notification methods" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:40 +#: plugin/builtin/integration/core_notifications.py:81 +msgid "Enable email notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:41 +#: plugin/builtin/integration/core_notifications.py:82 +msgid "Allow sending of emails for event notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:46 +msgid "Enable slack notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:47 +msgid "Allow sending of slack channel messages for event notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:52 +msgid "Slack incoming webhook url" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:53 +msgid "URL that is used to send messages to a slack channel" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:162 +msgid "Open link" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" +msgstr "" + +#: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 +msgid "Plugin Configurations" +msgstr "" + +#: plugin/models.py:34 users/models.py:73 +msgid "Key" +msgstr "" + +#: plugin/models.py:35 +msgid "Key of plugin" +msgstr "" + +#: plugin/models.py:43 +msgid "PluginName of the plugin" +msgstr "" + +#: plugin/models.py:49 +msgid "Is the plugin active" +msgstr "" + +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 +msgid "Sample plugin" +msgstr "" + +#: plugin/models.py:146 +msgid "Builtin Plugin" +msgstr "" + +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 +msgid "Plugin" +msgstr "" + +#: plugin/models.py:222 +msgid "Method" +msgstr "" + +#: plugin/plugin.py:265 +msgid "No author found" +msgstr "" + +#: plugin/registry.py:510 +#, python-brace-format +msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" +msgstr "" + +#: plugin/registry.py:512 +#, python-brace-format +msgid "Plugin requires at least version {v}" +msgstr "" + +#: plugin/registry.py:514 +#, python-brace-format +msgid "Plugin requires at most version {v}" +msgstr "" + +#: plugin/samples/integration/sample.py:50 +msgid "Enable PO" +msgstr "" + +#: plugin/samples/integration/sample.py:51 +msgid "Enable PO functionality in InvenTree interface" +msgstr "" + +#: plugin/samples/integration/sample.py:56 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:57 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:61 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:62 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:67 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:68 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 +msgid "Source URL" +msgstr "" + +#: plugin/serializers.py:88 +msgid "Source for the package - this can be a custom registry or a VCS path" +msgstr "" + +#: plugin/serializers.py:93 +msgid "Package Name" +msgstr "" + +#: plugin/serializers.py:94 +msgid "Name for the Plugin Package - can also contain a version indicator" +msgstr "" + +#: plugin/serializers.py:97 +msgid "Confirm plugin installation" +msgstr "" + +#: plugin/serializers.py:98 +msgid "This will install this plugin now into the current instance. The instance will go into maintenance." +msgstr "" + +#: plugin/serializers.py:110 +msgid "Installation not confirmed" +msgstr "" + +#: plugin/serializers.py:112 +msgid "Either packagename of URL must be provided" +msgstr "" + +#: plugin/serializers.py:141 +msgid "Activate Plugin" +msgstr "" + +#: plugin/serializers.py:142 +msgid "Activate this plugin" +msgstr "" + +#: report/api.py:172 +msgid "No valid objects provided to template" +msgstr "" + +#: report/api.py:209 report/api.py:245 +#, python-brace-format +msgid "Template file '{template}' is missing or does not exist" +msgstr "" + +#: report/api.py:322 +msgid "Test report" +msgstr "" + +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 +msgid "Template name" +msgstr "" + +#: report/models.py:177 +msgid "Report template file" +msgstr "" + +#: report/models.py:184 +msgid "Report template description" +msgstr "" + +#: report/models.py:190 +msgid "Report revision number (auto-increments)" +msgstr "" + +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:312 +msgid "Report template is enabled" +msgstr "" + +#: report/models.py:333 +msgid "StockItem query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:341 +msgid "Include Installed Tests" +msgstr "" + +#: report/models.py:342 +msgid "Include test results for stock items installed inside assembled item" +msgstr "" + +#: report/models.py:402 +msgid "Build Filters" +msgstr "" + +#: report/models.py:403 +msgid "Build query filters (comma-separated list of key=value pairs" +msgstr "" + +#: report/models.py:444 +msgid "Part Filters" +msgstr "" + +#: report/models.py:445 +msgid "Part query filters (comma-separated list of key=value pairs" +msgstr "" + +#: report/models.py:479 +msgid "Purchase order query filters" +msgstr "" + +#: report/models.py:517 +msgid "Sales order query filters" +msgstr "" + +#: report/models.py:555 +msgid "Return order query filters" +msgstr "" + +#: report/models.py:606 +msgid "Snippet" +msgstr "" + +#: report/models.py:607 +msgid "Report snippet file" +msgstr "" + +#: report/models.py:611 +msgid "Snippet file description" +msgstr "" + +#: report/models.py:647 +msgid "Asset" +msgstr "" + +#: report/models.py:648 +msgid "Report asset file" +msgstr "" + +#: report/models.py:655 +msgid "Asset file description" +msgstr "" + +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/templates/report/inventree_bill_of_materials_report.html:133 +msgid "Materials needed" +msgstr "" + +#: report/templates/report/inventree_build_order_base.html:146 +msgid "Required For" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:15 +msgid "Supplier was deleted" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:30 +#: report/templates/report/inventree_so_report_base.html:30 +#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 +#: templates/js/translated/pricing.js:596 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 +msgid "Unit Price" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:55 +#: report/templates/report/inventree_return_order_report_base.html:48 +#: report/templates/report/inventree_so_report_base.html:55 +msgid "Extra Line Items" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:72 +#: report/templates/report/inventree_so_report_base.html:72 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 +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:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 +msgid "Serial Number" +msgstr "" + +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:21 +msgid "Stock Item Test Report" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:97 +msgid "Test Results" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:102 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 +msgid "Test" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:103 +#: stock/models.py:2306 +msgid "Result" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:130 +msgid "Pass" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:132 +msgid "Fail" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:139 +msgid "No result (required)" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:141 +msgid "No result" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:154 +#: stock/templates/stock/stock_sidebar.html:16 +msgid "Installed Items" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:168 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 +msgid "Serial" +msgstr "" + +#: stock/admin.py:40 stock/admin.py:126 +msgid "Location ID" +msgstr "" + +#: stock/admin.py:41 stock/admin.py:127 +msgid "Location Name" +msgstr "" + +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 +msgid "Location Path" +msgstr "" + +#: stock/admin.py:118 +msgid "Stock Item ID" +msgstr "" + +#: stock/admin.py:125 +msgid "Status Code" +msgstr "" + +#: stock/admin.py:128 +msgid "Supplier Part ID" +msgstr "" + +#: stock/admin.py:129 +msgid "Supplier ID" +msgstr "" + +#: stock/admin.py:130 +msgid "Supplier Name" +msgstr "" + +#: stock/admin.py:131 +msgid "Customer ID" +msgstr "" + +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 +msgid "Installed In" +msgstr "" + +#: stock/admin.py:133 +msgid "Build ID" +msgstr "" + +#: stock/admin.py:135 +msgid "Sales Order ID" +msgstr "" + +#: stock/admin.py:136 +msgid "Purchase Order ID" +msgstr "" + +#: stock/admin.py:143 +msgid "Review Needed" +msgstr "" + +#: stock/admin.py:144 +msgid "Delete on Deplete" +msgstr "" + +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 +msgid "Expiry Date" +msgstr "" + +#: stock/api.py:499 templates/js/translated/table_filters.js:427 +msgid "External Location" +msgstr "" + +#: stock/api.py:693 +msgid "Quantity is required" +msgstr "" + +#: stock/api.py:700 +msgid "Valid part must be supplied" +msgstr "" + +#: stock/api.py:728 +msgid "The given supplier part does not exist" +msgstr "" + +#: stock/api.py:737 +msgid "The supplier part has a pack size defined, but flag use_pack_size not set" +msgstr "" + +#: stock/api.py:760 +msgid "Serial numbers cannot be supplied for a non-trackable part" +msgstr "" + +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 +#: stock/templates/stock/location.html:17 +#: stock/templates/stock/stock_app_base.html:8 +msgid "Stock Location" +msgstr "Място в склада" + +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 +msgid "Stock Locations" +msgstr "Места в склада" + +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 +msgid "Owner" +msgstr "" + +#: stock/models.py:149 stock/models.py:863 +msgid "Select Owner" +msgstr "" + +#: stock/models.py:156 +msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." +msgstr "" + +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 +msgid "External" +msgstr "" + +#: stock/models.py:163 +msgid "This is an external stock location" +msgstr "" + +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 +msgid "You cannot make this stock location structural because some stock items are already located into it!" +msgstr "" + +#: stock/models.py:593 +msgid "Stock items cannot be located into structural stock locations!" +msgstr "" + +#: stock/models.py:619 stock/serializers.py:229 +msgid "Stock item cannot be created for virtual parts" +msgstr "" + +#: stock/models.py:636 +#, python-brace-format +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" + +#: stock/models.py:644 stock/models.py:653 +msgid "Quantity must be 1 for item with a serial number" +msgstr "" + +#: stock/models.py:645 +msgid "Serial number cannot be set if quantity greater than 1" +msgstr "" + +#: stock/models.py:667 +msgid "Item cannot belong to itself" +msgstr "" + +#: stock/models.py:673 +msgid "Item must have a build reference if is_building=True" +msgstr "" + +#: stock/models.py:687 +msgid "Build reference does not point to the same part object" +msgstr "" + +#: stock/models.py:701 +msgid "Parent Stock Item" +msgstr "" + +#: stock/models.py:711 +msgid "Base part" +msgstr "" + +#: stock/models.py:719 +msgid "Select a matching supplier part for this stock item" +msgstr "" + +#: stock/models.py:729 +msgid "Where is this stock item located?" +msgstr "" + +#: stock/models.py:736 stock/serializers.py:1298 +msgid "Packaging this stock item is stored in" +msgstr "" + +#: stock/models.py:745 +msgid "Is this item installed in another item?" +msgstr "" + +#: stock/models.py:761 +msgid "Serial number for this item" +msgstr "" + +#: stock/models.py:775 stock/serializers.py:1283 +msgid "Batch code for this stock item" +msgstr "" + +#: stock/models.py:780 +msgid "Stock Quantity" +msgstr "" + +#: stock/models.py:787 +msgid "Source Build" +msgstr "" + +#: stock/models.py:789 +msgid "Build for this stock item" +msgstr "" + +#: stock/models.py:795 stock/templates/stock/item_base.html:363 +msgid "Consumed By" +msgstr "" + +#: stock/models.py:797 +msgid "Build order which consumed this stock item" +msgstr "" + +#: stock/models.py:808 +msgid "Source Purchase Order" +msgstr "" + +#: stock/models.py:811 +msgid "Purchase order for this stock item" +msgstr "" + +#: stock/models.py:817 +msgid "Destination Sales Order" +msgstr "" + +#: stock/models.py:824 +msgid "Expiry date for stock item. Stock will be considered expired after this date" +msgstr "" + +#: stock/models.py:839 +msgid "Delete on deplete" +msgstr "" + +#: stock/models.py:839 +msgid "Delete this Stock Item when stock is depleted" +msgstr "" + +#: stock/models.py:858 +msgid "Single unit purchase price at time of purchase" +msgstr "" + +#: stock/models.py:886 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1411 +msgid "Part is not set as trackable" +msgstr "" + +#: stock/models.py:1417 +msgid "Quantity must be integer" +msgstr "" + +#: stock/models.py:1423 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" + +#: stock/models.py:1426 +msgid "Serial numbers must be a list of integers" +msgstr "" + +#: stock/models.py:1429 +msgid "Quantity does not match serial numbers" +msgstr "" + +#: stock/models.py:1436 stock/serializers.py:449 +msgid "Serial numbers already exist" +msgstr "" + +#: stock/models.py:1507 +msgid "Stock item has been assigned to a sales order" +msgstr "" + +#: stock/models.py:1510 +msgid "Stock item is installed in another item" +msgstr "" + +#: stock/models.py:1513 +msgid "Stock item contains other items" +msgstr "" + +#: stock/models.py:1516 +msgid "Stock item has been assigned to a customer" +msgstr "" + +#: stock/models.py:1519 +msgid "Stock item is currently in production" +msgstr "" + +#: stock/models.py:1522 +msgid "Serialized stock cannot be merged" +msgstr "" + +#: stock/models.py:1529 stock/serializers.py:1194 +msgid "Duplicate stock items" +msgstr "" + +#: stock/models.py:1533 +msgid "Stock items must refer to the same part" +msgstr "" + +#: stock/models.py:1537 +msgid "Stock items must refer to the same supplier part" +msgstr "" + +#: stock/models.py:1541 +msgid "Stock status codes must match" +msgstr "" + +#: stock/models.py:1735 +msgid "StockItem cannot be moved as it is not in stock" +msgstr "" + +#: stock/models.py:2218 +msgid "Entry notes" +msgstr "" + +#: stock/models.py:2276 +msgid "Value must be provided for this test" +msgstr "" + +#: stock/models.py:2282 +msgid "Attachment must be uploaded for this test" +msgstr "" + +#: stock/models.py:2301 +msgid "Test name" +msgstr "" + +#: stock/models.py:2307 +msgid "Test result" +msgstr "" + +#: stock/models.py:2313 +msgid "Test output value" +msgstr "" + +#: stock/models.py:2320 +msgid "Test result attachment" +msgstr "" + +#: stock/models.py:2326 +msgid "Test notes" +msgstr "" + +#: stock/serializers.py:121 +msgid "Serial number is too large" +msgstr "" + +#: stock/serializers.py:222 +msgid "Use pack size when adding: the quantity defined is the number of packs" +msgstr "" + +#: stock/serializers.py:321 +msgid "Purchase price of this stock item, per unit or pack" +msgstr "" + +#: stock/serializers.py:382 +msgid "Enter number of stock items to serialize" +msgstr "" + +#: stock/serializers.py:394 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({q})" +msgstr "" + +#: stock/serializers.py:400 +msgid "Enter serial numbers for new items" +msgstr "" + +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 +msgid "Destination stock location" +msgstr "" + +#: stock/serializers.py:418 +msgid "Optional note field" +msgstr "" + +#: stock/serializers.py:428 +msgid "Serial numbers cannot be assigned to this part" +msgstr "" + +#: stock/serializers.py:489 +msgid "Select stock item to install" +msgstr "" + +#: stock/serializers.py:496 +msgid "Quantity to Install" +msgstr "" + +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" +msgstr "" + +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 +msgid "Add transaction note (optional)" +msgstr "" + +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 +msgid "Select part to convert stock item into" +msgstr "" + +#: stock/serializers.py:625 +msgid "Selected part is not a valid option for conversion" +msgstr "" + +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 +msgid "Part must be salable" +msgstr "" + +#: stock/serializers.py:1010 +msgid "Item is allocated to a sales order" +msgstr "" + +#: stock/serializers.py:1014 +msgid "Item is allocated to a build order" +msgstr "" + +#: stock/serializers.py:1045 +msgid "Customer to assign stock items" +msgstr "" + +#: stock/serializers.py:1051 +msgid "Selected company is not a customer" +msgstr "" + +#: stock/serializers.py:1059 +msgid "Stock assignment notes" +msgstr "" + +#: stock/serializers.py:1069 stock/serializers.py:1329 +msgid "A list of stock items must be provided" +msgstr "" + +#: stock/serializers.py:1158 +msgid "Stock merging notes" +msgstr "" + +#: stock/serializers.py:1163 +msgid "Allow mismatched suppliers" +msgstr "" + +#: stock/serializers.py:1164 +msgid "Allow stock items with different supplier parts to be merged" +msgstr "" + +#: stock/serializers.py:1169 +msgid "Allow mismatched status" +msgstr "" + +#: stock/serializers.py:1170 +msgid "Allow stock items with different status codes to be merged" +msgstr "" + +#: stock/serializers.py:1180 +msgid "At least two stock items must be provided" +msgstr "" + +#: stock/serializers.py:1269 +msgid "StockItem primary key value" +msgstr "" + +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 +msgid "Stock transaction notes" +msgstr "" + +#: stock/templates/stock/item.html:17 +msgid "Stock Tracking Information" +msgstr "" + +#: stock/templates/stock/item.html:63 +msgid "Child Stock Items" +msgstr "" + +#: stock/templates/stock/item.html:72 +msgid "This stock item does not have any child items" +msgstr "" + +#: stock/templates/stock/item.html:81 +#: stock/templates/stock/stock_sidebar.html:12 +msgid "Test Data" +msgstr "" + +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 +msgid "Test Report" +msgstr "" + +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 +msgid "Delete Test Data" +msgstr "" + +#: stock/templates/stock/item.html:93 +msgid "Add Test Data" +msgstr "" + +#: stock/templates/stock/item.html:125 +msgid "Stock Item Notes" +msgstr "" + +#: stock/templates/stock/item.html:140 +msgid "Installed Stock Items" +msgstr "" + +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 +msgid "Install Stock Item" +msgstr "" + +#: stock/templates/stock/item.html:267 +msgid "Delete all test results for this stock item" +msgstr "" + +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 +msgid "Add Test Result" +msgstr "" + +#: stock/templates/stock/item_base.html:33 +msgid "Locate stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:51 +msgid "Scan to Location" +msgstr "" + +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 +msgid "Printing actions" +msgstr "" + +#: stock/templates/stock/item_base.html:75 +msgid "Stock adjustment actions" +msgstr "" + +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 +msgid "Count stock" +msgstr "" + +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 +msgid "Add stock" +msgstr "" + +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 +msgid "Remove stock" +msgstr "" + +#: stock/templates/stock/item_base.html:85 +msgid "Serialize stock" +msgstr "" + +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 +msgid "Transfer stock" +msgstr "" + +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 +msgid "Assign to customer" +msgstr "" + +#: stock/templates/stock/item_base.html:94 +msgid "Return to stock" +msgstr "" + +#: stock/templates/stock/item_base.html:97 +msgid "Uninstall stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:97 +msgid "Uninstall" +msgstr "" + +#: stock/templates/stock/item_base.html:101 +msgid "Install stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:101 +msgid "Install" +msgstr "" + +#: stock/templates/stock/item_base.html:115 +msgid "Convert to variant" +msgstr "" + +#: stock/templates/stock/item_base.html:118 +msgid "Duplicate stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:120 +msgid "Edit stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:123 +msgid "Delete stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:211 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:251 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 +msgid "Read only" +msgstr "" + +#: stock/templates/stock/item_base.html:265 +msgid "This stock item is unavailable" +msgstr "" + +#: stock/templates/stock/item_base.html:271 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:272 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:287 +msgid "This stock item is allocated to Sales Order" +msgstr "" + +#: stock/templates/stock/item_base.html:295 +msgid "This stock item is allocated to Build Order" +msgstr "" + +#: stock/templates/stock/item_base.html:311 +msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" +msgstr "" + +#: stock/templates/stock/item_base.html:317 +msgid "previous page" +msgstr "" + +#: stock/templates/stock/item_base.html:317 +msgid "Navigate to previous serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:326 +msgid "next page" +msgstr "" + +#: stock/templates/stock/item_base.html:326 +msgid "Navigate to next serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:340 +msgid "Available Quantity" +msgstr "" + +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:413 +msgid "Tests" +msgstr "" + +#: stock/templates/stock/item_base.html:419 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:437 +#, python-format +msgid "This StockItem expired on %(item.expiry_date)s" +msgstr "" + +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:439 +#, python-format +msgid "This StockItem expires on %(item.expiry_date)s" +msgstr "" + +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:455 +msgid "No stocktake performed" +msgstr "" + +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 +msgid "stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:532 +msgid "Edit Stock Status" +msgstr "" + +#: stock/templates/stock/item_base.html:541 +msgid "Stock Item QR Code" +msgstr "" + +#: stock/templates/stock/item_base.html:552 +msgid "Link Barcode to Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:616 +msgid "Select one of the part variants listed below." +msgstr "" + +#: stock/templates/stock/item_base.html:619 +msgid "Warning" +msgstr "" + +#: stock/templates/stock/item_base.html:620 +msgid "This action cannot be easily undone" +msgstr "" + +#: stock/templates/stock/item_base.html:628 +msgid "Convert Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:662 +msgid "Return to Stock" +msgstr "" + +#: stock/templates/stock/item_serialize.html:5 +msgid "Create serialized items from this stock item." +msgstr "" + +#: stock/templates/stock/item_serialize.html:7 +msgid "Select quantity to serialize, and unique serial numbers." +msgstr "" + +#: stock/templates/stock/location.html:38 +msgid "Perform stocktake for this stock location" +msgstr "" + +#: stock/templates/stock/location.html:45 +msgid "Locate stock location" +msgstr "" + +#: stock/templates/stock/location.html:63 +msgid "Scan stock items into this location" +msgstr "" + +#: stock/templates/stock/location.html:63 +msgid "Scan In Stock Items" +msgstr "" + +#: stock/templates/stock/location.html:64 +msgid "Scan stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:64 +msgid "Scan In Container" +msgstr "" + +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 +msgid "Location actions" +msgstr "" + +#: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 +msgid "Delete location" +msgstr "" + +#: stock/templates/stock/location.html:138 +msgid "Top level stock location" +msgstr "" + +#: stock/templates/stock/location.html:144 +msgid "Location Owner" +msgstr "" + +#: stock/templates/stock/location.html:148 +msgid "You are not in the list of owners of this location. This stock location cannot be edited." +msgstr "" + +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 +#: stock/templates/stock/location_sidebar.html:5 +msgid "Sublocations" +msgstr "" + +#: stock/templates/stock/location.html:217 +msgid "Create new stock location" +msgstr "" + +#: stock/templates/stock/location.html:218 +msgid "New Location" +msgstr "" + +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 +msgid "stock location" +msgstr "" + +#: stock/templates/stock/location.html:317 +msgid "Scanned stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:390 +msgid "Stock Location QR Code" +msgstr "" + +#: stock/templates/stock/location.html:401 +msgid "Link Barcode to Stock Location" +msgstr "" + +#: stock/templates/stock/stock_app_base.html:16 +msgid "Loading..." +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:5 +msgid "Stock Tracking" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:8 +msgid "Allocations" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:20 +msgid "Child Items" +msgstr "" + +#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7 +msgid "Permission Denied" +msgstr "" + +#: templates/403.html:15 +msgid "You do not have permission to view this page." +msgstr "" + +#: templates/403_csrf.html:11 +msgid "Authentication Failure" +msgstr "" + +#: templates/403_csrf.html:14 +msgid "You have been logged out from InvenTree." +msgstr "" + +#: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 +#: templates/navbar.html:150 +msgid "Login" +msgstr "" + +#: templates/404.html:6 templates/404.html:12 +msgid "Page Not Found" +msgstr "" + +#: templates/404.html:15 +msgid "The requested page does not exist" +msgstr "" + +#: templates/500.html:6 templates/500.html:12 +msgid "Internal Server Error" +msgstr "" + +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" +msgstr "" + +#: templates/500.html:16 +msgid "Refer to the error log in the admin interface for further details" +msgstr "" + +#: templates/503.html:11 templates/503.html:33 +msgid "Site is in Maintenance" +msgstr "" + +#: templates/503.html:39 +msgid "The site is currently in maintenance and should be up again soon!" +msgstr "" + +#: templates/InvenTree/index.html:7 +msgid "Index" +msgstr "" + +#: templates/InvenTree/index.html:39 +msgid "Subscribed Parts" +msgstr "" + +#: templates/InvenTree/index.html:52 +msgid "Subscribed Categories" +msgstr "" + +#: templates/InvenTree/index.html:62 +msgid "Latest Parts" +msgstr "" + +#: templates/InvenTree/index.html:77 +msgid "BOM Waiting Validation" +msgstr "" + +#: templates/InvenTree/index.html:106 +msgid "Recently Updated" +msgstr "" + +#: templates/InvenTree/index.html:134 +msgid "Depleted Stock" +msgstr "" + +#: templates/InvenTree/index.html:148 +msgid "Required for Build Orders" +msgstr "" + +#: templates/InvenTree/index.html:156 +msgid "Expired Stock" +msgstr "" + +#: templates/InvenTree/index.html:172 +msgid "Stale Stock" +msgstr "" + +#: templates/InvenTree/index.html:199 +msgid "Build Orders In Progress" +msgstr "" + +#: templates/InvenTree/index.html:210 +msgid "Overdue Build Orders" +msgstr "" + +#: templates/InvenTree/index.html:230 +msgid "Outstanding Purchase Orders" +msgstr "" + +#: templates/InvenTree/index.html:241 +msgid "Overdue Purchase Orders" +msgstr "" + +#: templates/InvenTree/index.html:262 +msgid "Outstanding Sales Orders" +msgstr "" + +#: templates/InvenTree/index.html:273 +msgid "Overdue Sales Orders" +msgstr "" + +#: templates/InvenTree/index.html:299 +msgid "InvenTree News" +msgstr "" + +#: templates/InvenTree/index.html:301 +msgid "Current News" +msgstr "" + +#: templates/InvenTree/notifications/history.html:9 +msgid "Notification History" +msgstr "" + +#: templates/InvenTree/notifications/history.html:13 +#: templates/InvenTree/notifications/history.html:14 +#: templates/InvenTree/notifications/notifications.html:75 +msgid "Delete Notifications" +msgstr "" + +#: templates/InvenTree/notifications/inbox.html:9 +msgid "Pending Notifications" +msgstr "" + +#: templates/InvenTree/notifications/inbox.html:13 +#: templates/InvenTree/notifications/inbox.html:14 +msgid "Mark all as read" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:10 +#: templates/InvenTree/notifications/sidebar.html:5 +#: templates/InvenTree/settings/sidebar.html:17 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 +msgid "Notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:38 +msgid "No unread notifications found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:58 +msgid "No notification history found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:65 +msgid "Delete all read notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:89 +#: templates/js/translated/notification.js:85 +msgid "Delete Notification" +msgstr "" + +#: templates/InvenTree/notifications/sidebar.html:8 +msgid "Inbox" +msgstr "" + +#: templates/InvenTree/notifications/sidebar.html:10 +msgid "History" +msgstr "" + +#: templates/InvenTree/search.html:8 +msgid "Search Results" +msgstr "" + +#: templates/InvenTree/settings/barcode.html:8 +msgid "Barcode Settings" +msgstr "" + +#: templates/InvenTree/settings/build.html:8 +msgid "Build Order Settings" +msgstr "" + +#: templates/InvenTree/settings/category.html:7 +msgid "Category Settings" +msgstr "" + +#: templates/InvenTree/settings/global.html:8 +msgid "Server Settings" +msgstr "" + +#: templates/InvenTree/settings/label.html:8 +#: templates/InvenTree/settings/user_labels.html:9 +msgid "Label Settings" +msgstr "" + +#: templates/InvenTree/settings/login.html:8 +msgid "Login Settings" +msgstr "" + +#: templates/InvenTree/settings/login.html:15 +msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!" +msgstr "" + +#: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5 +#: templates/socialaccount/signup.html:5 +msgid "Signup" +msgstr "" + +#: templates/InvenTree/settings/login.html:34 +msgid "Single Sign On" +msgstr "" + +#: templates/InvenTree/settings/mixins/settings.html:5 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 +msgid "Settings" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:5 +msgid "URLs" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:8 +#, python-format +msgid "The Base-URL for this plugin is %(base)s." +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:23 +msgid "Open in new tab" +msgstr "" + +#: templates/InvenTree/settings/notifications.html:9 +#: templates/InvenTree/settings/user_notifications.html:9 +msgid "Notification Settings" +msgstr "" + +#: templates/InvenTree/settings/notifications.html:18 +msgid "Slug" +msgstr "" + +#: templates/InvenTree/settings/part.html:7 +msgid "Part Settings" +msgstr "" + +#: templates/InvenTree/settings/part.html:42 +msgid "Part Import" +msgstr "" + +#: templates/InvenTree/settings/part.html:46 +msgid "Import Part" +msgstr "" + +#: templates/InvenTree/settings/part_parameters.html:20 +msgid "Part Parameter Templates" +msgstr "" + +#: templates/InvenTree/settings/part_stocktake.html:7 +msgid "Stocktake Settings" +msgstr "" + +#: templates/InvenTree/settings/part_stocktake.html:25 +msgid "Stocktake Reports" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:9 +#: templates/InvenTree/settings/sidebar.html:64 +msgid "Plugin Settings" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:15 +msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." +msgstr "" + +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 +msgid "Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 +msgid "Install Plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:49 +msgid "External plugins are not enabled for this InvenTree installation" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:64 +msgid "Plugin Error Stack" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:73 +msgid "Stage" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 +msgid "Message" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:16 +msgid "Plugin information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:85 +msgid "Version" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:47 +msgid "no version information supplied" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:61 +msgid "License" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:70 +msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running." +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:76 +msgid "Package information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:82 +msgid "Installation method" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:85 +msgid "This plugin was installed as a package" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:87 +msgid "This plugin was found in a local server path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:93 +msgid "Installation path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:100 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 +msgid "Builtin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:101 +msgid "This is a builtin plugin which cannot be disabled" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 +msgid "Commit Author" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:117 +#: templates/about.html:36 +msgid "Commit Date" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:121 +#: templates/about.html:29 +msgid "Commit Hash" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:125 +msgid "Commit Message" +msgstr "" + +#: templates/InvenTree/settings/po.html:7 +msgid "Purchase Order Settings" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:7 +msgid "Pricing Settings" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:34 +msgid "Exchange Rates" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:38 +msgid "Update Now" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:46 +#: templates/InvenTree/settings/pricing.html:50 +msgid "Last Update" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:50 +msgid "Never" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:8 +msgid "Project Code Settings" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:21 +#: templates/InvenTree/settings/sidebar.html:33 +msgid "Project Codes" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:25 +#: templates/InvenTree/settings/settings_staff_js.html:196 +msgid "New Project Code" +msgstr "" + +#: templates/InvenTree/settings/report.html:8 +#: templates/InvenTree/settings/user_reporting.html:9 +msgid "Report Settings" +msgstr "" + +#: templates/InvenTree/settings/returns.html:7 +msgid "Return Order Settings" +msgstr "" + +#: templates/InvenTree/settings/setting.html:31 +msgid "No value set" +msgstr "" + +#: templates/InvenTree/settings/setting.html:46 +msgid "Edit setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:58 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:60 +msgid "Edit Notification Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:63 +msgid "Edit Global Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:65 +msgid "Edit User Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:49 +msgid "Rate" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 +msgid "Delete Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:265 +msgid "No category parameter templates found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 +msgid "Edit Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 +msgid "Delete Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:306 +msgid "Edit Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:333 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:368 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:398 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:6 +#: templates/InvenTree/settings/user_settings.html:9 +msgid "User Settings" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:9 +msgid "Account" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:11 +msgid "Display" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:13 +msgid "Home Page" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:15 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 +msgid "Search" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:19 +#: templates/InvenTree/settings/sidebar.html:43 +msgid "Reporting" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:24 +msgid "Global Settings" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9 +msgid "Server" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:41 +msgid "Labels" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:45 +msgid "Categories" +msgstr "" + +#: templates/InvenTree/settings/so.html:7 +msgid "Sales Order Settings" +msgstr "" + +#: templates/InvenTree/settings/stock.html:7 +msgid "Stock Settings" +msgstr "" + +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + +#: templates/InvenTree/settings/user.html:13 +msgid "Account Settings" +msgstr "" + +#: templates/InvenTree/settings/user.html:19 +#: templates/account/password_reset_from_key.html:4 +#: templates/account/password_reset_from_key.html:7 +msgid "Change Password" +msgstr "" + +#: templates/InvenTree/settings/user.html:33 +msgid "Username" +msgstr "" + +#: templates/InvenTree/settings/user.html:37 +msgid "First Name" +msgstr "" + +#: templates/InvenTree/settings/user.html:41 +msgid "Last Name" +msgstr "" + +#: templates/InvenTree/settings/user.html:55 +msgid "The following email addresses are associated with your account:" +msgstr "" + +#: templates/InvenTree/settings/user.html:76 +msgid "Verified" +msgstr "" + +#: templates/InvenTree/settings/user.html:78 +msgid "Unverified" +msgstr "" + +#: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 +msgid "Primary" +msgstr "" + +#: templates/InvenTree/settings/user.html:86 +msgid "Make Primary" +msgstr "" + +#: templates/InvenTree/settings/user.html:87 +msgid "Re-send Verification" +msgstr "" + +#: templates/InvenTree/settings/user.html:96 +msgid "Warning:" +msgstr "" + +#: templates/InvenTree/settings/user.html:97 +msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc." +msgstr "" + +#: templates/InvenTree/settings/user.html:105 +msgid "Add Email Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:110 +msgid "Add Email" +msgstr "" + +#: templates/InvenTree/settings/user.html:120 +msgid "Multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:125 +msgid "You have these factors available:" +msgstr "" + +#: templates/InvenTree/settings/user.html:135 +msgid "TOTP" +msgstr "" + +#: templates/InvenTree/settings/user.html:141 +msgid "Static" +msgstr "" + +#: templates/InvenTree/settings/user.html:150 +msgid "Multifactor authentication is not configured for your account" +msgstr "" + +#: templates/InvenTree/settings/user.html:157 +msgid "Change factors" +msgstr "" + +#: templates/InvenTree/settings/user.html:158 +msgid "Setup multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:160 +msgid "Remove multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:168 +msgid "Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:174 +msgid "Log out active sessions (except this one)" +msgstr "" + +#: templates/InvenTree/settings/user.html:175 +msgid "Log Out Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:184 +msgid "unknown on unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:185 +msgid "unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:189 +msgid "IP Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:190 +msgid "Device" +msgstr "" + +#: templates/InvenTree/settings/user.html:191 +msgid "Last Activity" +msgstr "" + +#: templates/InvenTree/settings/user.html:204 +#, python-format +msgid "%(time)s ago (this session)" +msgstr "" + +#: templates/InvenTree/settings/user.html:206 +#, python-format +msgid "%(time)s ago" +msgstr "" + +#: templates/InvenTree/settings/user.html:218 +msgid "Do you really want to remove the selected email address?" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:9 +msgid "Display Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:29 +msgid "Theme Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:39 +msgid "Select theme" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:50 +msgid "Set Theme" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:58 +msgid "Language Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:67 +msgid "Select language" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:83 +#, python-format +msgid "%(lang_translated)s%% translated" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:85 +msgid "No translations available" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:92 +msgid "Set Language" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:95 +msgid "Some languages are not complete" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:97 +msgid "Show only sufficient" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:99 +msgid "and hidden." +msgstr "" + +#: templates/InvenTree/settings/user_display.html:99 +msgid "Show them too" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:106 +msgid "Help the translation efforts!" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:107 +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgstr "" + +#: templates/InvenTree/settings/user_display.html:108 +msgid "InvenTree Translation Project" +msgstr "" + +#: templates/InvenTree/settings/user_homepage.html:9 +msgid "Home Page Settings" +msgstr "" + +#: templates/InvenTree/settings/user_search.html:9 +msgid "Search Settings" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:9 +msgid "Single Sign On Accounts" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:16 +msgid "You can sign in to your account using any of the following third party accounts:" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:52 +msgid "There are no social network accounts connected to this account." +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:58 +msgid "Add SSO Account" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:67 +msgid "Single Sign On is not enabled for this server" +msgstr "" + +#: templates/about.html:9 +msgid "InvenTree Version" +msgstr "" + +#: templates/about.html:14 +msgid "Development Version" +msgstr "" + +#: templates/about.html:17 +msgid "Up to Date" +msgstr "" + +#: templates/about.html:19 +msgid "Update Available" +msgstr "" + +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 +msgid "InvenTree Documentation" +msgstr "" + +#: templates/about.html:54 +msgid "API Version" +msgstr "" + +#: templates/about.html:59 +msgid "Python Version" +msgstr "" + +#: templates/about.html:64 +msgid "Django Version" +msgstr "" + +#: templates/about.html:69 +msgid "View Code on GitHub" +msgstr "" + +#: templates/about.html:74 +msgid "Credits" +msgstr "" + +#: templates/about.html:79 +msgid "Mobile App" +msgstr "" + +#: templates/about.html:84 +msgid "Submit Bug Report" +msgstr "" + +#: templates/about.html:91 templates/clip.html:4 +#: templates/js/translated/helpers.js:585 +msgid "copy to clipboard" +msgstr "" + +#: templates/about.html:91 +msgid "copy version information" +msgstr "" + +#: templates/account/base.html:66 templates/navbar.html:17 +msgid "InvenTree logo" +msgstr "" + +#: templates/account/email_confirm.html:6 +#: templates/account/email_confirm.html:9 +msgid "Confirm Email Address" +msgstr "" + +#: templates/account/email_confirm.html:15 +#, python-format +msgid "Please confirm that %(email)s is an email address for user %(user_display)s." +msgstr "" + +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 +msgid "Confirm" +msgstr "" + +#: templates/account/email_confirm.html:29 +#, python-format +msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request." +msgstr "" + +#: templates/account/login.html:6 templates/account/login.html:17 +#: templates/account/login.html:38 templates/socialaccount/login.html:5 +msgid "Sign In" +msgstr "" + +#: templates/account/login.html:21 +msgid "Not a member?" +msgstr "" + +#: templates/account/login.html:23 templates/account/signup.html:11 +#: templates/account/signup.html:22 templates/socialaccount/signup.html:8 +#: templates/socialaccount/signup.html:20 +msgid "Sign Up" +msgstr "" + +#: templates/account/login.html:45 +msgid "Forgot Password?" +msgstr "" + +#: templates/account/login.html:53 +msgid "or log in with" +msgstr "" + +#: templates/account/logout.html:5 templates/account/logout.html:8 +#: templates/account/logout.html:20 +msgid "Sign Out" +msgstr "" + +#: templates/account/logout.html:10 +msgid "Are you sure you want to sign out?" +msgstr "" + +#: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +msgid "Return to Site" +msgstr "" + +#: templates/account/password_reset.html:5 +#: templates/account/password_reset.html:12 +msgid "Password Reset" +msgstr "" + +#: templates/account/password_reset.html:18 +msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." +msgstr "" + +#: templates/account/password_reset.html:23 +msgid "Reset My Password" +msgstr "" + +#: templates/account/password_reset.html:27 templates/account/signup.html:37 +msgid "This function is currently disabled. Please contact an administrator." +msgstr "" + +#: templates/account/password_reset_from_key.html:7 +msgid "Bad Token" +msgstr "" + +#: templates/account/password_reset_from_key.html:11 +#, python-format +msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." +msgstr "" + +#: templates/account/password_reset_from_key.html:18 +msgid "Change password" +msgstr "" + +#: templates/account/password_reset_from_key.html:22 +msgid "Your password is now changed." +msgstr "" + +#: templates/account/signup.html:13 +#, python-format +msgid "Already have an account? Then please sign in." +msgstr "" + +#: templates/account/signup.html:28 +msgid "Use a SSO-provider for signup" +msgstr "" + +#: templates/account/signup_closed.html:5 +#: templates/account/signup_closed.html:8 +msgid "Sign Up Closed" +msgstr "" + +#: templates/account/signup_closed.html:10 +msgid "Sign up is currently closed." +msgstr "" + +#: templates/account/signup_closed.html:15 +#: templates/socialaccount/authentication_error.html:19 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +msgid "Return to login page" +msgstr "" + +#: templates/admin_button.html:8 +msgid "View in administration panel" +msgstr "" + +#: templates/allauth_2fa/authenticate.html:5 +msgid "Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/authenticate.html:13 +msgid "Authenticate" +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:6 +msgid "Two-Factor Authentication Backup Tokens" +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:17 +msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones." +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:20 +msgid "No backup tokens are available. Press the button below to generate some." +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:28 +msgid "Generate Tokens" +msgstr "" + +#: templates/allauth_2fa/remove.html:6 +msgid "Disable Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/remove.html:9 +msgid "Are you sure?" +msgstr "" + +#: templates/allauth_2fa/remove.html:17 +msgid "Disable 2FA" +msgstr "" + +#: templates/allauth_2fa/setup.html:6 +msgid "Setup Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/setup.html:10 +msgid "Step 1" +msgstr "" + +#: templates/allauth_2fa/setup.html:14 +msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." +msgstr "" + +#: templates/allauth_2fa/setup.html:23 +msgid "Step 2" +msgstr "" + +#: templates/allauth_2fa/setup.html:27 +msgid "Input a token generated by the app:" +msgstr "" + +#: templates/allauth_2fa/setup.html:37 +msgid "Verify" +msgstr "" + +#: templates/attachment_button.html:4 templates/js/translated/attachment.js:70 +msgid "Add Link" +msgstr "" + +#: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 +msgid "Add Attachment" +msgstr "" + +#: templates/barcode_data.html:5 +msgid "Barcode Identifier" +msgstr "" + +#: templates/base.html:103 +msgid "Server Restart Required" +msgstr "" + +#: templates/base.html:106 +msgid "A configuration option has been changed which requires a server restart" +msgstr "" + +#: templates/base.html:106 templates/base.html:116 +msgid "Contact your system administrator for further information" +msgstr "" + +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + +#: templates/email/build_order_completed.html:9 +#: templates/email/new_order_assigned.html:9 +#: templates/email/overdue_build_order.html:9 +#: templates/email/overdue_purchase_order.html:9 +#: templates/email/overdue_sales_order.html:9 +#: templates/email/purchase_order_received.html:9 +#: templates/email/return_order_received.html:9 +msgid "Click on the following link to view this order" +msgstr "" + +#: templates/email/build_order_required_stock.html:7 +msgid "Stock is required for the following build order" +msgstr "" + +#: templates/email/build_order_required_stock.html:8 +#, python-format +msgid "Build order %(build)s - building %(quantity)s x %(part)s" +msgstr "" + +#: templates/email/build_order_required_stock.html:10 +msgid "Click on the following link to view this build order" +msgstr "" + +#: templates/email/build_order_required_stock.html:14 +msgid "The following parts are low on required stock" +msgstr "" + +#: templates/email/build_order_required_stock.html:18 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 +msgid "Required Quantity" +msgstr "" + +#: templates/email/build_order_required_stock.html:38 +#: templates/email/low_stock_notification.html:30 +msgid "You are receiving this email because you are subscribed to notifications for this part " +msgstr "" + +#: templates/email/low_stock_notification.html:9 +msgid "Click on the following link to view this part" +msgstr "" + +#: templates/email/low_stock_notification.html:18 +#: templates/js/translated/part.js:3182 +msgid "Minimum Quantity" +msgstr "" + +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 +msgid "No Response" +msgstr "" + +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 +msgid "No response from the InvenTree server" +msgstr "" + +#: templates/js/translated/api.js:232 +msgid "Error 400: Bad request" +msgstr "" + +#: templates/js/translated/api.js:233 +msgid "API request returned error code 400" +msgstr "" + +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 +msgid "Error 401: Not Authenticated" +msgstr "" + +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 +msgid "Authentication credentials not supplied" +msgstr "" + +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 +msgid "Error 403: Permission Denied" +msgstr "" + +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 +msgid "You do not have the required permissions to access this function" +msgstr "" + +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 +msgid "Error 404: Resource Not Found" +msgstr "" + +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 +msgid "The requested resource could not be located on the server" +msgstr "" + +#: templates/js/translated/api.js:252 +msgid "Error 405: Method Not Allowed" +msgstr "" + +#: templates/js/translated/api.js:253 +msgid "HTTP method not allowed at URL" +msgstr "" + +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 +msgid "Error 408: Timeout" +msgstr "" + +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 +msgid "Connection timeout while requesting data from server" +msgstr "" + +#: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 +msgid "Error code" +msgstr "" + +#: templates/js/translated/attachment.js:114 +msgid "All selected attachments will be deleted" +msgstr "" + +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 +msgid "No attachments found" +msgstr "" + +#: templates/js/translated/attachment.js:315 +msgid "Edit Attachment" +msgstr "" + +#: templates/js/translated/attachment.js:346 +msgid "Upload Date" +msgstr "" + +#: templates/js/translated/attachment.js:366 +msgid "Edit attachment" +msgstr "" + +#: templates/js/translated/attachment.js:374 +msgid "Delete attachment" +msgstr "" + +#: templates/js/translated/barcode.js:43 +msgid "Scan barcode data here using barcode scanner" +msgstr "" + +#: templates/js/translated/barcode.js:45 +msgid "Enter barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:59 +msgid "Scan barcode using connected webcam" +msgstr "" + +#: templates/js/translated/barcode.js:138 +msgid "Enter optional notes for stock transfer" +msgstr "" + +#: templates/js/translated/barcode.js:139 +msgid "Enter notes" +msgstr "" + +#: templates/js/translated/barcode.js:188 +msgid "Server error" +msgstr "" + +#: templates/js/translated/barcode.js:217 +msgid "Unknown response from server" +msgstr "" + +#: templates/js/translated/barcode.js:252 +#: templates/js/translated/modals.js:1120 +msgid "Invalid server response" +msgstr "" + +#: templates/js/translated/barcode.js:372 +msgid "Scan barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:420 templates/navbar.html:114 +msgid "Scan Barcode" +msgstr "" + +#: templates/js/translated/barcode.js:440 +msgid "No URL in response" +msgstr "" + +#: templates/js/translated/barcode.js:481 +msgid "This will remove the link to the associated barcode" +msgstr "" + +#: templates/js/translated/barcode.js:487 +msgid "Unlink" +msgstr "" + +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 +msgid "Remove stock item" +msgstr "" + +#: templates/js/translated/barcode.js:593 +msgid "Scan Stock Items Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:595 +msgid "Scan stock item barcode to check in to this location" +msgstr "" + +#: templates/js/translated/barcode.js:598 +#: templates/js/translated/barcode.js:795 +msgid "Check In" +msgstr "" + +#: templates/js/translated/barcode.js:630 +msgid "No barcode provided" +msgstr "" + +#: templates/js/translated/barcode.js:670 +msgid "Stock Item already scanned" +msgstr "" + +#: templates/js/translated/barcode.js:674 +msgid "Stock Item already in this location" +msgstr "" + +#: templates/js/translated/barcode.js:681 +msgid "Added stock item" +msgstr "" + +#: templates/js/translated/barcode.js:690 +msgid "Barcode does not match valid stock item" +msgstr "" + +#: templates/js/translated/barcode.js:709 +msgid "Scan Stock Container Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:711 +msgid "Scan stock container barcode to check in to this location" +msgstr "" + +#: templates/js/translated/barcode.js:745 +msgid "Barcode does not match valid stock location" +msgstr "" + +#: templates/js/translated/barcode.js:789 +msgid "Check Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:858 +#: templates/js/translated/barcode.js:867 +msgid "Barcode does not match a valid location" +msgstr "" + +#: templates/js/translated/bom.js:78 +msgid "Create BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:132 +msgid "Display row data" +msgstr "" + +#: templates/js/translated/bom.js:188 +msgid "Row Data" +msgstr "" + +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 +#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 +msgid "Close" +msgstr "" + +#: templates/js/translated/bom.js:306 +msgid "Download BOM Template" +msgstr "" + +#: templates/js/translated/bom.js:351 +msgid "Multi Level BOM" +msgstr "" + +#: templates/js/translated/bom.js:352 +msgid "Include BOM data for subassemblies" +msgstr "" + +#: templates/js/translated/bom.js:357 +msgid "Levels" +msgstr "" + +#: templates/js/translated/bom.js:358 +msgid "Select maximum number of BOM levels to export (0 = all levels)" +msgstr "" + +#: templates/js/translated/bom.js:365 +msgid "Include Alternative Parts" +msgstr "" + +#: templates/js/translated/bom.js:366 +msgid "Include alternative parts in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:371 +msgid "Include Parameter Data" +msgstr "" + +#: templates/js/translated/bom.js:372 +msgid "Include part parameter data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:377 +msgid "Include Stock Data" +msgstr "" + +#: templates/js/translated/bom.js:378 +msgid "Include part stock data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:383 +msgid "Include Manufacturer Data" +msgstr "" + +#: templates/js/translated/bom.js:384 +msgid "Include part manufacturer data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:389 +msgid "Include Supplier Data" +msgstr "" + +#: templates/js/translated/bom.js:390 +msgid "Include part supplier data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:395 +msgid "Include Pricing Data" +msgstr "" + +#: templates/js/translated/bom.js:396 +msgid "Include part pricing data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:591 +msgid "Remove substitute part" +msgstr "" + +#: templates/js/translated/bom.js:645 +msgid "Select and add a new substitute part using the input below" +msgstr "" + +#: templates/js/translated/bom.js:656 +msgid "Are you sure you wish to remove this substitute part link?" +msgstr "" + +#: templates/js/translated/bom.js:662 +msgid "Remove Substitute Part" +msgstr "" + +#: templates/js/translated/bom.js:701 +msgid "Add Substitute" +msgstr "" + +#: templates/js/translated/bom.js:702 +msgid "Edit BOM Item Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:764 +msgid "All selected BOM items will be deleted" +msgstr "" + +#: templates/js/translated/bom.js:780 +msgid "Delete selected BOM items?" +msgstr "" + +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:946 +msgid "Substitutes Available" +msgstr "" + +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 +msgid "Variant stock allowed" +msgstr "" + +#: templates/js/translated/bom.js:1014 +msgid "Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:1139 +msgid "BOM pricing is complete" +msgstr "" + +#: templates/js/translated/bom.js:1144 +msgid "BOM pricing is incomplete" +msgstr "" + +#: templates/js/translated/bom.js:1151 +msgid "No pricing available" +msgstr "" + +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 +msgid "No Stock Available" +msgstr "" + +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 +msgid "Includes substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 +msgid "Consumable item" +msgstr "" + +#: templates/js/translated/bom.js:1279 +msgid "Validate BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1281 +msgid "This line has been validated" +msgstr "" + +#: templates/js/translated/bom.js:1283 +msgid "Edit substitute parts" +msgstr "" + +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +msgid "Edit BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1287 +msgid "Delete BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1307 +msgid "View BOM" +msgstr "" + +#: templates/js/translated/bom.js:1391 +msgid "No BOM items found" +msgstr "" + +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 +msgid "Required Part" +msgstr "" + +#: templates/js/translated/bom.js:1677 +msgid "Inherited from parent BOM" +msgstr "" + +#: templates/js/translated/build.js:139 +msgid "Edit Build Order" +msgstr "" + +#: templates/js/translated/build.js:182 +msgid "Create Build Order" +msgstr "" + +#: templates/js/translated/build.js:214 +msgid "Cancel Build Order" +msgstr "" + +#: templates/js/translated/build.js:223 +msgid "Are you sure you wish to cancel this build?" +msgstr "" + +#: templates/js/translated/build.js:229 +msgid "Stock items have been allocated to this build order" +msgstr "" + +#: templates/js/translated/build.js:236 +msgid "There are incomplete outputs remaining for this build order" +msgstr "" + +#: templates/js/translated/build.js:288 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:296 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "" + +#: templates/js/translated/build.js:301 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:319 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 +msgid "Next available serial number" +msgstr "" + +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 +msgid "Latest serial number" +msgstr "" + +#: templates/js/translated/build.js:371 +msgid "The Bill of Materials contains trackable parts" +msgstr "" + +#: templates/js/translated/build.js:372 +msgid "Build outputs must be generated individually" +msgstr "" + +#: templates/js/translated/build.js:380 +msgid "Trackable parts can have serial numbers specified" +msgstr "" + +#: templates/js/translated/build.js:381 +msgid "Enter serial numbers to generate multiple single build outputs" +msgstr "" + +#: templates/js/translated/build.js:388 +msgid "Create Build Output" +msgstr "" + +#: templates/js/translated/build.js:419 +msgid "Allocate stock items to this build output" +msgstr "" + +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" +msgstr "" + +#: templates/js/translated/build.js:436 +msgid "Complete build output" +msgstr "" + +#: templates/js/translated/build.js:444 +msgid "Scrap build output" +msgstr "" + +#: templates/js/translated/build.js:451 +msgid "Delete build output" +msgstr "" + +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" +msgstr "" + +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 +msgid "Select Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 +msgid "At least one build output must be selected" +msgstr "" + +#: templates/js/translated/build.js:590 +msgid "Selected build outputs will be marked as complete" +msgstr "" + +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 +msgid "Output" +msgstr "" + +#: templates/js/translated/build.js:622 +msgid "Complete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:719 +msgid "Selected build outputs will be marked as scrapped" +msgstr "" + +#: templates/js/translated/build.js:721 +msgid "Scrapped output are marked as rejected" +msgstr "" + +#: templates/js/translated/build.js:722 +msgid "Allocated stock items will no longer be available" +msgstr "" + +#: templates/js/translated/build.js:723 +msgid "The completion status of the build order will not be adjusted" +msgstr "" + +#: templates/js/translated/build.js:754 +msgid "Scrap Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:844 +msgid "Selected build outputs will be deleted" +msgstr "" + +#: templates/js/translated/build.js:846 +msgid "Build output data will be permanently deleted" +msgstr "" + +#: templates/js/translated/build.js:847 +msgid "Allocated stock items will be returned to stock" +msgstr "" + +#: templates/js/translated/build.js:865 +msgid "Delete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:952 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 +msgid "Location not specified" +msgstr "" + +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1108 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 +msgid "No active build outputs found" +msgstr "" + +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" +msgstr "" + +#: templates/js/translated/build.js:1388 +msgid "Required Tests" +msgstr "" + +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 +msgid "Select Parts" +msgstr "" + +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 +msgid "You must select at least one part to allocate" +msgstr "" + +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 +msgid "Specify stock allocation quantity" +msgstr "" + +#: templates/js/translated/build.js:1701 +msgid "All Parts Allocated" +msgstr "" + +#: templates/js/translated/build.js:1702 +msgid "All selected parts have been fully allocated" +msgstr "" + +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 +msgid "Select source location (leave blank to take from all locations)" +msgstr "" + +#: templates/js/translated/build.js:1744 +msgid "Allocate Stock Items to Build Order" +msgstr "" + +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 +msgid "No matching stock locations" +msgstr "" + +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 +msgid "No matching stock items" +msgstr "" + +#: templates/js/translated/build.js:1925 +msgid "Automatic Stock Allocation" +msgstr "" + +#: templates/js/translated/build.js:1926 +msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" +msgstr "" + +#: templates/js/translated/build.js:1928 +msgid "If a location is specified, stock will only be allocated from that location" +msgstr "" + +#: templates/js/translated/build.js:1929 +msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" +msgstr "" + +#: templates/js/translated/build.js:1930 +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:1961 +msgid "Allocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:2067 +msgid "No builds matching query" +msgstr "" + +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 +msgid "Select" +msgstr "" + +#: templates/js/translated/build.js:2116 +msgid "Build order is overdue" +msgstr "" + +#: templates/js/translated/build.js:2162 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 +msgid "No user information" +msgstr "" + +#: templates/js/translated/build.js:2213 +msgid "group" +msgstr "" + +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 +msgid "Add Manufacturer" +msgstr "" + +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 +msgid "Add Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:132 +msgid "Edit Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 +msgid "Add Supplier" +msgstr "" + +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 +msgid "Add Supplier Part" +msgstr "" + +#: templates/js/translated/company.js:344 +msgid "All selected supplier parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:360 +msgid "Delete Supplier Parts" +msgstr "" + +#: templates/js/translated/company.js:465 +msgid "Add new Company" +msgstr "" + +#: templates/js/translated/company.js:536 +msgid "Parts Supplied" +msgstr "" + +#: templates/js/translated/company.js:545 +msgid "Parts Manufactured" +msgstr "" + +#: templates/js/translated/company.js:560 +msgid "No company information found" +msgstr "" + +#: templates/js/translated/company.js:609 +msgid "Create New Contact" +msgstr "" + +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 +msgid "Edit Contact" +msgstr "" + +#: templates/js/translated/company.js:662 +msgid "All selected contacts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 +msgid "Role" +msgstr "" + +#: templates/js/translated/company.js:676 +msgid "Delete Contacts" +msgstr "" + +#: templates/js/translated/company.js:707 +msgid "No contacts found" +msgstr "" + +#: templates/js/translated/company.js:720 +msgid "Phone Number" +msgstr "" + +#: templates/js/translated/company.js:726 +msgid "Email Address" +msgstr "" + +#: templates/js/translated/company.js:752 +msgid "Delete Contact" +msgstr "" + +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 +msgid "All selected manufacturer parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1117 +msgid "Delete Manufacturer Parts" +msgstr "" + +#: templates/js/translated/company.js:1151 +msgid "All selected parameters will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1165 +msgid "Delete Parameters" +msgstr "" + +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 +msgid "No manufacturer parts found" +msgstr "" + +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 +msgid "Template part" +msgstr "" + +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 +msgid "Assembled part" +msgstr "" + +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 +msgid "No parameters found" +msgstr "" + +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 +msgid "Edit parameter" +msgstr "" + +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 +msgid "Delete parameter" +msgstr "" + +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 +msgid "Edit Parameter" +msgstr "" + +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 +msgid "Delete Parameter" +msgstr "" + +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 +msgid "No supplier parts found" +msgstr "" + +#: templates/js/translated/company.js:1654 +msgid "Base Units" +msgstr "" + +#: templates/js/translated/company.js:1684 +msgid "Availability" +msgstr "" + +#: templates/js/translated/company.js:1715 +msgid "Edit supplier part" +msgstr "" + +#: templates/js/translated/company.js:1716 +msgid "Delete supplier part" +msgstr "" + +#: templates/js/translated/company.js:1769 +#: templates/js/translated/pricing.js:694 +msgid "Delete Price Break" +msgstr "" + +#: templates/js/translated/company.js:1779 +#: templates/js/translated/pricing.js:712 +msgid "Edit Price Break" +msgstr "" + +#: templates/js/translated/company.js:1794 +msgid "No price break information found" +msgstr "" + +#: templates/js/translated/company.js:1823 +msgid "Last updated" +msgstr "" + +#: templates/js/translated/company.js:1830 +msgid "Edit price break" +msgstr "" + +#: templates/js/translated/company.js:1831 +msgid "Delete price break" +msgstr "" + +#: templates/js/translated/filters.js:186 +#: templates/js/translated/filters.js:672 +msgid "true" +msgstr "" + +#: templates/js/translated/filters.js:190 +#: templates/js/translated/filters.js:673 +msgid "false" +msgstr "" + +#: templates/js/translated/filters.js:214 +msgid "Select filter" +msgstr "" + +#: templates/js/translated/filters.js:437 +msgid "Print Labels" +msgstr "" + +#: templates/js/translated/filters.js:441 +msgid "Print Reports" +msgstr "" + +#: templates/js/translated/filters.js:453 +msgid "Download table data" +msgstr "" + +#: templates/js/translated/filters.js:460 +msgid "Reload table data" +msgstr "" + +#: templates/js/translated/filters.js:469 +msgid "Add new filter" +msgstr "" + +#: templates/js/translated/filters.js:477 +msgid "Clear all filters" +msgstr "" + +#: templates/js/translated/filters.js:582 +msgid "Create filter" +msgstr "" + +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 +msgid "Action Prohibited" +msgstr "" + +#: templates/js/translated/forms.js:376 +msgid "Create operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:391 +msgid "Update operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:405 +msgid "Delete operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:419 +msgid "View operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:772 +msgid "Keep this form open" +msgstr "" + +#: templates/js/translated/forms.js:874 +msgid "Enter a valid number" +msgstr "" + +#: templates/js/translated/forms.js:1422 templates/modals.html:19 +#: templates/modals.html:43 +msgid "Form errors exist" +msgstr "" + +#: templates/js/translated/forms.js:1876 +msgid "No results found" +msgstr "" + +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 +msgid "Searching" +msgstr "" + +#: templates/js/translated/forms.js:2394 +msgid "Clear input" +msgstr "" + +#: templates/js/translated/forms.js:2851 +msgid "File Column" +msgstr "" + +#: templates/js/translated/forms.js:2851 +msgid "Field Name" +msgstr "" + +#: templates/js/translated/forms.js:2863 +msgid "Select Columns" +msgstr "" + +#: templates/js/translated/helpers.js:77 +msgid "YES" +msgstr "" + +#: templates/js/translated/helpers.js:80 +msgid "NO" +msgstr "" + +#: templates/js/translated/helpers.js:93 +msgid "True" +msgstr "" + +#: templates/js/translated/helpers.js:94 +msgid "False" +msgstr "" + +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" +msgstr "" + +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 +msgid "Select Items" +msgstr "" + +#: templates/js/translated/label.js:54 +msgid "No items selected for printing" +msgstr "" + +#: templates/js/translated/label.js:72 +msgid "No Labels Found" +msgstr "" + +#: templates/js/translated/label.js:73 +msgid "No label templates found which match the selected items" +msgstr "" + +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 +msgid "Labels sent to printer" +msgstr "" + +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 +msgid "Cancel" +msgstr "" + +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 +#: templates/modals.html:28 templates/modals.html:51 +msgid "Submit" +msgstr "" + +#: templates/js/translated/modals.js:156 +msgid "Form Title" +msgstr "" + +#: templates/js/translated/modals.js:445 +msgid "Waiting for server..." +msgstr "" + +#: templates/js/translated/modals.js:596 +msgid "Show Error Information" +msgstr "" + +#: templates/js/translated/modals.js:682 +msgid "Accept" +msgstr "" + +#: templates/js/translated/modals.js:740 +msgid "Loading Data" +msgstr "" + +#: templates/js/translated/modals.js:1011 +msgid "Invalid response from server" +msgstr "" + +#: templates/js/translated/modals.js:1011 +msgid "Form data missing from server response" +msgstr "" + +#: templates/js/translated/modals.js:1023 +msgid "Error posting form data" +msgstr "" + +#: templates/js/translated/modals.js:1120 +msgid "JSON response missing form data" +msgstr "" + +#: templates/js/translated/modals.js:1135 +msgid "Error 400: Bad Request" +msgstr "" + +#: templates/js/translated/modals.js:1136 +msgid "Server returned error code 400" +msgstr "" + +#: templates/js/translated/modals.js:1159 +msgid "Error requesting form data" +msgstr "" + +#: templates/js/translated/news.js:33 +msgid "No news found" +msgstr "" + +#: templates/js/translated/news.js:38 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 +msgid "ID" +msgstr "" + +#: templates/js/translated/notification.js:52 +msgid "Age" +msgstr "" + +#: templates/js/translated/notification.js:65 +msgid "Notification" +msgstr "" + +#: templates/js/translated/notification.js:224 +msgid "Mark as unread" +msgstr "" + +#: templates/js/translated/notification.js:228 +msgid "Mark as read" +msgstr "" + +#: templates/js/translated/notification.js:254 +msgid "No unread notifications" +msgstr "" + +#: templates/js/translated/notification.js:296 templates/notifications.html:12 +msgid "Notifications will load here" +msgstr "" + +#: templates/js/translated/order.js:89 +msgid "Add Extra Line Item" +msgstr "" + +#: templates/js/translated/order.js:126 +msgid "Export Order" +msgstr "" + +#: templates/js/translated/order.js:241 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:255 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:268 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:281 +#: templates/js/translated/purchase_order.js:1981 +msgid "No line items found" +msgstr "" + +#: templates/js/translated/order.js:369 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:370 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:374 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/part.js:90 +msgid "Part Attributes" +msgstr "" + +#: templates/js/translated/part.js:94 +msgid "Part Creation Options" +msgstr "" + +#: templates/js/translated/part.js:98 +msgid "Part Duplication Options" +msgstr "" + +#: templates/js/translated/part.js:121 +msgid "Add Part Category" +msgstr "" + +#: templates/js/translated/part.js:305 +msgid "Parent part category" +msgstr "" + +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 +msgid "Icon (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/part.js:349 +msgid "Create Part Category" +msgstr "" + +#: templates/js/translated/part.js:352 +msgid "Create new category after this one" +msgstr "" + +#: templates/js/translated/part.js:353 +msgid "Part category created" +msgstr "" + +#: templates/js/translated/part.js:367 +msgid "Edit Part Category" +msgstr "" + +#: templates/js/translated/part.js:380 +msgid "Are you sure you want to delete this part category?" +msgstr "" + +#: templates/js/translated/part.js:385 +msgid "Move to parent category" +msgstr "" + +#: templates/js/translated/part.js:394 +msgid "Delete Part Category" +msgstr "" + +#: templates/js/translated/part.js:398 +msgid "Action for parts in this category" +msgstr "" + +#: templates/js/translated/part.js:403 +msgid "Action for child categories" +msgstr "" + +#: templates/js/translated/part.js:427 +msgid "Create Part" +msgstr "" + +#: templates/js/translated/part.js:429 +msgid "Create another part after this one" +msgstr "" + +#: templates/js/translated/part.js:430 +msgid "Part created successfully" +msgstr "" + +#: templates/js/translated/part.js:458 +msgid "Edit Part" +msgstr "" + +#: templates/js/translated/part.js:460 +msgid "Part edited" +msgstr "" + +#: templates/js/translated/part.js:471 +msgid "Create Part Variant" +msgstr "" + +#: templates/js/translated/part.js:528 +msgid "Active Part" +msgstr "" + +#: templates/js/translated/part.js:529 +msgid "Part cannot be deleted as it is currently active" +msgstr "" + +#: templates/js/translated/part.js:543 +msgid "Deleting this part cannot be reversed" +msgstr "" + +#: templates/js/translated/part.js:545 +msgid "Any stock items for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:546 +msgid "This part will be removed from any Bills of Material" +msgstr "" + +#: templates/js/translated/part.js:547 +msgid "All manufacturer and supplier information for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:554 +msgid "Delete Part" +msgstr "" + +#: templates/js/translated/part.js:590 +msgid "You are subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:592 +msgid "You have subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:597 +msgid "Subscribe to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:599 +msgid "You have unsubscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:616 +msgid "Validating the BOM will mark each line item as valid" +msgstr "" + +#: templates/js/translated/part.js:626 +msgid "Validate Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:629 +msgid "Validated Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:654 +msgid "Copy Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 +msgid "Low stock" +msgstr "" + +#: templates/js/translated/part.js:685 +msgid "No stock available" +msgstr "" + +#: templates/js/translated/part.js:745 +msgid "Demand" +msgstr "" + +#: templates/js/translated/part.js:768 +msgid "Unit" +msgstr "" + +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 +msgid "Virtual part" +msgstr "" + +#: templates/js/translated/part.js:803 +msgid "Subscribed part" +msgstr "" + +#: templates/js/translated/part.js:807 +msgid "Salable part" +msgstr "" + +#: templates/js/translated/part.js:886 +msgid "Schedule generation of a new stocktake report." +msgstr "" + +#: templates/js/translated/part.js:886 +msgid "Once complete, the stocktake report will be available for download." +msgstr "" + +#: templates/js/translated/part.js:894 +msgid "Generate Stocktake Report" +msgstr "" + +#: templates/js/translated/part.js:898 +msgid "Stocktake report scheduled" +msgstr "" + +#: templates/js/translated/part.js:1047 +msgid "No stocktake information available" +msgstr "" + +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 +msgid "Edit Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 +msgid "Delete Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1278 +msgid "No variants found" +msgstr "" + +#: templates/js/translated/part.js:1596 +msgid "No part parameter templates found" +msgstr "" + +#: templates/js/translated/part.js:1659 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1671 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/js/translated/part.js:1679 +msgid "Delete Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 +msgid "No purchase orders found" +msgstr "" + +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 +msgid "This line item is overdue" +msgstr "" + +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 +msgid "Receive line item" +msgstr "" + +#: templates/js/translated/part.js:1964 +msgid "Delete part relationship" +msgstr "" + +#: templates/js/translated/part.js:1986 +msgid "Delete Part Relationship" +msgstr "" + +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 +msgid "No parts found" +msgstr "" + +#: templates/js/translated/part.js:2195 +msgid "Set the part category for the selected parts" +msgstr "" + +#: templates/js/translated/part.js:2200 +msgid "Set Part Category" +msgstr "" + +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "" + +#: templates/js/translated/part.js:2283 +msgid "parts" +msgstr "" + +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 +msgid "No subcategories found" +msgstr "" + +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 +msgid "Display as tree" +msgstr "" + +#: templates/js/translated/part.js:2756 +msgid "Load Subcategories" +msgstr "" + +#: templates/js/translated/part.js:2772 +msgid "Subscribed category" +msgstr "" + +#: templates/js/translated/part.js:2849 +msgid "No test templates matching query" +msgstr "" + +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 +msgid "Edit test result" +msgstr "" + +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 +msgid "Delete test result" +msgstr "" + +#: templates/js/translated/part.js:2905 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/translated/part.js:2921 +msgid "Edit Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:2935 +msgid "Delete Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 +msgid "No date specified" +msgstr "" + +#: templates/js/translated/part.js:3017 +msgid "Specified date is in the past" +msgstr "" + +#: templates/js/translated/part.js:3023 +msgid "Speculative" +msgstr "" + +#: templates/js/translated/part.js:3073 +msgid "No scheduling information available for this part" +msgstr "" + +#: templates/js/translated/part.js:3079 +msgid "Error fetching scheduling information for this part" +msgstr "" + +#: templates/js/translated/part.js:3175 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:3191 +msgid "Maximum Quantity" +msgstr "" + +#: templates/js/translated/part.js:3236 +msgid "Minimum Stock Level" +msgstr "" + +#: templates/js/translated/plugin.js:45 +msgid "No plugins found" +msgstr "" + +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 +msgid "This plugin is active" +msgstr "" + +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" +msgstr "" + +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 +msgid "Disable Plugin" +msgstr "" + +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 +msgid "Enable Plugin" +msgstr "" + +#: templates/js/translated/plugin.js:157 +msgid "The Plugin was installed" +msgstr "" + +#: templates/js/translated/plugin.js:176 +msgid "Are you sure you want to enable this plugin?" +msgstr "" + +#: templates/js/translated/plugin.js:180 +msgid "Are you sure you want to disable this plugin?" +msgstr "" + +#: templates/js/translated/plugin.js:188 +msgid "Enable" +msgstr "" + +#: templates/js/translated/plugin.js:188 +msgid "Disable" +msgstr "" + +#: templates/js/translated/plugin.js:202 +msgid "Plugin updated" +msgstr "" + +#: templates/js/translated/pricing.js:159 +msgid "Error fetching currency data" +msgstr "" + +#: templates/js/translated/pricing.js:321 +msgid "No BOM data available" +msgstr "" + +#: templates/js/translated/pricing.js:463 +msgid "No supplier pricing data available" +msgstr "" + +#: templates/js/translated/pricing.js:572 +msgid "No price break data available" +msgstr "" + +#: templates/js/translated/pricing.js:755 +msgid "No purchase history data available" +msgstr "" + +#: templates/js/translated/pricing.js:791 +msgid "Purchase Price History" +msgstr "" + +#: templates/js/translated/pricing.js:894 +msgid "No sales history data available" +msgstr "" + +#: templates/js/translated/pricing.js:916 +msgid "Sale Price History" +msgstr "" + +#: templates/js/translated/pricing.js:1005 +msgid "No variant data available" +msgstr "" + +#: templates/js/translated/pricing.js:1045 +msgid "Variant Part" +msgstr "" + +#: templates/js/translated/purchase_order.js:166 +msgid "Select purchase order to duplicate" +msgstr "" + +#: templates/js/translated/purchase_order.js:173 +msgid "Duplicate Line Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:174 +msgid "Duplicate all line items from the selected order" +msgstr "" + +#: templates/js/translated/purchase_order.js:181 +msgid "Duplicate Extra Lines" +msgstr "" + +#: templates/js/translated/purchase_order.js:182 +msgid "Duplicate extra line items from the selected order" +msgstr "" + +#: templates/js/translated/purchase_order.js:203 +msgid "Edit Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:220 +msgid "Duplication Options" +msgstr "" + +#: templates/js/translated/purchase_order.js:447 +msgid "Complete Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 +msgid "Mark this order as complete?" +msgstr "" + +#: templates/js/translated/purchase_order.js:470 +msgid "All line items have been received" +msgstr "" + +#: templates/js/translated/purchase_order.js:475 +msgid "This order has line items which have not been marked as received." +msgstr "" + +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 +msgid "Completing this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/purchase_order.js:499 +msgid "Cancel Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:504 +msgid "Are you sure you wish to cancel this purchase order?" +msgstr "" + +#: templates/js/translated/purchase_order.js:510 +msgid "This purchase order can not be cancelled" +msgstr "" + +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 +msgid "After placing this order, line items will no longer be editable." +msgstr "" + +#: templates/js/translated/purchase_order.js:536 +msgid "Issue Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:628 +msgid "At least one purchaseable part must be selected" +msgstr "" + +#: templates/js/translated/purchase_order.js:653 +msgid "Quantity to order" +msgstr "" + +#: templates/js/translated/purchase_order.js:662 +msgid "New supplier part" +msgstr "" + +#: templates/js/translated/purchase_order.js:680 +msgid "New purchase order" +msgstr "" + +#: templates/js/translated/purchase_order.js:712 +msgid "Add to purchase order" +msgstr "" + +#: templates/js/translated/purchase_order.js:860 +msgid "No matching supplier parts" +msgstr "" + +#: templates/js/translated/purchase_order.js:879 +msgid "No matching purchase orders" +msgstr "" + +#: templates/js/translated/purchase_order.js:1066 +msgid "Select Line Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 +msgid "At least one line item must be selected" +msgstr "" + +#: templates/js/translated/purchase_order.js:1097 +msgid "Received Quantity" +msgstr "" + +#: templates/js/translated/purchase_order.js:1108 +msgid "Quantity to receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1184 +msgid "Stock Status" +msgstr "" + +#: templates/js/translated/purchase_order.js:1198 +msgid "Add barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1199 +msgid "Remove barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1202 +msgid "Specify location" +msgstr "" + +#: templates/js/translated/purchase_order.js:1210 +msgid "Add batch code" +msgstr "" + +#: templates/js/translated/purchase_order.js:1221 +msgid "Add serial numbers" +msgstr "" + +#: templates/js/translated/purchase_order.js:1273 +msgid "Serials" +msgstr "" + +#: templates/js/translated/purchase_order.js:1298 +msgid "Order Code" +msgstr "" + +#: templates/js/translated/purchase_order.js:1300 +msgid "Quantity to Receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 +msgid "Confirm receipt of items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1327 +msgid "Receive Purchase Order Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1395 +msgid "Scan Item Barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1396 +msgid "Scan barcode on incoming item (must not match any existing stock items)" +msgstr "" + +#: templates/js/translated/purchase_order.js:1410 +msgid "Invalid barcode data" +msgstr "" + +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 +msgid "Order is overdue" +msgstr "" + +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 +msgid "Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1834 +msgid "All selected Line items will be deleted" +msgstr "" + +#: templates/js/translated/purchase_order.js:1852 +msgid "Delete selected Line items?" +msgstr "" + +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 +msgid "Duplicate Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 +msgid "Edit Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 +msgid "Delete Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 +msgid "Duplicate line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 +msgid "Edit line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 +msgid "Delete line item" +msgstr "" + +#: templates/js/translated/report.js:63 +msgid "items selected" +msgstr "" + +#: templates/js/translated/report.js:71 +msgid "Select Report Template" +msgstr "" + +#: templates/js/translated/report.js:86 +msgid "Select Test Report Template" +msgstr "" + +#: templates/js/translated/report.js:140 +msgid "No Reports Found" +msgstr "" + +#: templates/js/translated/report.js:141 +msgid "No report templates found which match the selected items" +msgstr "" + +#: templates/js/translated/return_order.js:60 +#: templates/js/translated/sales_order.js:86 +msgid "Add Customer" +msgstr "" + +#: templates/js/translated/return_order.js:131 +msgid "Create Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:146 +msgid "Edit Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:166 +msgid "Issue Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:183 +msgid "Are you sure you wish to cancel this Return Order?" +msgstr "" + +#: templates/js/translated/return_order.js:190 +msgid "Cancel Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:215 +msgid "Complete Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:263 +msgid "No return orders found" +msgstr "" + +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 +msgid "Invalid Customer" +msgstr "" + +#: templates/js/translated/return_order.js:559 +msgid "Receive Return Order Items" +msgstr "" + +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 +msgid "No matching line items" +msgstr "" + +#: templates/js/translated/return_order.js:795 +msgid "Mark item as received" +msgstr "" + +#: templates/js/translated/sales_order.js:158 +msgid "Create Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:173 +msgid "Edit Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:288 +msgid "No stock items have been allocated to this shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:293 +msgid "The following stock items will be shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:333 +msgid "Complete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:357 +msgid "Confirm Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:413 +msgid "No pending shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:417 +msgid "No stock items have been allocated to pending shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:427 +msgid "Complete Shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:449 +msgid "Skip" +msgstr "" + +#: templates/js/translated/sales_order.js:510 +msgid "This order has line items which have not been completed." +msgstr "" + +#: templates/js/translated/sales_order.js:532 +msgid "Issue this Sales Order?" +msgstr "" + +#: templates/js/translated/sales_order.js:537 +msgid "Issue Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:556 +msgid "Cancel Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:561 +msgid "Cancelling this order means that the order will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:615 +msgid "Create New Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:725 +msgid "No sales orders found" +msgstr "" + +#: templates/js/translated/sales_order.js:905 +msgid "Edit shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:908 +msgid "Complete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:913 +msgid "Delete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:930 +msgid "Edit Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:945 +msgid "Delete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:978 +msgid "No matching shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:1003 +msgid "Shipment Reference" +msgstr "" + +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 +msgid "Not shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:1045 +msgid "Tracking" +msgstr "" + +#: templates/js/translated/sales_order.js:1049 +msgid "Invoice" +msgstr "" + +#: templates/js/translated/sales_order.js:1216 +msgid "Add Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:1267 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1268 +msgid "Allocate Stock Items to Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:1474 +msgid "No sales order allocations found" +msgstr "" + +#: templates/js/translated/sales_order.js:1566 +msgid "Edit Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1580 +msgid "Confirm Delete Operation" +msgstr "" + +#: templates/js/translated/sales_order.js:1581 +msgid "Delete Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 +msgid "Shipped to customer" +msgstr "" + +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 +msgid "Stock location not specified" +msgstr "" + +#: templates/js/translated/sales_order.js:2005 +msgid "Allocate serial numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2009 +msgid "Purchase stock" +msgstr "" + +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 +msgid "Calculate price" +msgstr "" + +#: templates/js/translated/sales_order.js:2032 +msgid "Cannot be deleted as items have been shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:2035 +msgid "Cannot be deleted as items have been allocated" +msgstr "" + +#: templates/js/translated/sales_order.js:2106 +msgid "Allocate Serial Numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2213 +msgid "Update Unit Price" +msgstr "" + +#: templates/js/translated/search.js:270 +msgid "No results" +msgstr "" + +#: templates/js/translated/search.js:292 templates/search.html:25 +msgid "Enter search query" +msgstr "" + +#: templates/js/translated/search.js:342 +msgid "result" +msgstr "" + +#: templates/js/translated/search.js:342 +msgid "results" +msgstr "" + +#: templates/js/translated/search.js:352 +msgid "Minimize results" +msgstr "" + +#: templates/js/translated/search.js:355 +msgid "Remove results" +msgstr "" + +#: templates/js/translated/stock.js:98 +msgid "Serialize Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:129 +msgid "Confirm Stock Serialization" +msgstr "" + +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 +msgid "Edit Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:217 +msgid "New Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:219 +msgid "Create another location after this one" +msgstr "" + +#: templates/js/translated/stock.js:220 +msgid "Stock location created" +msgstr "" + +#: templates/js/translated/stock.js:234 +msgid "Are you sure you want to delete this stock location?" +msgstr "" + +#: templates/js/translated/stock.js:241 +msgid "Move to parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:250 +msgid "Delete Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:254 +msgid "Action for stock items in this stock location" +msgstr "" + +#: templates/js/translated/stock.js:259 +msgid "Action for sub-locations" +msgstr "" + +#: templates/js/translated/stock.js:313 +msgid "This part cannot be serialized" +msgstr "" + +#: templates/js/translated/stock.js:349 +msgid "Add given quantity as packs instead of individual items" +msgstr "" + +#: templates/js/translated/stock.js:362 +msgid "Enter initial quantity for this stock item" +msgstr "" + +#: templates/js/translated/stock.js:368 +msgid "Enter serial numbers for new stock (or leave blank)" +msgstr "" + +#: templates/js/translated/stock.js:439 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:459 +msgid "Duplicate Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:475 +msgid "Are you sure you want to delete this stock item?" +msgstr "" + +#: templates/js/translated/stock.js:480 +msgid "Delete Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:501 +msgid "Edit Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:543 +msgid "Create another item after this one" +msgstr "" + +#: templates/js/translated/stock.js:555 +msgid "Created new stock item" +msgstr "" + +#: templates/js/translated/stock.js:568 +msgid "Created multiple stock items" +msgstr "" + +#: templates/js/translated/stock.js:593 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:614 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:634 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:643 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:751 +msgid "Confirm stock assignment" +msgstr "" + +#: templates/js/translated/stock.js:752 +msgid "Assign Stock to Customer" +msgstr "" + +#: templates/js/translated/stock.js:829 +msgid "Warning: Merge operation cannot be reversed" +msgstr "" + +#: templates/js/translated/stock.js:830 +msgid "Some information will be lost when merging stock items" +msgstr "" + +#: templates/js/translated/stock.js:832 +msgid "Stock transaction history will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:833 +msgid "Supplier part information will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:928 +msgid "Confirm stock item merge" +msgstr "" + +#: templates/js/translated/stock.js:929 +msgid "Merge Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1024 +msgid "Transfer Stock" +msgstr "" + +#: templates/js/translated/stock.js:1025 +msgid "Move" +msgstr "" + +#: templates/js/translated/stock.js:1031 +msgid "Count Stock" +msgstr "" + +#: templates/js/translated/stock.js:1032 +msgid "Count" +msgstr "" + +#: templates/js/translated/stock.js:1036 +msgid "Remove Stock" +msgstr "" + +#: templates/js/translated/stock.js:1037 +msgid "Take" +msgstr "" + +#: templates/js/translated/stock.js:1041 +msgid "Add Stock" +msgstr "" + +#: templates/js/translated/stock.js:1042 users/models.py:389 +msgid "Add" +msgstr "" + +#: templates/js/translated/stock.js:1046 +msgid "Delete Stock" +msgstr "" + +#: templates/js/translated/stock.js:1143 +msgid "Quantity cannot be adjusted for serialized stock" +msgstr "" + +#: templates/js/translated/stock.js:1143 +msgid "Specify stock quantity" +msgstr "" + +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 +msgid "Select Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "" + +#: templates/js/translated/stock.js:1224 +msgid "Confirm stock adjustment" +msgstr "" + +#: templates/js/translated/stock.js:1360 +msgid "PASS" +msgstr "" + +#: templates/js/translated/stock.js:1362 +msgid "FAIL" +msgstr "" + +#: templates/js/translated/stock.js:1367 +msgid "NO RESULT" +msgstr "" + +#: templates/js/translated/stock.js:1429 +msgid "Pass test" +msgstr "" + +#: templates/js/translated/stock.js:1432 +msgid "Add test result" +msgstr "" + +#: templates/js/translated/stock.js:1456 +msgid "No test results found" +msgstr "" + +#: templates/js/translated/stock.js:1520 +msgid "Test Date" +msgstr "" + +#: templates/js/translated/stock.js:1682 +msgid "Edit Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1704 +msgid "Delete Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1736 +msgid "In production" +msgstr "" + +#: templates/js/translated/stock.js:1740 +msgid "Installed in Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:1748 +msgid "Assigned to Sales Order" +msgstr "" + +#: templates/js/translated/stock.js:1754 +msgid "No stock location set" +msgstr "" + +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "" + +#: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 +msgid "Stock item has been installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:2081 +msgid "Stock item has been consumed by a build order" +msgstr "" + +#: templates/js/translated/stock.js:2085 +msgid "Stock item has expired" +msgstr "" + +#: templates/js/translated/stock.js:2087 +msgid "Stock item will expire soon" +msgstr "" + +#: templates/js/translated/stock.js:2092 +msgid "Stock item has been rejected" +msgstr "" + +#: templates/js/translated/stock.js:2094 +msgid "Stock item is lost" +msgstr "" + +#: templates/js/translated/stock.js:2096 +msgid "Stock item is destroyed" +msgstr "" + +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 +msgid "Depleted" +msgstr "" + +#: templates/js/translated/stock.js:2265 +msgid "Supplier part not specified" +msgstr "" + +#: templates/js/translated/stock.js:2312 +msgid "Stock Value" +msgstr "" + +#: templates/js/translated/stock.js:2440 +msgid "No stock items matching query" +msgstr "" + +#: templates/js/translated/stock.js:2544 +msgid "stock locations" +msgstr "" + +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" +msgstr "" + +#: templates/js/translated/stock.js:2817 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2821 +msgid "No changes" +msgstr "" + +#: templates/js/translated/stock.js:2833 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2855 +msgid "Location no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2872 +msgid "Build order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2887 +msgid "Purchase order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2904 +msgid "Sales Order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2921 +msgid "Return Order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2940 +msgid "Customer no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2958 +msgid "Stock item no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2976 +msgid "Added" +msgstr "" + +#: templates/js/translated/stock.js:2984 +msgid "Removed" +msgstr "" + +#: templates/js/translated/stock.js:3056 +msgid "No installed items" +msgstr "" + +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 +msgid "Uninstall Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:3165 +msgid "Select stock item to uninstall" +msgstr "" + +#: templates/js/translated/stock.js:3186 +msgid "Install another stock item into this item" +msgstr "" + +#: templates/js/translated/stock.js:3187 +msgid "Stock items can only be installed if they meet the following criteria" +msgstr "" + +#: templates/js/translated/stock.js:3189 +msgid "The Stock Item links to a Part which is the BOM for this Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:3190 +msgid "The Stock Item is currently available in stock" +msgstr "" + +#: templates/js/translated/stock.js:3191 +msgid "The Stock Item is not already installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:3192 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:3205 +msgid "Select part to install" +msgstr "" + +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 +msgid "Has project code" +msgstr "" + +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 +msgid "Order status" +msgstr "" + +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 +msgid "Outstanding" +msgstr "" + +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 +msgid "Assigned to me" +msgstr "" + +#: templates/js/translated/table_filters.js:158 +msgid "Trackable Part" +msgstr "" + +#: templates/js/translated/table_filters.js:162 +msgid "Assembled Part" +msgstr "" + +#: templates/js/translated/table_filters.js:166 +msgid "Has Available Stock" +msgstr "" + +#: templates/js/translated/table_filters.js:182 +msgid "Allow Variant Stock" +msgstr "" + +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 +msgid "Has Pricing" +msgstr "" + +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 +msgid "Include sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:235 +msgid "Include locations" +msgstr "" + +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 +msgid "Include subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 +msgid "Subscribed" +msgstr "" + +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 +msgid "Is Serialized" +msgstr "" + +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 +msgid "Serial number GTE" +msgstr "" + +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 +msgid "Serial number greater than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 +msgid "Serial number LTE" +msgstr "" + +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 +msgid "Serial number less than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 +msgid "Serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 +msgid "Batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 +msgid "Active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:326 +msgid "Show stock for active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:331 +msgid "Part is an assembly" +msgstr "" + +#: templates/js/translated/table_filters.js:335 +msgid "Is allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:336 +msgid "Item has been allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:341 +msgid "Stock is available for use" +msgstr "" + +#: templates/js/translated/table_filters.js:346 +msgid "Include stock in sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:351 +msgid "Show stock items which are depleted" +msgstr "" + +#: templates/js/translated/table_filters.js:356 +msgid "Show items which are in stock" +msgstr "" + +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: templates/js/translated/table_filters.js:361 +msgid "Show items which are in production" +msgstr "" + +#: templates/js/translated/table_filters.js:365 +msgid "Include Variants" +msgstr "" + +#: templates/js/translated/table_filters.js:366 +msgid "Include stock items for variant parts" +msgstr "" + +#: templates/js/translated/table_filters.js:371 +msgid "Show stock items which are installed in another item" +msgstr "" + +#: templates/js/translated/table_filters.js:376 +msgid "Show items which have been assigned to a customer" +msgstr "" + +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 +msgid "Stock status" +msgstr "" + +#: templates/js/translated/table_filters.js:400 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:409 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:414 +msgid "Has purchase price" +msgstr "" + +#: templates/js/translated/table_filters.js:415 +msgid "Show stock items which have a purchase price set" +msgstr "" + +#: templates/js/translated/table_filters.js:419 +msgid "Expiry Date before" +msgstr "" + +#: templates/js/translated/table_filters.js:423 +msgid "Expiry Date after" +msgstr "" + +#: templates/js/translated/table_filters.js:436 +msgid "Show stock items which have expired" +msgstr "" + +#: templates/js/translated/table_filters.js:442 +msgid "Show stock which is close to expiring" +msgstr "" + +#: templates/js/translated/table_filters.js:456 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:460 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:511 +msgid "Build status" +msgstr "" + +#: templates/js/translated/table_filters.js:708 +msgid "Include parts in subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:713 +msgid "Show active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:721 +msgid "Available stock" +msgstr "" + +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 +msgid "Has Units" +msgstr "" + +#: templates/js/translated/table_filters.js:730 +msgid "Part has defined units" +msgstr "" + +#: templates/js/translated/table_filters.js:734 +msgid "Has IPN" +msgstr "" + +#: templates/js/translated/table_filters.js:735 +msgid "Part has internal part number" +msgstr "" + +#: templates/js/translated/table_filters.js:739 +msgid "In stock" +msgstr "" + +#: templates/js/translated/table_filters.js:747 +msgid "Purchasable" +msgstr "" + +#: templates/js/translated/table_filters.js:759 +msgid "Has stocktake entries" +msgstr "" + +#: templates/js/translated/table_filters.js:821 +msgid "Has Choices" +msgstr "" + +#: templates/js/translated/tables.js:92 +msgid "Display calendar view" +msgstr "" + +#: templates/js/translated/tables.js:102 +msgid "Display list view" +msgstr "" + +#: templates/js/translated/tables.js:112 +msgid "Display tree view" +msgstr "" + +#: templates/js/translated/tables.js:130 +msgid "Expand all rows" +msgstr "" + +#: templates/js/translated/tables.js:136 +msgid "Collapse all rows" +msgstr "" + +#: templates/js/translated/tables.js:186 +msgid "Export Table Data" +msgstr "" + +#: templates/js/translated/tables.js:190 +msgid "Select File Format" +msgstr "" + +#: templates/js/translated/tables.js:529 +msgid "Loading data" +msgstr "" + +#: templates/js/translated/tables.js:532 +msgid "rows per page" +msgstr "" + +#: templates/js/translated/tables.js:537 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "Showing" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "to" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "of" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "rows" +msgstr "" + +#: templates/js/translated/tables.js:546 +msgid "No matching results" +msgstr "" + +#: templates/js/translated/tables.js:549 +msgid "Hide/Show pagination" +msgstr "" + +#: templates/js/translated/tables.js:555 +msgid "Toggle" +msgstr "" + +#: templates/js/translated/tables.js:558 +msgid "Columns" +msgstr "" + +#: templates/js/translated/tables.js:561 +msgid "All" +msgstr "" + +#: templates/navbar.html:45 +msgid "Buy" +msgstr "" + +#: templates/navbar.html:57 +msgid "Sell" +msgstr "" + +#: templates/navbar.html:121 +msgid "Show Notifications" +msgstr "" + +#: templates/navbar.html:124 +msgid "New Notifications" +msgstr "" + +#: templates/navbar.html:144 users/models.py:173 +msgid "Admin" +msgstr "" + +#: templates/navbar.html:148 +msgid "Logout" +msgstr "" + +#: templates/notes_buttons.html:6 templates/notes_buttons.html:7 +msgid "Save" +msgstr "" + +#: templates/notifications.html:9 +msgid "Show all notifications and history" +msgstr "" + +#: templates/qr_code.html:11 +msgid "QR data not provided" +msgstr "" + +#: templates/registration/logged_out.html:7 +msgid "You were logged out successfully." +msgstr "" + +#: templates/registration/logged_out.html:9 +msgid "Log in again" +msgstr "" + +#: templates/search.html:9 +msgid "Show full search results" +msgstr "" + +#: templates/search.html:12 +msgid "Clear search" +msgstr "" + +#: templates/search.html:15 +msgid "Close search menu" +msgstr "" + +#: templates/socialaccount/authentication_error.html:5 +msgid "Social Network Login Failure" +msgstr "" + +#: templates/socialaccount/authentication_error.html:8 +msgid "Account Login Failure" +msgstr "" + +#: templates/socialaccount/authentication_error.html:11 +msgid "An error occurred while attempting to login via your social network account." +msgstr "" + +#: templates/socialaccount/authentication_error.html:13 +msgid "Contact your system administrator for further information." +msgstr "" + +#: templates/socialaccount/login.html:13 +#, python-format +msgid "Connect %(provider)s" +msgstr "" + +#: templates/socialaccount/login.html:15 +#, python-format +msgid "You are about to connect a new third party account from %(provider)s." +msgstr "" + +#: templates/socialaccount/login.html:17 +#, python-format +msgid "Sign In Via %(provider)s" +msgstr "" + +#: templates/socialaccount/login.html:19 +#, python-format +msgid "You are about to sign in using a third party account from %(provider)s." +msgstr "" + +#: templates/socialaccount/login.html:24 +msgid "Continue" +msgstr "" + +#: templates/socialaccount/login.html:29 +msgid "Invalid SSO Provider" +msgstr "" + +#: templates/socialaccount/login.html:31 +msgid "The selected SSO provider is invalid, or has not been correctly configured" +msgstr "" + +#: templates/socialaccount/signup.html:10 +#, python-format +msgid "You are about to use your %(provider_name)s account to login to\n" +"%(site_name)s.
As a final step, please complete the following form:" +msgstr "" + +#: templates/socialaccount/snippets/provider_list.html:26 +msgid "Provider has not been configured" +msgstr "" + +#: templates/socialaccount/snippets/provider_list.html:35 +msgid "No SSO providers have been configured" +msgstr "" + +#: templates/stats.html:13 +msgid "Instance Name" +msgstr "" + +#: templates/stats.html:18 +msgid "Database" +msgstr "" + +#: templates/stats.html:26 +msgid "Server is running in debug mode" +msgstr "" + +#: templates/stats.html:33 +msgid "Docker Mode" +msgstr "" + +#: templates/stats.html:34 +msgid "Server is deployed using docker" +msgstr "" + +#: templates/stats.html:39 +msgid "Plugin Support" +msgstr "" + +#: templates/stats.html:43 +msgid "Plugin support enabled" +msgstr "" + +#: templates/stats.html:45 +msgid "Plugin support disabled" +msgstr "" + +#: templates/stats.html:52 +msgid "Server status" +msgstr "" + +#: templates/stats.html:55 +msgid "Healthy" +msgstr "" + +#: templates/stats.html:57 +msgid "Issues detected" +msgstr "" + +#: templates/stats.html:64 +msgid "Background Worker" +msgstr "" + +#: templates/stats.html:67 +msgid "Background worker not running" +msgstr "" + +#: templates/stats.html:75 +msgid "Email Settings" +msgstr "" + +#: templates/stats.html:78 +msgid "Email settings not configured" +msgstr "" + +#: templates/yesnolabel.html:4 +msgid "Yes" +msgstr "" + +#: templates/yesnolabel.html:6 +msgid "No" +msgstr "" + +#: users/admin.py:90 +msgid "Users" +msgstr "" + +#: users/admin.py:91 +msgid "Select which users are assigned to this group" +msgstr "" + +#: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "" + +#: users/admin.py:253 +msgid "Personal info" +msgstr "" + +#: users/admin.py:254 +msgid "Permissions" +msgstr "" + +#: users/admin.py:257 +msgid "Important dates" +msgstr "" + +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 +msgid "Permission set" +msgstr "" + +#: users/models.py:384 +msgid "Group" +msgstr "" + +#: users/models.py:387 +msgid "View" +msgstr "" + +#: users/models.py:387 +msgid "Permission to view items" +msgstr "" + +#: users/models.py:389 +msgid "Permission to add items" +msgstr "" + +#: users/models.py:391 +msgid "Change" +msgstr "" + +#: users/models.py:391 +msgid "Permissions to edit items" +msgstr "" + +#: users/models.py:393 +msgid "Permission to delete items" +msgstr "" + diff --git a/InvenTree/locale/cs/LC_MESSAGES/django.po b/InvenTree/locale/cs/LC_MESSAGES/django.po index 0a36730df4..6146643928 100644 --- a/InvenTree/locale/cs/LC_MESSAGES/django.po +++ b/InvenTree/locale/cs/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:54\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API endpoint nebyl nalezen" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "Uživatel nemá právo zobrazit tento model" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "Není k dispozici žádná hodnota" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" -msgstr "Zadaná hodnota není platné číslo" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "Zadaná hodnota má neplatnou jednotku" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "Zadaná hodnota nemohla být převedena na danou jednotku" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Podrobnosti o chybě lze nalézt v panelu administrace" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Zadejte datum" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Poznámky" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "Hodnota '{name}' neodpovídá formátu vzoru" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Poskytnutá hodnota neodpovídá požadovanému vzoru: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Zadejte heslo" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Zadejte nové heslo" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Potvrďte heslo" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Potvrďte nové heslo" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Původní heslo" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "Email (znovu)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Potvrzení emailové adresy" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Pokaždé musíte zadat stejný email." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Zadaná primární e-mailová adresa je neplatná." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Zadaná e-mailová doména není povolena." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Vyplněno neplatné množství" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Nevyplněné výrobní číslo" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Duplicitní výrobní číslo" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Neplatný rozsah skupiny: {g}" +msgid "Invalid group range: {group}" +msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "Rozsah skupiny {g} překračuje povolené množství ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Neplatná sekvence skupiny: {g}" +msgid "Invalid group sequence: {group}" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Nenalezena žádná výrobní čísla" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Počet jedinečných sériových čísel ({s}) musí odpovídat množství ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Odstranit HTML tagy z této hodnoty" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Chyba spojení" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Server odpověděl s neplatným stavovým kódem" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Došlo k výjimce" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Server odpověděl s neplatnou hodnotou Content-Length" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Velikost obrázku je příliš velká" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Stahování obrázku překročilo maximální velikost" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Vzdálený server vrátil prázdnou odpověď" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "Zadaná URL adresa není platný soubor obrázku" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "E-mail" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "Metadata musí být objekt python dict" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "Metadata pluginu" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "Pole metadat JSON pro použití externími pluginy" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Nesprávně naformátovaný vzor" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Neznámý formát klíče" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Chybí požadovaný klíč" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Referenční pole nemůže být prázdné" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "Referenční číslo musí odpovídat požadovanému vzoru" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Referenční číslo je příliš velké" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Chybějící soubor" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Chybějící externí odkaz" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Příloha" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Vyberte soubor k přiložení" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Odkaz" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Odkaz na externí URL" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Komentář" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Komentář k souboru" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Uživatel" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "datum přidání" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Název souboru nesmí být prázdný" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Neplatný adresář přílohy" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Název souboru obsahuje nepovolený znak '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Chybějící přípona souboru" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Příloha s tímto názvem již existuje" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Chyba při přejmenování souboru" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 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:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Neplatný výběr" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Název" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Popis" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Popis (volitelně)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "nadřazený" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Cesta" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "Poznámky (volitelné)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Data čárového kódu" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Data čárového kódu třetí strany" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Hash čárového kódu" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Jedinečný hash dat čárového kódu" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Nalezen existující čárový kód" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Chyba serveru" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "Server zaznamenal chybu." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Musí být platné číslo" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Měna" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "Vyberte měnu z dostupných možností" @@ -484,143 +509,155 @@ msgstr "Chybí povinný sloupec: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Duplicitní sloupec: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "URL souboru vzdáleného obrázku" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Stahování obrázků ze vzdálené URL není povoleno" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Čeština" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Dánština" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Němčina" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Řečtina" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Angličtina" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Španělština" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Španělština (Mexiko)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Farsi / Perština" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "Finština" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Francouzština" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Hebrejština" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Maďarština" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Italština" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japonština" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Korejština" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Nizozemština" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norština" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Polština" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portugalština" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portugalština (Brazilská)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Ruština" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Slovinština" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Švédština" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Thajština" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Turečtina" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnamština" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Čínština" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Kontrola procesů na pozadí se nezdařila" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "Email backend není nakonfigurován" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "Kontroly zdraví systému InvenTree selhaly" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Nevyřízeno" @@ -630,8 +667,8 @@ msgstr "Umístěno" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Hotovo" @@ -654,10 +691,10 @@ msgstr "Vráceno" msgid "In Progress" msgstr "Zpracovává se" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Odesláno" @@ -689,7 +726,7 @@ msgstr "V karanténě" msgid "Legacy stock tracking entry" msgstr "Původní položka sledování zásob" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Položka zásob vytvořena" @@ -745,7 +782,7 @@ msgstr "Rozdělit od nadřazené položky" msgid "Split child item" msgstr "Rozdělit podřazený předmět" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Sloučené položky zásob" @@ -765,7 +802,7 @@ msgstr "Výstup objednávky sestavení dokončen" msgid "Build order output rejected" msgstr "Výstup objednávky sestavení byl odmítnut" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Spotřebováno podle objednávky" @@ -781,7 +818,7 @@ msgstr "Přijato proti objednávce" msgid "Returned against Return Order" msgstr "Vráceno proti vratce" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Odesláno zákazníkovi" @@ -813,119 +850,165 @@ msgstr "Vrácení peněz" msgid "Reject" msgstr "Odmítnout" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Neplatná fyzikální jednotka" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Neplatný kód měny" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Přidaná hodnota nesmí být záporná" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Nesmí přesáhnout 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Neplatná hodnota překročení" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Upravit informace o uživateli" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Nastavit heslo" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Hesla se musí shodovat" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Zadáno špatné heslo" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Informace o systému" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "O InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "Sestavení musí být zrušeno před odstraněním" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Vytvořit objednávku" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Vytvořené objednávky" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Neplatná volba nadřazeného sestavení" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Referenční číslo objednávky" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Reference" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "Stručný popis sestavení (nepovinné)" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Nadřazená sestava" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Díl" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Vyber téma, které chceš stavět" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Referenční číslo prodejní objednávky" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Prodejní příkaz, kterému je tato verze přidělena" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Umístění lokace" -#: build/models.py:207 +#: build/models.py:218 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:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Cílová lokace" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Vyberte lokaci, kde budou dokončené položky uloženy" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Množství sestav" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Počet skladových položek k sestavení" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Dokončené položky" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Počet skladových položek, které byly dokončeny" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Stav sestavení" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Stavový kód sestavení" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Datum vytvoření" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Cílové datum dokončení" -#: build/models.py:258 +#: build/models.py:269 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:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Datum dokončení" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "dokončil" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Vystavil" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Uživatel, který vydal tento příkaz k sestavení" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Odpovědný" -#: build/models.py:285 +#: build/models.py:296 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:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Externí odkaz" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "Priorita sestavení" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "Priorita tohoto příkazu k sestavení" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Příkaz k sestavení {build} byl dokončen" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "Příkaz k sestavení byl dokončen" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Nebyl specifikováno žádný výstup sestavení" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Výstup sestavení je již dokončen" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "Výstup sestavení neodpovídá příkazu sestavení" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "Množství musí být vyšší než nula" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 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:1272 -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:1281 -#, 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:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "Skladová položka je nadměrně zabrána" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Zabrané množství musí být větší než nula" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "Množství musí být 1 pro zřetězený sklad" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Vybraná skladová položka nebyla v BOM nalezena" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Sestavení" - -#: build/models.py:1439 -msgid "Build to allocate parts" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +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:1370 +#, 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:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "Skladová položka je nadměrně zabrána" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Zabrané množství musí být větší než nula" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Množství musí být 1 pro zřetězený sklad" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1766,147 +1864,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1914,14 +1971,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Jméno společnosti" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Výchozí měna" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "Stáhnout z URL" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Stáhnout z URL" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" -msgstr "" - -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" -msgstr "Možné zakoupit" +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" -msgstr "Díly jsou zakoupitelné ve výchozím nastavení" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "Prodejné" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "Díly jsou prodejné ve výchozím nastavení" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" -msgstr "Sledovatelné" +#: common/models.py:1197 +msgid "Automatic Backup" +msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" -msgstr "Díly jsou sledovatelné ve výchozím nastavení" +msgid "Enable automatic backup of database and media files" +msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" -msgstr "Nehmotné (virtuální)" +#: common/models.py:1204 +msgid "Auto Backup Interval" +msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" -msgstr "Díly jsou nehmotné (virtuální) ve výchozím nastavení" - -#: common/models.py:1211 -msgid "Show Import in Views" -msgstr "Zobrazit Import v zobrazeních" - -#: common/models.py:1212 -msgid "Display the import wizard in some part views" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1218 -msgid "Show related parts" -msgstr "Zobrazit související díly" +#: common/models.py:1215 +msgid "Task Deletion Interval" +msgstr "" -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "Zobrazit související díly pro díl" - -#: common/models.py:1225 -msgid "Initial Stock Data" -msgstr "Počáteční údaje zásob" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" +msgstr "" #: common/models.py:1226 -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:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" -msgstr "Počáteční údaje dodavatele" - -#: common/models.py:1233 -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:1239 -msgid "Part Name Display Format" -msgstr "Formát zobrazení jména dílu" - -#: common/models.py:1240 -msgid "Format to display the part name" -msgstr "Formát pro zobrazení názvu dílu" - -#: common/models.py:1247 -msgid "Part Category Default Icon" -msgstr "Výchozí ikona kategorie dílu" - -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" -msgstr "Výchozí ikona kategorie dílu (prázdné znamená bez ikony)" - -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" -msgstr "Minimální počet desetinných míst u cen" - -#: common/models.py:1254 -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:1264 -msgid "Maximum Pricing Decimal Places" -msgstr "Maximální počet desetinných míst u cen" - -#: common/models.py:1265 -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:1275 -msgid "Use Supplier Pricing" -msgstr "Použít ceny dodavatele" - -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" -msgstr "Přepsání historie nákupu" - -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" + +#: common/models.py:1255 +msgid "Barcode Input Delay" +msgstr "" + +#: common/models.py:1256 +msgid "Barcode input processing delay time" +msgstr "" + +#: common/models.py:1266 +msgid "Barcode Webcam Support" +msgstr "" + +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" +msgstr "" + +#: common/models.py:1273 +msgid "Part Revisions" +msgstr "" + +#: common/models.py:1274 +msgid "Enable revision field for Part" +msgstr "" + +#: common/models.py:1280 +msgid "IPN Regex" +msgstr "" + +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" +msgstr "" + +#: common/models.py:1285 +msgid "Allow Duplicate IPN" +msgstr "" + +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" +msgstr "" + +#: common/models.py:1292 +msgid "Allow Editing IPN" +msgstr "" + +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" +msgstr "" + +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" -msgstr "" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" +msgstr "Možné zakoupit" -#: common/models.py:1353 -msgid "Label Image DPI" -msgstr "" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" +msgstr "Díly jsou zakoupitelné ve výchozím nastavení" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" -msgstr "" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "Prodejné" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "Díly jsou prodejné ve výchozím nastavení" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" +msgstr "Sledovatelné" #: common/models.py:1363 -msgid "Enable Reports" -msgstr "" +msgid "Parts are trackable by default" +msgstr "Díly jsou sledovatelné ve výchozím nastavení" -#: common/models.py:1364 -msgid "Enable generation of reports" -msgstr "" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" +msgstr "Nehmotné (virtuální)" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" -msgstr "" +#: common/models.py:1370 +msgid "Parts are virtual by default" +msgstr "Díly jsou nehmotné (virtuální) ve výchozím nastavení" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" -msgstr "" +#: common/models.py:1376 +msgid "Show Import in Views" +msgstr "Zobrazit Import v zobrazeních" #: common/models.py:1377 -msgid "Page Size" -msgstr "Velikost stránky" - -#: common/models.py:1378 -msgid "Default page size for PDF reports" -msgstr "Výchozí velikost stránky pro PDF reporty" - -#: common/models.py:1388 -msgid "Enable Test Reports" -msgstr "Povolit testovací reporty" - -#: common/models.py:1389 -msgid "Enable generation of test reports" -msgstr "Povolit generování zkušebních reportů" - -#: common/models.py:1395 -msgid "Attach Test Reports" -msgstr "Připojit testovací reporty" - -#: common/models.py:1396 -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:1402 -msgid "Globally Unique Serials" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1403 -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:1383 +msgid "Show related parts" +msgstr "Zobrazit související díly" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" -msgstr "Automaticky vyplnit sériová čísla" +#: common/models.py:1384 +msgid "Display related parts for a part" +msgstr "Zobrazit související díly pro díl" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" -msgstr "Automaticky vyplnit sériová čísla ve formulářích" +#: common/models.py:1390 +msgid "Initial Stock Data" +msgstr "Počáteční údaje zásob" -#: common/models.py:1416 -msgid "Delete Depleted Stock" -msgstr "Odstranit vyčerpané zásoby" +#: common/models.py:1391 +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:1417 -msgid "Determines default behaviour when a stock item is depleted" -msgstr "Určuje výchozí chování, když je vyčerpána skladová položka" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" +msgstr "Počáteční údaje dodavatele" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1398 +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:1404 +msgid "Part Name Display Format" +msgstr "Formát zobrazení jména dílu" + +#: common/models.py:1405 +msgid "Format to display the part name" +msgstr "Formát pro zobrazení názvu dílu" + +#: common/models.py:1412 +msgid "Part Category Default Icon" +msgstr "Výchozí ikona kategorie dílu" + +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" +msgstr "Výchozí ikona kategorie dílu (prázdné znamená bez ikony)" + +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" +msgstr "Minimální počet desetinných míst u cen" -#: common/models.py:1430 -msgid "Enable stock expiry functionality" -msgstr "" +#: common/models.py:1426 +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:1436 -msgid "Sell Expired Stock" -msgstr "" +msgid "Maximum Pricing Decimal Places" +msgstr "Maximální počet desetinných míst u cen" #: common/models.py:1437 -msgid "Allow sale of expired stock" +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:1447 +msgid "Use Supplier Pricing" +msgstr "Použít ceny dodavatele" + +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1454 +msgid "Purchase History Override" +msgstr "Přepsání historie nákupu" + +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" -msgstr "" - -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" -msgstr "" - -#: common/models.py:1465 -msgid "Stock Location Default Icon" -msgstr "" - -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" -msgstr "" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" +msgstr "Velikost stránky" #: common/models.py:1550 -msgid "Enable SSO on the login pages" -msgstr "" +msgid "Default page size for PDF reports" +msgstr "Výchozí velikost stránky pro PDF reporty" #: common/models.py:1556 -msgid "Enable SSO registration" -msgstr "" +msgid "Enable Test Reports" +msgstr "Povolit testovací reporty" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" -msgstr "" +msgid "Enable generation of test reports" +msgstr "Povolit generování zkušebních reportů" #: common/models.py:1563 -msgid "Email required" -msgstr "" +msgid "Attach Test Reports" +msgstr "Připojit testovací reporty" #: common/models.py:1564 -msgid "Require user to supply mail on signup" -msgstr "" +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:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" -msgstr "" +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:1577 -msgid "Mail twice" -msgstr "" +msgid "Autofill Serial Numbers" +msgstr "Automaticky vyplnit sériová čísla" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" -msgstr "" +msgid "Autofill serial numbers in forms" +msgstr "Automaticky vyplnit sériová čísla ve formulářích" #: common/models.py:1584 -msgid "Password twice" -msgstr "" +msgid "Delete Depleted Stock" +msgstr "Odstranit vyčerpané zásoby" #: common/models.py:1585 -msgid "On signup ask users twice for their password" -msgstr "" +msgid "Determines default behaviour when a stock item is depleted" +msgstr "Určuje výchozí chování, když je vyčerpána skladová položka" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" -msgstr "Formát data" - -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" +msgstr "" + +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "Formát data" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Cena" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "Id" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "Webová stránka" @@ -3507,331 +3609,395 @@ msgstr "Webová stránka" msgid "Company website URL" msgstr "Webové stránky společnosti" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Adresa" - -#: company/models.py:119 -msgid "Company address" -msgstr "Adresa společnosti" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Telefonní číslo" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "Kontaktní telefonní číslo" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "E-mail" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "Kontaktní e-mailová adresa" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Kontakt" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "Kontaktní místo" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "je zákazník" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Společnost" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Základní díl" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "Zvolte díl" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Výrobce" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Vyberte výrobce" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "Číslo dílu výrobce" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "Popis dílu výrobce" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Výrobce dílu" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "Název parametru" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Hodnota" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "Hodnota parametru" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "Jednotky" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "Upravit údaje o společnosti" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "Upravit společnost" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "Odstranit společnost" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "Odstranit společnost" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "Odstranit společnost" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Nahrát nový obrázek" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Stáhnout obrázek z URL" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "Smazat obrázek" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Zákazník" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Adresa" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "Telefon" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "Odstranit obrázek" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "Odstranit přiřazený obrázek této společnosti" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "Odstranit" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "Nahrát obrázek" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "Stáhnout obrázek" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "Dodavatel dílů" @@ -3916,156 +4089,144 @@ msgstr "Vytvořit nového dodavatele dílu" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "Nová díl dodavatele" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "Objednávka dílů" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "Odstranit díly" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "Odstraněné díly" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "Výrobce dílů" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "Vytvořit nového výrobce dílu" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "Nový výrobce dílu" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "Dodavatelský sklad" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "Zakoupené objednávky" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "Poznámky ke společnosti" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "Odstranit" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4244,102 +4392,95 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "Ceník" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "Činnost nebyla specifikována" msgid "No matching action found" msgstr "Nebyla nalezena odpovídající činnost" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "Pro data čárového kódu nebyla nalezena shoda" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "Pro data čárového kódu byla nalezena shoda" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Sestavení" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "Oznámení" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Odstranit" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "Domovská stránka" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9259,7 +9738,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Potvrdit" @@ -9435,30 +9914,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "Vybrané díly" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "Objednávka dílů" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11043,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12616,50 +13259,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "Ano" @@ -12668,59 +13267,99 @@ msgstr "Ano" msgid "No" msgstr "Ne" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "Uživatelé" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "Osobní údaje" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "Oprávnění" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "Nastavení oprávnění" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "Skupina" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "Zobrazit" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "Oprávnění k zobrazení položek" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "Oprávnění přidat položky" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "Změnit" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "Oprávnění k úpravě položek" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "Oprávnění k odstranění položek" diff --git a/InvenTree/locale/da/LC_MESSAGES/django.po b/InvenTree/locale/da/LC_MESSAGES/django.po index 809327568a..941965c49e 100644 --- a/InvenTree/locale/da/LC_MESSAGES/django.po +++ b/InvenTree/locale/da/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:54\n" "Last-Translator: \n" "Language-Team: Danish\n" "Language: da_DK\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API endpoint ikke fundet" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Fejloplysninger kan findes i admin panelet" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Angiv dato" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Bemærkninger" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "Værdi '{name}' vises ikke i mønsterformat" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Den angivne værdi matcher ikke det påkrævede mønster: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Indtast adgangskode" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Indtast ny adgangskode" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Bekræft adgangskode" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Bekræft ny adgangskode" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Gammel adgangskode" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "E-mail (igen)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Bekræftelse af e-mailadresse" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Du skal indtaste den samme e-mail hver gang." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Den indtastede email adresse er ikke gyldig." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Det angivne e-mail domæne er ikke godkendt." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Ugyldigt antal angivet" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Serienummer streng er tom" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Duplikeret serienummer" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Ugyldigt gruppe-interval: {g}" +msgid "Invalid group range: {group}" +msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "Gruppeinterval {g} overstiger det tilladte antal ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Ugyldig gruppesekvens: {g}" +msgid "Invalid group sequence: {group}" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Ingen serienumre fundet" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Antal unikke serienumre ({s}) skal matche antal ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Fjern HTML-tags fra denne værdi" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Forbindelsesfejl" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Serveren svarede med ugyldig statuskode" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Der opstod en fejl" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Serveren svarede med ugyldig Content-Length værdi" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Billedstørrelsen er for stor" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Billeddownload overskred maksimumstørrelsen" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Fjernserver returnerede tomt svar" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "Angivet URL er ikke en gyldig billedfil" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Forkert formateret mønster" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Ukendt formatnøgle angivet" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Mangler nødvendig formatnøgle" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Referencefelt må ikke være tomt" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "Reference skal matche det påkrævede mønster" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Referencenummer er for stort" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Manglende fil" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Manglende eksternt link" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Vedhæftning" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Vælg fil, der skal vedhæftes" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Link" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Link til ekstern URL" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Kommentar" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Fil kommentar" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Bruger" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "dato for upload" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Filnavn må ikke være tomt" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Ugyldig vedhæftningsmappe" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Filnavn indeholder ugyldigt tegn '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Filnavn mangler filtype" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Vedhæftning med dette filnavn findes allerede" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Fejl ved omdøbning af fil" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Ugyldigt valg" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Navn" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Beskrivelse" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Beskrivelse (valgfri)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "overordnet" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Sti" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Stregkode Data" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Tredjeparts stregkode data" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Stregkode Hash" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Unik hash af stregkode data" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Eksisterende stregkode fundet" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Serverfejl" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "En fejl blev logget af serveren." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Skal være et gyldigt tal" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -484,143 +509,155 @@ msgstr "Mangler påkrævet kolonne: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Duplikeret kolonne: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "URL til ekstern billedfil" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Download af billeder fra ekstern URL er ikke aktiveret" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Tjekkisk" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Dansk" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Tysk" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Græsk" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Engelsk" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Spansk" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Spansk (Mexikansk)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Farsi / Persisk" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Fransk" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Hebraisk" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Ungarsk" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Italiensk" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japansk" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Koreansk" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Hollandsk" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norsk" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Polsk" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portugisisk" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portugisisk (Brasilien)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Russisk" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Slovensk" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Svensk" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Thailandsk" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Tyrkisk" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnamesisk" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Kinesisk" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Kontrol af baggrundstjeneste mislykkedes" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "E-mail backend ej konfigureret" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "Helbredstjek af InvenTree system mislykkedes" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Afventende" @@ -630,8 +667,8 @@ msgstr "Placeret" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Fuldført" @@ -654,10 +691,10 @@ msgstr "Returneret" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Afsendt" @@ -689,7 +726,7 @@ msgstr "I karantæne" msgid "Legacy stock tracking entry" msgstr "Forældet lager sporings post" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Lager-element oprettet" @@ -745,7 +782,7 @@ msgstr "Opdel fra overordnet element" msgid "Split child item" msgstr "Opdel underordnet element" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Flettede lagervarer" @@ -765,7 +802,7 @@ msgstr "Byggeorder output fuldført" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Brugt efter byggeordre" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Sendt til kunde" @@ -813,119 +850,165 @@ msgstr "" msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Ikke en gyldig valutakode" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Overskud må ikke være negativ" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Overskuddet må ikke overstige 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Ugyldig værdi for overskud" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Rediger brugerinformation" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Vælg adgangskode" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "De indtastede adgangskoder skal være ens" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Forkert adgangskode indtastet" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Systemoplysninger" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Om InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "Produktion skal anulleres, før den kan slettes" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Produktionsordre" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Produktionsordrer" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Ugyldigt valg for overordnet produktion" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Produktionsordre reference" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Reference" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Overordnet produktion" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Produktionsordre som er tildelt denne produktion" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Produktionsordre som er tildelt denne produktion" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Del" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Vælg dele til produktion" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Salgsordrereference" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Salgsordre, som er tildelt denne produktion" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Kilde Lokation" -#: build/models.py:207 +#: build/models.py:218 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:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Destinations Placering" -#: build/models.py:216 +#: build/models.py:227 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:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Produktions antal" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Antal lagervarer som skal produceres" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Afsluttede elementer" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Antal lagervarer som er færdiggjort" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Produktions Status" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Produktions statuskode" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Batch Kode" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Batch kode til dette produktions output" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Oprettelsesdato" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Projekteret afslutningsdato" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Dato for afslutning" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "udført af" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Udstedt af" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Bruger som udstedte denne byggeordre" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Ansvarlig" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "Bruger eller gruppe ansvarlig for denne byggeordre" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Ekstern link" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "Bygge Prioritet" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "Prioritet af denne byggeordre" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Bygningsordre {build} er fuldført" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "En byggeordre er fuldført" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1766,147 +1864,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1914,14 +1971,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" +#: common/models.py:1197 +msgid "Automatic Backup" msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" +msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" +#: common/models.py:1204 +msgid "Auto Backup Interval" msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:1370 +msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1378 -msgid "Default page size for PDF reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1388 -msgid "Enable Test Reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" msgstr "" #: common/models.py:1550 -msgid "Enable SSO on the login pages" +msgid "Default page size for PDF reports" msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" +msgid "Attach Test Reports" msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" +msgid "Autofill Serial Numbers" msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3507,331 +3609,395 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" - -#: company/models.py:119 -msgid "Company address" -msgstr "" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3916,156 +4089,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4244,102 +4392,95 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "IPN skal matche regex mønster {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "" msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9259,7 +9738,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "" @@ -9435,30 +9914,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11043,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12616,50 +13259,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12668,59 +13267,99 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index 00b8c159e9..9c1a199469 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-11 21:26\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API-Endpunkt nicht gefunden" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "Benutzer hat keine Berechtigung, dieses Modell anzuzeigen" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "Kein Wert angegeben" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" -msgstr "Angegebener Wert ist keine gültige Zahl" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "Konnte {original} nicht in {unit} umwandeln" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "Angegebener Wert hat eine ungültige Einheit" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "Ungültige Menge" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "Angegebener Wert konnte nicht in die angegebene Einheit umgewandelt werden" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "Ungültige Menge ({exc})" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Fehlerdetails finden Sie im Admin-Panel" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Datum eingeben" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Notizen" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "Wert '{name}' hält das Musterformat nicht ein" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Angegebener Wert entspricht nicht dem benötigten Muster: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Passwort eingeben" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Neues Passwort eingeben" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Passwort wiederholen" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Neues Passwort bestätigen" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Altes Passwort" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "E-Mail (nochmal)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Bestätigung der E-Mail Adresse" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "E-Mail Adressen müssen übereinstimmen." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Die angegebene primäre E-Mail-Adresse ist ungültig." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Die angegebene E-Mail-Domain ist nicht freigegeben." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "Registrierung ist deaktiviert." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Keine gültige Menge" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Keine Seriennummer angegeben" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Duplizierter Seriennummer" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Ungültiger Gruppenbereich: {g}" +msgid "Invalid group range: {group}" +msgstr "Ungültiger Gruppenbereich: {group}" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "Gruppenbereich {g} überschreitet die zulässige Menge ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "Gruppenbereich {group} überschreitet die zulässige Menge ({expected_quantity})" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Ungültige Gruppensequenz: {g}" +msgid "Invalid group sequence: {group}" +msgstr "Ungültige Gruppensequenz: {group}" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Keine Seriennummern gefunden" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Anzahl der eindeutigen Seriennummern ({s}) muss mit der Anzahl ({q}) übereinstimmen" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "Anzahl der eindeutigen Seriennummern ({len(serials)}) muss mit der Menge übereinstimmen ({expected_quantity})" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Entferne HTML-Tags von diesem Wert" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Verbindungsfehler" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Server antwortete mit ungültigem Statuscode" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Ausnahme aufgetreten" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Server antwortete mit ungültigem Wert für die Inhaltslänge" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Bild ist zu groß" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Bilddownload überschreitet maximale Größe" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Remote-Server gab leere Antwort zurück" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "Angegebene URL ist kein gültiges Bild" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "[{site.name}] In App einloggen" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "Email" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "Metadaten müssen ein Python-Dict Objekt sein" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "Plugin Metadaten" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "JSON-Metadatenfeld, für die Verwendung durch externe Plugins" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Falsch formatiertes Muster" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Unbekannter Formatschlüssel angegeben" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Erforderlicher Formatschlüssel fehlt" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Referenz-Feld darf nicht leer sein" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "Referenz muss erforderlichem Muster entsprechen" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Referenznummer ist zu groß" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Fehlende Datei" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Fehlender externer Link" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Anhang" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Datei zum Anhängen auswählen" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Link" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Link zu einer externen URL" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Kommentar" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Benutzer" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "Hochladedatum" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Dateiname darf nicht leer sein" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Ungültiges Verzeichnis für Anhang" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Dateiname enthält ungültiges Zeichen '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Dateiendung fehlt" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Anhang mit diesem Dateinamen bereits vorhanden" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Fehler beim Umbenennen" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "Doppelte Namen können nicht unter dem selben Elternteil existieren" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Ungültige Auswahl" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Name" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Beschreibung" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Beschreibung (optional)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "Eltern" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Pfad" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "Markdown Notizen (optional)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Barcode-Daten" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Drittanbieter-Barcode-Daten" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Barcode-Hash" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Eindeutiger Hash der Barcode-Daten" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Bestehender Barcode gefunden" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Serverfehler" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "Ein Fehler wurde vom Server protokolliert." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Muss eine gültige Nummer sein" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Währung" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "Währung aus verfügbaren Optionen auswählen" @@ -484,143 +509,155 @@ msgstr "Erforderliche Spalte '{name}' fehlt" msgid "Duplicate column: '{col}'" msgstr "Doppelte Spalte: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "URL der Remote-Bilddatei" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Das Herunterladen von Bildern von Remote-URLs ist nicht aktiviert" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Tschechisch" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Dänisch" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Deutsch" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Griechisch" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Englisch" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Spanisch" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Spanisch (Mexikanisch)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Persisch" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "Beenden" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Französisch" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Hebräisch" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Ungarisch" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Italienisch" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japanisch" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Koreanisch" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Niederländisch" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norwegisch" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Polnisch" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portugiesisch" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portugiesisch (Brasilien)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Russisch" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Slowenisch" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Schwedisch" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Thailändisch" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Türkisch" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnamesisch" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Chinesisch" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "Chinesisch (Vereinfacht)" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "Chinesisch (Traditionell)" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Hintergrund-Prozess-Kontrolle fehlgeschlagen" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "E-Mail-Backend nicht konfiguriert" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "InvenTree Status-Überprüfung fehlgeschlagen" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Ausstehend" @@ -630,8 +667,8 @@ msgstr "Platziert" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Fertig" @@ -654,10 +691,10 @@ msgstr "Zurückgegeben" msgid "In Progress" msgstr "In Bearbeitung" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Versendet" @@ -689,7 +726,7 @@ msgstr "In Quarantäne" msgid "Legacy stock tracking entry" msgstr "Alter Bestand-Verfolgungs-Eintrag" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Lagerartikel erstellt" @@ -745,7 +782,7 @@ msgstr "Vom übergeordneten Element geteilt" msgid "Split child item" msgstr "Unterobjekt geteilt" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Lagerartikel zusammengeführt" @@ -765,7 +802,7 @@ msgstr "Endprodukt fertiggestellt" msgid "Build order output rejected" msgstr "Endprodukt abgelehnt" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Durch Bauauftrag verbraucht" @@ -781,7 +818,7 @@ msgstr "Gegen Bestellung empfangen" msgid "Returned against Return Order" msgstr "Zurückgeschickt gegen Rücksendeauftrag" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Zum Kunden geschickt" @@ -813,119 +850,165 @@ msgstr "Rückerstattung" msgid "Reject" msgstr "Ablehnen" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Ungültige physikalische Einheit" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Kein gültiger Währungscode" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Überschuss-Wert darf nicht negativ sein" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Überschuss darf 100% nicht überschreiten" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Ungültiger Wert für Ausschuss" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Benutzerinformationen bearbeiten" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" -msgstr "Passwort eingeben" +msgstr "Passwort setzen" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Passwörter stimmen nicht überein" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Falsches Passwort angegeben" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Systeminformationen" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Über InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "Bauauftrag muss abgebrochen werden, bevor er gelöscht werden kann" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "Verbrauchsmaterial" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "Optional" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "Nachverfolgt" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "Zugeordnet" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Verfügbar" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Bauauftrag" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Bauaufträge" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "Teil in Bauauftrag kann nicht geändert werden" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Ungültige Wahl für übergeordneten Bauauftrag" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Bauauftragsreferenz" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Referenz" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "Kurze Beschreibung des Baus (optional)" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Eltern-Bauauftrag" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Teil" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Teil für den Bauauftrag wählen" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Auftrag Referenz" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Quell-Lagerort" -#: build/models.py:207 +#: build/models.py:218 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:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Ziel-Lagerort" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Lagerort an dem fertige Objekte gelagert werden auswählen" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Bau-Anzahl" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Anzahl der zu bauenden Lagerartikel" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Fertiggestellte Teile" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Anzahl der fertigen Lagerartikel" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Bauauftrags-Status" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Bau-Statuscode" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Losnummer" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Losnummer für dieses Endprodukt" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Erstelldatum" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "geplantes Fertigstellungsdatum" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Zieldatum für Bauauftrag-Fertigstellung." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Fertigstellungsdatum" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "Fertiggestellt von" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Aufgegeben von" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Nutzer der diesen Bauauftrag erstellt hat" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Verantwortlicher Benutzer" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "Benutzer oder Gruppe verantwortlich für diesen Bauauftrag" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Externer Link" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "Bauauftrags-Priorität" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "Priorität dieses Bauauftrags" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "Projektcode" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "Projektcode für diesen Auftrag" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Bauauftrag {build} wurde fertiggestellt" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "Ein Bauauftrag wurde fertiggestellt" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "kein Endprodukt angegeben" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Endprodukt bereits hergstellt" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "Menge kann nicht größer als die Ausgangsmenge sein" -#: build/models.py:1272 -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:1266 +msgid "Build object" +msgstr "Objekt bauen" -#: build/models.py:1281 -#, 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:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "BestandObjekt ist zu oft zugewiesen" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Reserviermenge muss größer null sein" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Ausgewähltes Bestands-Objekt nicht in Stückliste für Teil '{p}' gefunden" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Bauauftrag" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "Bauauftrag starten um Teile zuzuweisen" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Lagerartikel" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Quell-Lagerartikel" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Anzahl" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "Erforderliche Menge für Auftrag" + +#: build/models.py:1361 +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:1370 +#, 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:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "BestandObjekt ist zu oft zugewiesen" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Reserviermenge muss größer null sein" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Lagerartikel" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Quell-Lagerartikel" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Installiere in" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Ziel-Lagerartikel" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "Endprodukt" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "Endprodukt stimmt nicht mit übergeordnetem Bauauftrag überein" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "Endprodukt entspricht nicht dem Teil des Bauauftrags" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "Dieses Endprodukt wurde bereits fertiggestellt" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "Dieses Endprodukt ist nicht vollständig zugewiesen" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "Menge der Endprodukte angeben" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "Ganzzahl für verfolgbare Teile erforderlich" -#: build/serializers.py:261 +#: build/serializers.py:267 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:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Seriennummer" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "Seriennummer für dieses Endprodukt eingeben" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "Seriennummern automatisch zuweisen" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "Benötigte Lagerartikel automatisch mit passenden Seriennummern zuweisen" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "Die folgenden Seriennummern existieren bereits oder sind ungültig" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "Eine Liste von Endprodukten muss angegeben werden" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Lagerort" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "Lagerort für ausgemusterte Ausgänge" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "Zuteilungen verwerfen" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "Bestandszuteilung für ausgemusterte Endprodukte verwerfen" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "Grund für das Verwerfen des Bauauftrages/der Bauaufträge" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "Lagerort für fertige Endprodukte" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Status" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "Unvollständige Zuweisung akzeptieren" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "Endprodukte fertigstellen, auch wenn Bestand nicht fertig zugewiesen wurde" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "Zugewiesenen Bestand entfernen" -#: build/serializers.py:572 +#: build/serializers.py:577 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:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "Unfertige Endprodukte entfernen" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "Lösche alle noch nicht abgeschlossenen Endprodukte" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "Nicht erlaubt" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "Als von diesem Bauauftrag verbraucht setzen" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "Bestandszuordnung vor dem Abschluss dieses Bauauftrags freigeben" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "Überbelegter Lagerbestand" -#: build/serializers.py:633 +#: build/serializers.py:637 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:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "Der Bestand einiger Lagerartikel ist überbelegt" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "Nicht zugewiesene akzeptieren" -#: build/serializers.py:649 +#: build/serializers.py:653 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:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "Unvollständig Zuweisung akzeptieren" -#: build/serializers.py:665 +#: build/serializers.py:669 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:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "Bauauftrag hat unvollständige Aufbauten" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "Stücklisten-Position" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "Endprodukt" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 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:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "Teil muss auf Lager sein" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Verfügbare Menge ({q}) überschritten" -#: build/serializers.py:852 +#: build/serializers.py:855 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:859 +#: build/serializers.py:862 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:864 -msgid "This stock item has already been allocated to this build output" -msgstr "Dieser Lagerbestand wurde bereits diesem Endprodukt zugewiesen" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "Zuweisungen müssen angegeben werden" @@ -1515,15 +1613,15 @@ msgstr "Optionale Positionen" msgid "Allocate optional BOM items to build order" msgstr "Optionale Stücklisten-Positionen dem Bauauftrag hinzufügen" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "Bestand für Bauauftrag erforderlich" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "Überfälliger Bauauftrag" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "Bauauftrag {bo} ist jetzt überfällig" @@ -1532,89 +1630,90 @@ msgstr "Bauauftrag {bo} ist jetzt überfällig" msgid "Part thumbnail" msgstr "Miniaturansicht" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "Barcode Aktionen" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "QR-Code anzeigen" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "Barcode abhängen" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "Barcode anhängen" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "Aktionen drucken" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "Bauauftragsbericht drucken" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "Bau-Auftrag Aktionen" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Bauauftrag bearbeiten" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Bauauftrag abbrechen" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "Bauauftrag duplizieren" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "Bauauftrag löschen" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "Bauauftrag fertigstellen" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "Baubeschreibung" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "Zieldatum" @@ -1661,47 +1760,46 @@ msgstr "Bauauftrag war fällig am %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "Überfällig" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Fertig" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "Fertiggestellte Endprodukte" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 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 +#: 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:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "Priorität" @@ -1729,8 +1827,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:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "Ziel-Lager" @@ -1742,23 +1840,23 @@ msgstr "Ziel-Lagerort nicht angegeben" msgid "Allocated Parts" msgstr "Zugewiesene Teile" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "Losnummer" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "Erstellt" @@ -1766,147 +1864,106 @@ msgstr "Erstellt" msgid "No target date set" msgstr "Kein Ziel-Datum gesetzt" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Fertig" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "Bauauftrag ist nicht vollständig" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "Unter-Bauaufträge" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "Bestand Bauauftrag zuweisen" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "Bestandszuordnung aufheben" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "Bestandszuordnung aufheben" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "Bestandszuordnung aufheben" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "Lagerartikel automatisch zuweisen" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "Automatisch zuweisen" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "Lagerartikel manuell dem Bauauftrag zuweisen" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "Bestand zuweisen" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "Benötigte Teile bestellen" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "Teile bestellen" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "Nicht verfolgter Bestand wurde Bauauftrag vollständig zugewiesen" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "Nicht verfolgter Bestand wurde Bauauftrag noch nicht vollständig zugewiesen" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "Ausgewählte Positionen zuweisen" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "Dieser Bauauftrag hat keine zugeordneten Stücklisten-Einträge" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "Unfertige Endprodukte" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "Neues Endprodukt anlegen" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "Neues Endprodukt" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "Endproduktaktionen" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "Ausgewählte Endprodukt fertigstellen" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "Endprodukte fertigstellen" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "Ausgewählte Endprodukte löschen" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "Endprodukte löschen" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" -msgstr "" +msgstr "Verbrauchte Bestände" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "Fertiggestellte Endprodukte" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Anhänge" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "Bauauftrags-Notizen" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "Zuordnung abgeschlossen" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" -msgstr "Alle nicht verfolgten Lagerartikel wurden zugewiesen" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "Neuer Bauauftrag" @@ -1914,14 +1971,10 @@ msgstr "Neuer Bauauftrag" msgid "Build Order Details" msgstr "Bauauftragdetails" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "Unfertige Endprodukte" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "Fertiggestellte Endprodukte" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "{name.title()} Datei" msgid "Select {name} file to upload" msgstr "{name} Datei zum Hochladen auswählen" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "Aktualisiert" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Zeitstempel der letzten Aktualisierung" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "Projektcode" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "Eindeutiger Projektcode" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "Projektbeschreibung" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "Einstellungs-Wert" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "Wert ist keine gültige Option" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "Wahrheitswert erforderlich" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "Nur Ganzzahl eingeben" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "Schlüsseltext muss eindeutig sein" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "Keine Gruppe" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "Eine leere Domain ist nicht erlaubt." -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Ungültiger Domainname: {domain}" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "Kein Plugin" + +#: common/models.py:1068 msgid "Restart required" msgstr "Neustart erforderlich" -#: common/models.py:929 +#: common/models.py:1069 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:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "Name der Serverinstanz" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "Kurze Beschreibung der Instanz" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "Name der Instanz verwenden" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "Den Namen der Instanz in der Titelleiste verwenden" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "Anzeige von `Über` einschränken" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "Zeige das `Über` Fenster nur Administratoren" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Firmenname" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "interner Firmenname" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "Basis-URL" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "Basis-URL für dieses Instanz" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Standardwährung" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "Wählen Sie die Basiswährung für Preisberechnungen aus" -#: common/models.py:979 -msgid "Download from URL" -msgstr "Von URL herunterladen" +#: common/models.py:1126 +msgid "Currency Update Interval" +msgstr "Währungsaktualisierungsintervall" -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt" +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "Download-Größenlimit" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "Maximal zulässige Größe für heruntergeladene Bilder" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "Benutzer-Agent zum Herunterladen von Daten" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "Bestätigung verpflichtend" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "Eine ausdrückliche Benutzerbestätigung für bestimmte Aktionen erfordern." - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "Baumtiefe" - -#: common/models.py:1012 -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:1021 -msgid "Update Check Interval" -msgstr "Prüfungsintervall aktualisieren" - -#: common/models.py:1022 -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:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 msgid "days" msgstr "Tage" -#: common/models.py:1032 +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Von URL herunterladen" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "Download-Größenlimit" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "Maximal zulässige Größe für heruntergeladene Bilder" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "Benutzer-Agent zum Herunterladen von Daten" + +#: common/models.py:1164 +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:1169 +msgid "Require confirm" +msgstr "Bestätigung verpflichtend" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "Eine ausdrückliche Benutzerbestätigung für bestimmte Aktionen erfordern." + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "Baumtiefe" + +#: common/models.py:1177 +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:1186 +msgid "Update Check Interval" +msgstr "Prüfungsintervall aktualisieren" + +#: common/models.py:1187 +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:1197 msgid "Automatic Backup" msgstr "Automatische Sicherung" -#: common/models.py:1033 +#: common/models.py:1198 msgid "Enable automatic backup of database and media files" msgstr "Automatische Sicherung der Datenbank- und Mediendateien aktivieren" -#: common/models.py:1039 +#: common/models.py:1204 msgid "Auto Backup Interval" msgstr "Intervall für automatische Sicherung" -#: common/models.py:1040 +#: common/models.py:1205 msgid "Specify number of days between automated backup events" msgstr "Anzahl der Tage zwischen automatischen Sicherungen" -#: common/models.py:1050 +#: common/models.py:1215 msgid "Task Deletion Interval" -msgstr "Löschinterval für Aufgaben" +msgstr "Aufgabenlöschinterval" -#: common/models.py:1051 +#: common/models.py:1216 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:1061 +#: common/models.py:1226 msgid "Error Log Deletion Interval" msgstr "Löschintervall für Fehlerprotokolle" -#: common/models.py:1062 +#: common/models.py:1227 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:1072 +#: common/models.py:1237 msgid "Notification Deletion Interval" msgstr "Löschintervall für Benachrichtigungen" -#: common/models.py:1073 +#: common/models.py:1238 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:1083 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Bacode-Feature verwenden" -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "Barcode-Scanner Unterstützung" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" -#: common/models.py:1090 +#: common/models.py:1255 msgid "Barcode Input Delay" msgstr "Barcode-Eingabeverzögerung" -#: common/models.py:1091 +#: common/models.py:1256 msgid "Barcode input processing delay time" msgstr "Verzögerungszeit bei Barcode-Eingabe" -#: common/models.py:1101 +#: common/models.py:1266 msgid "Barcode Webcam Support" msgstr "Barcode Webcam-Unterstützung" -#: common/models.py:1102 +#: common/models.py:1267 msgid "Allow barcode scanning via webcam in browser" msgstr "Barcode-Scannen über Webcam im Browser erlauben" -#: common/models.py:1108 +#: common/models.py:1273 msgid "Part Revisions" msgstr "Artikelrevisionen" -#: common/models.py:1109 +#: common/models.py:1274 msgid "Enable revision field for Part" msgstr "Revisions-Feld für Artikel aktivieren" -#: common/models.py:1115 +#: common/models.py:1280 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:1116 +#: common/models.py:1281 msgid "Regular expression pattern for matching Part IPN" msgstr "RegEx Muster für die Zuordnung von Teil-IPN" -#: common/models.py:1120 +#: common/models.py:1285 msgid "Allow Duplicate IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:1121 +#: common/models.py:1286 msgid "Allow multiple parts to share the same IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:1127 +#: common/models.py:1292 msgid "Allow Editing IPN" msgstr "Ändern von IPN erlaubt" -#: common/models.py:1128 +#: common/models.py:1293 msgid "Allow changing the IPN value while editing a part" msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt" -#: common/models.py:1134 +#: common/models.py:1299 msgid "Copy Part BOM Data" msgstr "Teil-Stückliste kopieren" -#: common/models.py:1135 +#: common/models.py:1300 msgid "Copy BOM data by default when duplicating a part" msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird " -#: common/models.py:1141 +#: common/models.py:1306 msgid "Copy Part Parameter Data" msgstr "Teil-Parameter kopieren" -#: common/models.py:1142 +#: common/models.py:1307 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:1148 +#: common/models.py:1313 msgid "Copy Part Test Data" msgstr "Teil-Testdaten kopieren" -#: common/models.py:1149 +#: common/models.py:1314 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:1155 +#: common/models.py:1320 msgid "Copy Category Parameter Templates" msgstr "Kategorie-Parametervorlage kopieren" -#: common/models.py:1156 +#: common/models.py:1321 msgid "Copy category parameter templates when creating a part" msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird" -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Vorlage" -#: common/models.py:1163 +#: common/models.py:1328 msgid "Parts are templates by default" msgstr "Teile sind standardmäßig Vorlagen" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Baugruppe" -#: common/models.py:1170 +#: common/models.py:1335 msgid "Parts can be assembled from other components by default" msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Komponente" -#: common/models.py:1177 +#: common/models.py:1342 msgid "Parts can be used as sub-components by default" msgstr "Teile können standardmäßig in Baugruppen benutzt werden" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 +#: common/models.py:1348 part/admin.py:53 part/models.py:981 msgid "Purchaseable" msgstr "Kaufbar" -#: common/models.py:1184 +#: common/models.py:1349 msgid "Parts are purchaseable by default" msgstr "Artikel sind grundsätzlich kaufbar" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Verkäuflich" -#: common/models.py:1191 +#: common/models.py:1356 msgid "Parts are salable by default" msgstr "Artikel sind grundsätzlich verkaufbar" -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Nachverfolgbar" -#: common/models.py:1198 +#: common/models.py:1363 msgid "Parts are trackable by default" msgstr "Artikel sind grundsätzlich verfolgbar" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtuell" -#: common/models.py:1205 +#: common/models.py:1370 msgid "Parts are virtual by default" msgstr "Teile sind grundsätzlich virtuell" -#: common/models.py:1211 +#: common/models.py:1376 msgid "Show Import in Views" msgstr "Import in Ansichten anzeigen" -#: common/models.py:1212 +#: common/models.py:1377 msgid "Display the import wizard in some part views" msgstr "Importassistent in einigen Teil-Ansichten anzeigen" -#: common/models.py:1218 +#: common/models.py:1383 msgid "Show related parts" msgstr "Verwandte Teile anzeigen" -#: common/models.py:1219 +#: common/models.py:1384 msgid "Display related parts for a part" msgstr "Verwandte Teile eines Teils anzeigen" -#: common/models.py:1225 +#: common/models.py:1390 msgid "Initial Stock Data" msgstr "Initialer Lagerbestand" -#: common/models.py:1226 +#: common/models.py:1391 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:1232 templates/js/translated/part.js:108 +#: common/models.py:1397 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Initiale Lieferantendaten" -#: common/models.py:1233 +#: common/models.py:1398 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:1239 +#: common/models.py:1404 msgid "Part Name Display Format" msgstr "Anzeigeformat für Teilenamen" -#: common/models.py:1240 +#: common/models.py:1405 msgid "Format to display the part name" msgstr "Format für den Namen eines Teiles" -#: common/models.py:1247 +#: common/models.py:1412 msgid "Part Category Default Icon" msgstr "Standardsymbol der Teilkategorie" -#: common/models.py:1248 +#: common/models.py:1413 msgid "Part category default icon (empty means no icon)" msgstr "Standardsymbol der Teilkategorie (leer bedeutet kein Symbol)" -#: common/models.py:1253 +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "Parameter Einheiten durchsetzen" + +#: common/models.py:1419 +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:1425 msgid "Minimum Pricing Decimal Places" -msgstr "" +msgstr "Dezimalstellen für minimalen Preis" -#: common/models.py:1254 +#: common/models.py:1426 msgid "Minimum number of decimal places to display when rendering pricing data" -msgstr "" +msgstr "Mindestanzahl der Dezimalstellen bei der Darstellung der Preisdaten" -#: common/models.py:1264 +#: common/models.py:1436 msgid "Maximum Pricing Decimal Places" -msgstr "" +msgstr "Dezimalstellen für maximalen Preis" -#: common/models.py:1265 +#: common/models.py:1437 msgid "Maximum number of decimal places to display when rendering pricing data" -msgstr "" +msgstr "Maximale Anzahl der Dezimalstellen bei der Darstellung der Preisdaten" -#: common/models.py:1275 +#: common/models.py:1447 msgid "Use Supplier Pricing" msgstr "Zulieferer-Preise verwenden" -#: common/models.py:1276 +#: common/models.py:1448 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Lieferanten-Staffelpreise in die Gesamt-Preisberechnungen einbeziehen" -#: common/models.py:1282 +#: common/models.py:1454 msgid "Purchase History Override" msgstr "Kaufverlauf überschreiben" -#: common/models.py:1283 +#: common/models.py:1455 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Historische Bestellungspreise überschreiben die Lieferanten-Staffelpreise" -#: common/models.py:1289 +#: common/models.py:1461 msgid "Use Stock Item Pricing" msgstr "Lagerartikel-Preis verwenden" -#: common/models.py:1290 +#: common/models.py:1462 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Preise aus manuell eingegebenen Lagerdaten für Preisberechnungen verwenden" -#: common/models.py:1296 +#: common/models.py:1468 msgid "Stock Item Pricing Age" msgstr "Lagerartikelpreis Alter" -#: common/models.py:1297 +#: common/models.py:1469 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:1307 +#: common/models.py:1479 msgid "Use Variant Pricing" msgstr "Variantenpreise verwenden" -#: common/models.py:1308 +#: common/models.py:1480 msgid "Include variant pricing in overall pricing calculations" msgstr "Variantenpreise in die Gesamt-Preisberechnungen einbeziehen" -#: common/models.py:1314 +#: common/models.py:1486 msgid "Active Variants Only" msgstr "Nur aktive Varianten" -#: common/models.py:1315 +#: common/models.py:1487 msgid "Only use active variant parts for calculating variant pricing" msgstr "Nur aktive Variantenteile zur Berechnung der Variantenbepreisung verwenden" -#: common/models.py:1321 +#: common/models.py:1493 msgid "Pricing Rebuild Interval" msgstr "Intervall für Neuberechnung von Preisen" -#: common/models.py:1322 +#: common/models.py:1494 msgid "Number of days before part pricing is automatically updated" msgstr "Anzahl der Tage bis die Teile-Preisberechnungen automatisch aktualisiert werden" -#: common/models.py:1332 +#: common/models.py:1504 msgid "Internal Prices" msgstr "Interne Preise" -#: common/models.py:1333 +#: common/models.py:1505 msgid "Enable internal prices for parts" msgstr "Interne Preise für Teile aktivieren" -#: common/models.py:1339 +#: common/models.py:1511 msgid "Internal Price Override" msgstr "Interne Preisüberschreibung" -#: common/models.py:1340 +#: common/models.py:1512 msgid "If available, internal prices override price range calculations" msgstr "Falls verfügbar, überschreiben interne Preise Preispannenberechnungen" -#: common/models.py:1346 +#: common/models.py:1518 msgid "Enable label printing" msgstr "Labeldruck aktivieren" -#: common/models.py:1347 +#: common/models.py:1519 msgid "Enable label printing from the web interface" msgstr "Labeldruck über die Website aktivieren" -#: common/models.py:1353 +#: common/models.py:1525 msgid "Label Image DPI" msgstr "Label Bild DPI" -#: common/models.py:1354 +#: common/models.py:1526 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:1363 +#: common/models.py:1535 msgid "Enable Reports" msgstr "Berichte aktivieren" -#: common/models.py:1364 +#: common/models.py:1536 msgid "Enable generation of reports" msgstr "Berichterstellung aktivieren" -#: common/models.py:1370 templates/stats.html:25 +#: common/models.py:1542 templates/stats.html:25 msgid "Debug Mode" msgstr "Entwickler-Modus" -#: common/models.py:1371 +#: common/models.py:1543 msgid "Generate reports in debug mode (HTML output)" msgstr "Berichte im Entwickler-Modus generieren (als HTML)" -#: common/models.py:1377 +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 msgid "Page Size" msgstr "Seitengröße" -#: common/models.py:1378 +#: common/models.py:1550 msgid "Default page size for PDF reports" msgstr "Standardseitenformat für PDF-Bericht" -#: common/models.py:1388 +#: common/models.py:1556 msgid "Enable Test Reports" msgstr "Testberichte aktivieren" -#: common/models.py:1389 +#: common/models.py:1557 msgid "Enable generation of test reports" msgstr "Erstellung von Test-Berichten aktivieren" -#: common/models.py:1395 +#: common/models.py:1563 msgid "Attach Test Reports" msgstr "Testberichte anhängen" -#: common/models.py:1396 +#: common/models.py:1564 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:1402 +#: common/models.py:1570 msgid "Globally Unique Serials" msgstr "Global einzigartige Seriennummern" -#: common/models.py:1403 +#: common/models.py:1571 msgid "Serial numbers for stock items must be globally unique" msgstr "Seriennummern für Lagerartikel müssen global eindeutig sein" -#: common/models.py:1409 +#: common/models.py:1577 msgid "Autofill Serial Numbers" msgstr "Seriennummern automatisch ausfüllen" -#: common/models.py:1410 +#: common/models.py:1578 msgid "Autofill serial numbers in forms" msgstr "Seriennummern in Formularen automatisch ausfüllen" -#: common/models.py:1416 +#: common/models.py:1584 msgid "Delete Depleted Stock" msgstr "Erschöpften Lagerartikel löschen" -#: common/models.py:1417 +#: common/models.py:1585 msgid "Determines default behaviour when a stock item is depleted" msgstr "Legt das Standardverhalten fest, wenn ein Lagerartikel erschöpft ist" -#: common/models.py:1423 +#: common/models.py:1591 msgid "Batch Code Template" msgstr "Losnummer Vorlage" -#: common/models.py:1424 +#: common/models.py:1592 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:1429 +#: common/models.py:1597 msgid "Stock Expiry" msgstr "Bestands-Ablauf" -#: common/models.py:1430 +#: common/models.py:1598 msgid "Enable stock expiry functionality" msgstr "Ablaufen von Bestand ermöglichen" -#: common/models.py:1436 +#: common/models.py:1604 msgid "Sell Expired Stock" msgstr "Abgelaufenen Bestand verkaufen" -#: common/models.py:1437 +#: common/models.py:1605 msgid "Allow sale of expired stock" msgstr "Verkauf von abgelaufenem Bestand erlaubt" -#: common/models.py:1443 +#: common/models.py:1611 msgid "Stock Stale Time" msgstr "Bestands-Stehzeit" -#: common/models.py:1444 +#: common/models.py:1612 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:1451 +#: common/models.py:1619 msgid "Build Expired Stock" msgstr "Abgelaufenen Bestand verbauen" -#: common/models.py:1452 +#: common/models.py:1620 msgid "Allow building with expired stock" msgstr "Verbauen von abgelaufenen Bestand erlaubt" -#: common/models.py:1458 +#: common/models.py:1626 msgid "Stock Ownership Control" msgstr "Bestands-Eigentümerkontrolle" -#: common/models.py:1459 +#: common/models.py:1627 msgid "Enable ownership control over stock locations and items" msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren" -#: common/models.py:1465 +#: common/models.py:1633 msgid "Stock Location Default Icon" msgstr "Standardsymbol für Lagerort" -#: common/models.py:1466 +#: common/models.py:1634 msgid "Stock location default icon (empty means no icon)" msgstr "Standardsymbol für Lagerstandort (leer bedeutet kein Symbol)" -#: common/models.py:1471 +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "Zeige installierte Lagerartikel" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "Anzeige der installierten Lagerartikel in Bestandstabellen" + +#: common/models.py:1646 msgid "Build Order Reference Pattern" msgstr "Bauauftragsreferenz-Muster" -#: common/models.py:1472 +#: common/models.py:1647 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:1478 +#: common/models.py:1653 msgid "Enable Return Orders" -msgstr "" +msgstr "Rücksendungen aktivieren" -#: common/models.py:1479 +#: common/models.py:1654 msgid "Enable return order functionality in the user interface" -msgstr "" +msgstr "Aktivieren der Rücksendung-Funktion in der Benutzeroberfläche" -#: common/models.py:1485 +#: common/models.py:1660 msgid "Return Order Reference Pattern" -msgstr "" +msgstr "Referenz Muster für Rücksendungen" -#: common/models.py:1486 +#: common/models.py:1661 msgid "Required pattern for generating Return Order reference field" -msgstr "" +msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Rücksendungen" -#: common/models.py:1492 +#: common/models.py:1667 msgid "Edit Completed Return Orders" -msgstr "" +msgstr "Abgeschlossene Rücksendungen bearbeiten" -#: common/models.py:1493 +#: common/models.py:1668 msgid "Allow editing of return orders after they have been completed" -msgstr "" +msgstr "Bearbeitung von Rücksendungen nach Abschluss erlauben" -#: common/models.py:1499 +#: common/models.py:1674 msgid "Sales Order Reference Pattern" msgstr "Auftragsreferenz-Muster" -#: common/models.py:1500 +#: common/models.py:1675 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:1506 +#: common/models.py:1681 msgid "Sales Order Default Shipment" msgstr "Auftrag Standardsendung" -#: common/models.py:1507 +#: common/models.py:1682 msgid "Enable creation of default shipment with sales orders" msgstr "Erstelle eine Standardsendung für Aufträge" -#: common/models.py:1513 +#: common/models.py:1688 msgid "Edit Completed Sales Orders" msgstr "Abgeschlossene Verkaufsaufträge bearbeiten" -#: common/models.py:1514 +#: common/models.py:1689 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Bearbeitung von Verkaufsaufträgen nach Versand oder Abschluss erlauben" -#: common/models.py:1520 +#: common/models.py:1695 msgid "Purchase Order Reference Pattern" msgstr "Bestellungsreferenz-Muster" -#: common/models.py:1521 +#: common/models.py:1696 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:1527 +#: common/models.py:1702 msgid "Edit Completed Purchase Orders" msgstr "Abgeschlossene Einkaufsaufträge bearbeiten" -#: common/models.py:1528 +#: common/models.py:1703 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:1535 +#: common/models.py:1710 msgid "Enable password forgot" msgstr "Passwort vergessen aktivieren" -#: common/models.py:1536 +#: common/models.py:1711 msgid "Enable password forgot function on the login pages" msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren" -#: common/models.py:1542 +#: common/models.py:1717 msgid "Enable registration" msgstr "Registrierung erlauben" -#: common/models.py:1543 +#: common/models.py:1718 msgid "Enable self-registration for users on the login pages" msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren" -#: common/models.py:1549 +#: common/models.py:1724 msgid "Enable SSO" msgstr "SSO aktivieren" -#: common/models.py:1550 +#: common/models.py:1725 msgid "Enable SSO on the login pages" msgstr "SSO auf den Anmeldeseiten aktivieren" -#: common/models.py:1556 +#: common/models.py:1731 msgid "Enable SSO registration" msgstr "SSO Selbstregistrierung aktivieren" -#: common/models.py:1557 +#: common/models.py:1732 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:1563 +#: common/models.py:1738 msgid "Email required" msgstr "Email-Adresse erforderlich" -#: common/models.py:1564 +#: common/models.py:1739 msgid "Require user to supply mail on signup" msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben" -#: common/models.py:1570 +#: common/models.py:1745 msgid "Auto-fill SSO users" msgstr "SSO-Benutzer automatisch ausfüllen" -#: common/models.py:1571 +#: common/models.py:1746 msgid "Automatically fill out user-details from SSO account-data" msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen" -#: common/models.py:1577 +#: common/models.py:1752 msgid "Mail twice" msgstr "E-Mail zweimal" -#: common/models.py:1578 +#: common/models.py:1753 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:1584 +#: common/models.py:1759 msgid "Password twice" msgstr "Passwort zweimal" -#: common/models.py:1585 +#: common/models.py:1760 msgid "On signup ask users twice for their password" msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen" -#: common/models.py:1591 +#: common/models.py:1766 msgid "Allowed domains" msgstr "Erlaubte Domains" -#: common/models.py:1592 +#: common/models.py:1767 msgid "Restrict signup to certain domains (comma-separated, starting with @)" -msgstr "" +msgstr "Anmeldung auf bestimmte Domänen beschränken (kommagetrennt, beginnend mit @)" -#: common/models.py:1598 +#: common/models.py:1773 msgid "Group on signup" msgstr "Gruppe bei Registrierung" -#: common/models.py:1599 +#: common/models.py:1774 msgid "Group to which new users are assigned on registration" msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden" -#: common/models.py:1605 +#: common/models.py:1780 msgid "Enforce MFA" msgstr "MFA erzwingen" -#: common/models.py:1606 +#: common/models.py:1781 msgid "Users must use multifactor security." msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden." -#: common/models.py:1612 +#: common/models.py:1787 msgid "Check plugins on startup" msgstr "Plugins beim Start prüfen" -#: common/models.py:1613 +#: common/models.py:1788 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:1620 -msgid "Check plugin signatures" -msgstr "Plugin-Signaturen überprüfen" - -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "Signaturen für Plugins prüfen und anzeigen" - -#: common/models.py:1628 +#: common/models.py:1796 msgid "Enable URL integration" msgstr "URL-Integration aktivieren" -#: common/models.py:1629 +#: common/models.py:1797 msgid "Enable plugins to add URL routes" msgstr "Plugins zum Hinzufügen von URLs aktivieren" -#: common/models.py:1636 +#: common/models.py:1804 msgid "Enable navigation integration" msgstr "Navigations-Integration aktivieren" -#: common/models.py:1637 +#: common/models.py:1805 msgid "Enable plugins to integrate into navigation" msgstr "Plugins zur Integration in die Navigation aktivieren" -#: common/models.py:1644 +#: common/models.py:1812 msgid "Enable app integration" msgstr "App-Integration aktivieren" -#: common/models.py:1645 +#: common/models.py:1813 msgid "Enable plugins to add apps" msgstr "Plugins zum Hinzufügen von Apps aktivieren" -#: common/models.py:1652 +#: common/models.py:1820 msgid "Enable schedule integration" msgstr "Terminplan-Integration aktivieren" -#: common/models.py:1653 +#: common/models.py:1821 msgid "Enable plugins to run scheduled tasks" msgstr "Geplante Aufgaben aktivieren" -#: common/models.py:1660 +#: common/models.py:1828 msgid "Enable event integration" msgstr "Ereignis-Integration aktivieren" -#: common/models.py:1661 +#: common/models.py:1829 msgid "Enable plugins to respond to internal events" msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren" -#: common/models.py:1668 +#: common/models.py:1836 msgid "Enable project codes" msgstr "Projektcodes aktivieren" -#: common/models.py:1669 +#: common/models.py:1837 msgid "Enable project codes for tracking projects" -msgstr "" +msgstr "Aktiviere Projektcodes für die Verfolgung von Projekten" -#: common/models.py:1675 +#: common/models.py:1843 msgid "Stocktake Functionality" msgstr "Inventurfunktionen" -#: common/models.py:1676 +#: common/models.py:1844 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:1682 +#: common/models.py:1850 +msgid "Exclude External Locations" +msgstr "Externe Standorte ausschließen" + +#: common/models.py:1851 +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:1857 msgid "Automatic Stocktake Period" msgstr "Automatische Inventur-Periode" -#: common/models.py:1683 +#: common/models.py:1858 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:1692 +#: common/models.py:1867 msgid "Report Deletion Interval" msgstr "Löschintervall für Berichte" -#: common/models.py:1693 +#: common/models.py:1868 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:1710 common/models.py:2147 +#: common/models.py:1885 common/models.py:2314 msgid "Settings key (must be unique - case insensitive" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" -msgstr "Kein Drucker (Exportieren als PDF)" - -#: common/models.py:1751 +#: common/models.py:1925 msgid "Hide inactive parts" -msgstr "" +msgstr "Inaktive Teile ausblenden" -#: common/models.py:1752 +#: common/models.py:1926 msgid "Hide inactive parts in results displayed on the homepage" -msgstr "" +msgstr "Ausblenden inaktiver Teile in den auf der Startseite angezeigten Ergebnissen" -#: common/models.py:1758 +#: common/models.py:1932 msgid "Show subscribed parts" msgstr "Abonnierte Teile anzeigen" -#: common/models.py:1759 +#: common/models.py:1933 msgid "Show subscribed parts on the homepage" msgstr "Zeige abonnierte Teile auf der Startseite" -#: common/models.py:1765 +#: common/models.py:1939 msgid "Show subscribed categories" msgstr "Abonnierte Kategorien anzeigen" -#: common/models.py:1766 +#: common/models.py:1940 msgid "Show subscribed part categories on the homepage" msgstr "Zeige abonnierte Teilkategorien auf der Startseite" -#: common/models.py:1772 +#: common/models.py:1946 msgid "Show latest parts" msgstr "Neueste Teile anzeigen" -#: common/models.py:1773 +#: common/models.py:1947 msgid "Show latest parts on the homepage" msgstr "Zeige neueste Teile auf der Startseite" -#: common/models.py:1779 -msgid "Recent Part Count" -msgstr "Aktuelle Teile-Stände" - -#: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "Anzahl der neusten Teile auf der Startseite" - -#: common/models.py:1786 +#: common/models.py:1953 msgid "Show unvalidated BOMs" msgstr "Nicht validierte Stücklisten anzeigen" -#: common/models.py:1787 +#: common/models.py:1954 msgid "Show BOMs that await validation on the homepage" msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite" -#: common/models.py:1793 +#: common/models.py:1960 msgid "Show recent stock changes" msgstr "Neueste Bestandänderungen anzeigen" -#: common/models.py:1794 +#: common/models.py:1961 msgid "Show recently changed stock items on the homepage" msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite" -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "aktueller Bestand" - -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "Anzahl des geänderten Bestands auf der Startseite" - -#: common/models.py:1807 +#: common/models.py:1967 msgid "Show low stock" msgstr "Niedrigen Bestand anzeigen" -#: common/models.py:1808 +#: common/models.py:1968 msgid "Show low stock items on the homepage" msgstr "Zeige geringen Bestand auf der Startseite" -#: common/models.py:1814 +#: common/models.py:1974 msgid "Show depleted stock" msgstr "Lerren Bestand anzeigen" -#: common/models.py:1815 +#: common/models.py:1975 msgid "Show depleted stock items on the homepage" msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite" -#: common/models.py:1821 +#: common/models.py:1981 msgid "Show needed stock" msgstr "Benötigten Bestand anzeigen" -#: common/models.py:1822 +#: common/models.py:1982 msgid "Show stock items needed for builds on the homepage" msgstr "Zeige Bestand für Bauaufträge auf der Startseite" -#: common/models.py:1828 +#: common/models.py:1988 msgid "Show expired stock" msgstr "Abgelaufenen Bestand anzeigen" -#: common/models.py:1829 +#: common/models.py:1989 msgid "Show expired stock items on the homepage" msgstr "Zeige abgelaufene Lagerbestände auf der Startseite" -#: common/models.py:1835 +#: common/models.py:1995 msgid "Show stale stock" msgstr "Alten Bestand anzeigen" -#: common/models.py:1836 +#: common/models.py:1996 msgid "Show stale stock items on the homepage" msgstr "Zeige überfällige Lagerartikel auf der Startseite" -#: common/models.py:1842 +#: common/models.py:2002 msgid "Show pending builds" msgstr "Ausstehende Bauaufträge anzeigen" -#: common/models.py:1843 +#: common/models.py:2003 msgid "Show pending builds on the homepage" msgstr "Zeige ausstehende Bauaufträge auf der Startseite" -#: common/models.py:1849 +#: common/models.py:2009 msgid "Show overdue builds" msgstr "Zeige überfällige Bauaufträge" -#: common/models.py:1850 +#: common/models.py:2010 msgid "Show overdue builds on the homepage" msgstr "Zeige überfällige Bauaufträge auf der Startseite" -#: common/models.py:1856 +#: common/models.py:2016 msgid "Show outstanding POs" msgstr "Ausstehende POs anzeigen" -#: common/models.py:1857 +#: common/models.py:2017 msgid "Show outstanding POs on the homepage" msgstr "Zeige ausstehende POs auf der Startseite" -#: common/models.py:1863 +#: common/models.py:2023 msgid "Show overdue POs" msgstr "Überfällige POs anzeigen" -#: common/models.py:1864 +#: common/models.py:2024 msgid "Show overdue POs on the homepage" msgstr "Zeige überfällige POs auf der Startseite" -#: common/models.py:1870 +#: common/models.py:2030 msgid "Show outstanding SOs" msgstr "Ausstehende SOs anzeigen" -#: common/models.py:1871 +#: common/models.py:2031 msgid "Show outstanding SOs on the homepage" msgstr "Zeige ausstehende SOs auf der Startseite" -#: common/models.py:1877 +#: common/models.py:2037 msgid "Show overdue SOs" msgstr "Überfällige SOs anzeigen" -#: common/models.py:1878 +#: common/models.py:2038 msgid "Show overdue SOs on the homepage" msgstr "Zeige überfällige SOs auf der Startseite" -#: common/models.py:1884 +#: common/models.py:2044 msgid "Show pending SO shipments" -msgstr "" +msgstr "Ausstehende Versandaufträge anzeigen" -#: common/models.py:1885 +#: common/models.py:2045 msgid "Show pending SO shipments on the homepage" -msgstr "" +msgstr "Ausstehende Versandaufträge auf der Startseite anzeigen" -#: common/models.py:1891 +#: common/models.py:2051 msgid "Show News" msgstr "Zeige Neuigkeiten" -#: common/models.py:1892 +#: common/models.py:2052 msgid "Show news on the homepage" msgstr "Neuigkeiten auf der Startseite anzeigen" -#: common/models.py:1898 +#: common/models.py:2058 msgid "Inline label display" msgstr "Label inline anzeigen" -#: common/models.py:1899 +#: common/models.py:2059 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:1905 +#: common/models.py:2065 msgid "Default label printer" msgstr "Standard-Etikettendrucker" -#: common/models.py:1906 +#: common/models.py:2066 msgid "Configure which label printer should be selected by default" msgstr "Einen standardmäßig ausgewählten Etikettendrucker konfigurieren" -#: common/models.py:1912 +#: common/models.py:2072 msgid "Inline report display" msgstr "Berichte inline anzeigen" -#: common/models.py:1913 +#: common/models.py:2073 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:1919 +#: common/models.py:2079 msgid "Search Parts" msgstr "Teile suchen" -#: common/models.py:1920 +#: common/models.py:2080 msgid "Display parts in search preview window" msgstr "Teile in der Suchvorschau anzeigen" -#: common/models.py:1926 +#: common/models.py:2086 msgid "Search Supplier Parts" msgstr "Zulieferteile durchsuchen" -#: common/models.py:1927 +#: common/models.py:2087 msgid "Display supplier parts in search preview window" msgstr "Zuliefererteile in der Suchvorschau anzeigen" -#: common/models.py:1933 +#: common/models.py:2093 msgid "Search Manufacturer Parts" msgstr "Herstellerteile durchsuchen" -#: common/models.py:1934 +#: common/models.py:2094 msgid "Display manufacturer parts in search preview window" msgstr "Herstellerteile in der Suchvorschau anzeigen" -#: common/models.py:1940 +#: common/models.py:2100 msgid "Hide Inactive Parts" msgstr "Inaktive Teile ausblenden" -#: common/models.py:1941 +#: common/models.py:2101 msgid "Excluded inactive parts from search preview window" msgstr "Inaktive Teile in der Suchvorschau ausblenden" -#: common/models.py:1947 +#: common/models.py:2107 msgid "Search Categories" msgstr "Kategorien durchsuchen" -#: common/models.py:1948 +#: common/models.py:2108 msgid "Display part categories in search preview window" msgstr "Teilekategorien in der Suchvorschau anzeigen" -#: common/models.py:1954 +#: common/models.py:2114 msgid "Search Stock" msgstr "Bestand durchsuchen" -#: common/models.py:1955 +#: common/models.py:2115 msgid "Display stock items in search preview window" msgstr "Lagerartikel in Suchvorschau anzeigen" -#: common/models.py:1961 +#: common/models.py:2121 msgid "Hide Unavailable Stock Items" msgstr "Nicht verfügbare Artikel ausblenden" -#: common/models.py:1962 +#: common/models.py:2122 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:1968 +#: common/models.py:2128 msgid "Search Locations" msgstr "Lagerorte durchsuchen" -#: common/models.py:1969 +#: common/models.py:2129 msgid "Display stock locations in search preview window" msgstr "Lagerorte in Suchvorschau anzeigen" -#: common/models.py:1975 +#: common/models.py:2135 msgid "Search Companies" msgstr "Firmen durchsuchen" -#: common/models.py:1976 +#: common/models.py:2136 msgid "Display companies in search preview window" msgstr "Firmen in der Suchvorschau anzeigen" -#: common/models.py:1982 +#: common/models.py:2142 msgid "Search Build Orders" msgstr "Bauaufträge durchsuchen" -#: common/models.py:1983 +#: common/models.py:2143 msgid "Display build orders in search preview window" msgstr "Bauaufträge in der Suchvorschau anzeigen" -#: common/models.py:1989 +#: common/models.py:2149 msgid "Search Purchase Orders" msgstr "Bestellungen durchsuchen" -#: common/models.py:1990 +#: common/models.py:2150 msgid "Display purchase orders in search preview window" msgstr "Bestellungen in der Suchvorschau anzeigen" -#: common/models.py:1996 +#: common/models.py:2156 msgid "Exclude Inactive Purchase Orders" msgstr "Inaktive Bestellungen ausblenden" -#: common/models.py:1997 +#: common/models.py:2157 msgid "Exclude inactive purchase orders from search preview window" msgstr "Inaktive Bestellungen in der Suchvorschau ausblenden" -#: common/models.py:2003 +#: common/models.py:2163 msgid "Search Sales Orders" msgstr "Aufträge durchsuchen" -#: common/models.py:2004 +#: common/models.py:2164 msgid "Display sales orders in search preview window" msgstr "Aufträge in der Suchvorschau anzeigen" -#: common/models.py:2010 +#: common/models.py:2170 msgid "Exclude Inactive Sales Orders" msgstr "Inaktive Aufträge ausblenden" -#: common/models.py:2011 +#: common/models.py:2171 msgid "Exclude inactive sales orders from search preview window" msgstr "Inaktive Aufträge in der Suchvorschau ausblenden" -#: common/models.py:2017 +#: common/models.py:2177 msgid "Search Return Orders" -msgstr "" +msgstr "Suche nach Rücksendungen" -#: common/models.py:2018 +#: common/models.py:2178 msgid "Display return orders in search preview window" -msgstr "" +msgstr "Rücksendungen in der Suchvorschau anzeigen" -#: common/models.py:2024 +#: common/models.py:2184 msgid "Exclude Inactive Return Orders" -msgstr "" +msgstr "Inaktive Rücksendungen ausblenden" -#: common/models.py:2025 +#: common/models.py:2185 msgid "Exclude inactive return orders from search preview window" -msgstr "" +msgstr "Inaktive Rücksendungen in der Suchvorschau ausblenden" -#: common/models.py:2031 +#: common/models.py:2191 msgid "Search Preview Results" msgstr "Anzahl Suchergebnisse" -#: common/models.py:2032 +#: common/models.py:2192 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:2038 +#: common/models.py:2198 msgid "Regex Search" msgstr "Regex Suche" -#: common/models.py:2039 +#: common/models.py:2199 msgid "Enable regular expressions in search queries" -msgstr "" +msgstr "Reguläre Ausdrücke in Suchabfragen aktivieren" -#: common/models.py:2045 +#: common/models.py:2205 msgid "Whole Word Search" -msgstr "" +msgstr "Ganzes Wort suchen" -#: common/models.py:2046 +#: common/models.py:2206 msgid "Search queries return results for whole word matches" -msgstr "" +msgstr "Suchabfragen liefern Ergebnisse für ganze Wortkombinationen" -#: common/models.py:2052 +#: common/models.py:2212 msgid "Show Quantity in Forms" msgstr "zeige Bestand in Eingabemasken" -#: common/models.py:2053 +#: common/models.py:2213 msgid "Display available part quantity in some forms" msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken" -#: common/models.py:2059 +#: common/models.py:2219 msgid "Escape Key Closes Forms" msgstr "Esc-Taste schließt Formulare" -#: common/models.py:2060 +#: common/models.py:2220 msgid "Use the escape key to close modal forms" msgstr "Benutze die Esc-Taste, um Formulare zu schließen" -#: common/models.py:2066 +#: common/models.py:2226 msgid "Fixed Navbar" msgstr "Fixierter Navigationsleiste" -#: common/models.py:2067 +#: common/models.py:2227 msgid "The navbar position is fixed to the top of the screen" msgstr "Position der Navigationsleiste am oberen Bildschirmrand fixieren" -#: common/models.py:2073 +#: common/models.py:2233 msgid "Date Format" msgstr "Datumsformat" -#: common/models.py:2074 +#: common/models.py:2234 msgid "Preferred format for displaying dates" msgstr "Bevorzugtes Format für die Anzeige von Daten" -#: common/models.py:2088 part/templates/part/detail.html:41 +#: common/models.py:2248 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Teilzeitplanung" -#: common/models.py:2089 +#: common/models.py:2249 msgid "Display part scheduling information" msgstr "Zeige Zeitplanung für Teile" -#: common/models.py:2095 part/templates/part/detail.html:62 +#: common/models.py:2255 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventur" -#: common/models.py:2096 +#: common/models.py:2256 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Zeigt Inventur-Informationen an (falls die Inventurfunktion aktiviert ist)" -#: common/models.py:2102 +#: common/models.py:2262 msgid "Table String Length" msgstr "Zeichenkettenlänge in Tabellen" -#: common/models.py:2103 +#: common/models.py:2263 msgid "Maximimum length limit for strings displayed in table views" msgstr "Maximale Länge der Zeichenketten, die in Tabellenansichten angezeigt werden" -#: common/models.py:2112 +#: common/models.py:2272 msgid "Default part label template" -msgstr "" +msgstr "Standardvorlage für Teilebeschriftung" -#: common/models.py:2113 +#: common/models.py:2273 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2121 +#: common/models.py:2281 msgid "Default stock item template" -msgstr "" +msgstr "Lagerartikel-Standardvorlage" -#: common/models.py:2122 +#: common/models.py:2282 msgid "The stock item label template to be automatically selected" -msgstr "" +msgstr "Die Lagerartikel-Etikettenvorlage soll automatisch ausgewählt werden" -#: common/models.py:2130 +#: common/models.py:2290 msgid "Default stock location label template" msgstr "" -#: common/models.py:2131 +#: common/models.py:2291 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2177 +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "Preisstaffelungs Anzahl" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Preis" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "Stückpreis für die angegebene Anzahl" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "Endpunkt" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "Endpunkt, an dem dieser Webhook empfangen wird" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "Name für diesen Webhook" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "Aktiv" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "Ist dieser Webhook aktiv" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "Token" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "Token für Zugang" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "Geheimnis" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "Shared Secret für HMAC" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "Nachrichten-ID" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "Eindeutige Kennung für diese Nachricht" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "Host" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "Host von dem diese Nachricht empfangen wurde" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "Kopfzeile" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "Header dieser Nachricht" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "Body" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "Body dieser Nachricht" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "Endpunkt, über den diese Nachricht empfangen wurde" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "Bearbeitet" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "ID" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "Titel" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "Veröffentlicht" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "Autor" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "Zusammenfassung" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "Gelesen" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "Wurde diese Nachricht gelesen?" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "Bilddatei" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "Einheitsname muss eine gültige Kennung sein" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "Einheitsname" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "Symbol" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "Optionales Einheitssymbol" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "Definition" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "Einheitsdefinition" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "Neue {verbose_name}" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "Eine neue Bestellung wurde erstellt und Ihnen zugewiesen" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "Artikel erhalten" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "Artikel wurden aus einer Bestellung erhalten" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" -msgstr "" +msgstr "Artikel wurden aus einer Rücksendung erhalten" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "Fehler in Plugin aufgetreten" @@ -3478,7 +3580,7 @@ msgstr "Felder zuteilen fehlgeschlagen" msgid "Parts imported" msgstr "Teile importiert" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "Firmenbeschreibung" msgid "Description of the company" msgstr "Firmenbeschreibung" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "Website" @@ -3507,331 +3609,395 @@ msgstr "Website" msgid "Company website URL" msgstr "Firmenwebsite Adresse/URL" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Adresse" - -#: company/models.py:119 -msgid "Company address" -msgstr "Firmenadresse" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Kontakt-Tel." -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "Kontakt-Telefon" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "Email" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "Kontakt-Email" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Kontakt" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "Anlaufstelle" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "Link auf externe Firmeninformation" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "ist Kunde" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "Verkaufen Sie Teile an diese Firma?" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "ist Zulieferer" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "Kaufen Sie Teile von dieser Firma?" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "ist Hersteller" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "Produziert diese Firma Teile?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "Standard-Währung für diese Firma" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Firma" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "Firma auswählen" + +#: company/models.py:337 +msgid "Address title" +msgstr "Adresstitel" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "Titel zur Beschreibung des Adresseintrages" + +#: company/models.py:342 +msgid "Primary address" +msgstr "Primäre Adresse" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "Als primäre Adresse festlegen" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "Linie 1" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "Adresszeile 1" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "Linie 2" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "Adresszeile 2" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "Postleitzahl" + +#: company/models.py:361 +msgid "City/Region" +msgstr "Stadt/Region" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "Postleitzahl Stadt/Region" + +#: company/models.py:366 +msgid "State/Province" +msgstr "Staat/Provinz" + +#: company/models.py:367 +msgid "State or province" +msgstr "Bundesland" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "Land" + +#: company/models.py:372 +msgid "Address country" +msgstr "Adresse Land" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "Kurierversandnotizen" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "Notizen für Versandkurier" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "Interne Versandnotizen" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "Versandnotizen für interne Verwendung" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "Link zu Adressinformationen (extern)" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basisteil" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "Teil auswählen" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Hersteller" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Hersteller auswählen" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "MPN" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "Hersteller-Teilenummer" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "Externe URL für das Herstellerteil" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "Teilbeschreibung des Herstellers" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Herstellerteil" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "Parametername" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Wert" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "Parameterwert" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "Einheiten" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "Parametereinheit" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" -msgstr "" +msgstr "Packeinheiten müssen mit den Basisteileinheiten kompatibel sein" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" -msgstr "" +msgstr "Packeinheiten müssen größer als Null sein" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Zulieferer" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "Zulieferer auswählen" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "SKU (Lagerbestandseinheit)" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "Lagerbestandseinheit (SKU) des Zulieferers" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "Herstellerteil auswählen" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "Teil-URL des Zulieferers" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "Zuliefererbeschreibung des Teils" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "Notiz" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "Basiskosten" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "Mindestpreis" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Verpackungen" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "Teile-Verpackungen" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "Packmenge" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." -msgstr "" +msgstr "Gesamtmenge, die in einer einzelnen Packung geliefert wird. Für Einzelstücke leer lassen." -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "Vielfache" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "Mehrere bestellen" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "Verfügbar" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "Verfügbare Menge von Lieferanten" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "Verfügbarkeit aktualisiert" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "Datum des letzten Updates der Verfügbarkeitsdaten" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "Standard-Währung für diesen Zulieferer" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "Bestellung anlegen" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "Firmenaktionen" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "Firmeninformation bearbeiten" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "Firma bearbeiten" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "Unternehmen löschen" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "Firma löschen" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "Firma löschen" msgid "Part image" msgstr "Artikelbild" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Neues Bild hochladen" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Bild von URL herunterladen" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "Bild löschen" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Kunde" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "verwendet Standard-Währung" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Adresse" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "Telefon" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "Bild entfernen" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "Verknüpftes Bild von dieser Firma entfernen" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "Entfernen" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "Bild hochladen" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "Bild herunterladen" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "Zuliefererteile" @@ -3916,156 +4089,144 @@ msgstr "Neues Zuliefererteil anlegen" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "Neues Zuliefererteil" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "Teile bestellen" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "Teile löschen" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "Teile löschen" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "Herstellerteile" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "Neues Herstellerteil anlegen" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "Neues Herstellerteil" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "Zulieferer-Bestand" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "Bestellungen" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "Neue Bestellung anlegen" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "Neue Bestellung" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "Aufträge" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "Neuen Auftrag anlegen" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "Neuer Auftrag" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "Zugeordneter Bestand" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" -msgstr "" +msgstr "Rücksendeaufträge" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" -msgstr "" +msgstr "Neuen Rücksendeauftrag hinzufügen" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" -msgstr "" +msgstr "Neuer Rücksendeauftrag" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "Firmenbemerkungen" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" -msgstr "" +msgstr "Unternehmenskontakte" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" -msgstr "" +msgstr "Kontakt hinzufügen" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "Zulieferer-Liste" +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "Geschäftsadressen" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "Adresse hinzufügen" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "Hersteller" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "Teil bestellen" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "Herstellerteil bearbeiten" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "Herstellerteil löschen" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "Internes Teil" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "Keine Herstellerdaten verfügbar" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "Zulieferer" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "Zuliefererteil entfernen" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "Löschen" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parameter" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "Neuer Parameter" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "Parameter löschen" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "Parameter hinzufügen" @@ -4135,108 +4278,113 @@ msgstr "Zugewiesene Lagerartikel" #: company/templates/company/sidebar.html:33 msgid "Contacts" -msgstr "" +msgstr "Kontakte" + +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "Adressen" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "Zuliefererteil" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "Zulieferer-Teil Aktionen" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "Teil bestellen" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "Verfügbarkeit aktualisieren" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "Zuliefererteil bearbeiten" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "Zulieferer-Teil duplizieren" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "Zuliefererteil entfernen" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "Zuliefererteil entfernen" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "Keine Lieferanteninformationen verfügbar" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "Zulieferer-Bestand" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "Neuen Lagerartikel hinzufügen" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Neuer Lagerartikel" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "Zulieferer-Bestellungen" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "Preisinformationen ansehen" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "Preisstaffel hinzufügen" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "Zuliefererteil QR-Code" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "Barcode mit Zuliefererteil verknüpfen" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "Teilverfügbarkeit aktualisieren" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "Lagerartikel" @@ -4244,274 +4392,271 @@ msgstr "Lagerartikel" msgid "Supplier Part Pricing" msgstr "Zuliefererteil Bepreisung" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "Neuer Zulieferer" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "Neuer Hersteller" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "Kunden" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "Neuer Kunde" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "Firmen" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "Neue Firma" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "Label Name" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "Label Beschreibung" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "Label" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "Label-Vorlage-Datei" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "Aktiviert" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "Label-Vorlage ist aktiviert" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "Breite [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "Label-Breite in mm" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "Höhe [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "Label-Höhe in mm" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "Dateinamen-Muster" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "Muster für die Erstellung von Label-Dateinamen" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "Filter" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "Teile-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" -msgstr "" +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 "" +msgstr "QR-Code" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "Gesamtpreis" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "Keine passende Bestellung gefunden" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "Bestellung" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" -msgstr "" +msgstr "Rücksendeauftrag" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "Unbekannt" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "Gesamtpreis für diese Bestellung" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" -msgstr "" +msgstr "Auftragswährung" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" -msgstr "" +msgstr "Währung für diesen Auftrag (leer lassen, um Firmenstandard zu verwenden)" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" -msgstr "" +msgstr "Kontakt stimmt nicht mit der ausgewählten Firma überein" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" -msgstr "" +msgstr "Auftragsbeschreibung (optional)" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" -msgstr "" +msgstr "Projektcode für diesen Auftrag auswählen" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "Link auf externe Seite" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Geplantes Lieferdatum für Auftrag." -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "Erstellt von" -#: order/models.py:257 +#: order/models.py:255 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:267 +#: order/models.py:265 msgid "Point of contact for this order" -msgstr "" +msgstr "Ansprechpartner für diesen Auftrag" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "Firmenadresse für diesen Auftrag" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "Bestell-Referenz" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "Bestellungs-Status" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "Firma bei der die Teile bestellt werden" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "Zulieferer-Referenz" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "Zulieferer Bestellreferenz" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "Empfangen von" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "Aufgabedatum" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "Datum an dem die Bestellung aufgegeben wurde" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "Datum an dem der Auftrag fertigstellt wurde" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "Teile-Zulieferer muss dem Zulieferer der Bestellung entsprechen" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "Anzahl muss eine positive Zahl sein" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "Firma an die die Teile verkauft werden" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "Kundenreferenz" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "Bestellreferenz" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "Versanddatum" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "Versand von" -#: order/models.py:857 +#: order/models.py:860 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:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" -msgstr "" +msgstr "Nur ein offener Auftrag kann als abgeschlossen markiert werden" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 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:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "Auftrag kann nicht abgeschlossen werden, da es unvollständige Positionen gibt" @@ -4519,398 +4664,398 @@ msgstr "Auftrag kann nicht abgeschlossen werden, da es unvollständige Positione msgid "Item quantity" msgstr "Anzahl" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "Position - Referenz" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "Position - Notizen" -#: order/models.py:1100 +#: order/models.py:1099 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:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "Kontext" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "Zusätzlicher Kontext für diese Zeile" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "Stückpreis" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "Lieferantenteil muss mit Lieferant übereinstimmen" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "gelöscht" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "Bestellung" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "Zuliefererteil" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "Empfangen" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Preis" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "Preis pro Einheit" -#: order/models.py:1225 +#: order/models.py:1223 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:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "Ein virtuelles Teil kann nicht einem Auftrag zugeordnet werden" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "Nur verkaufbare Teile können einem Auftrag zugewiesen werden" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Verkaufspreis" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "Stückverkaufspreis" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "Versendete Menge" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "Versanddatum" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" -msgstr "" +msgstr "Lieferdatum" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" -msgstr "" +msgstr "Versanddatum" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "Kontrolliert von" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "Benutzer, der diese Sendung kontrolliert hat" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Sendung" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "Sendungsnummer" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "Sendungsverfolgungsnummer" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "Informationen zur Sendungsverfolgung" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "Rechnungsnummer" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "Referenznummer für zugehörige Rechnung" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "Sendung wurde bereits versandt" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "Sendung hat keine zugewiesene Lagerartikel" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "Lagerartikel wurde nicht zugewiesen" -#: order/models.py:1592 +#: order/models.py:1591 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:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "Kann Lagerartikel keiner Zeile ohne Teil hinzufügen" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "Auftrag gehört nicht zu Sendung" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "Sendung gehört nicht zu Auftrag" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "Position" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "Sendungsnummer-Referenz" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "Position" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "Lagerartikel für Zuordnung auswählen" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "Anzahl für Bestandszuordnung eingeben" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" -msgstr "" +msgstr "Empfangsdatum" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "Bestellung kann nicht verworfen werden" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "Erlaube das Schließen des Auftrags mit unvollständigen Positionen" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "Auftrag hat unvollständige Positionen" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "Der Auftrag ist nicht offen" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "Kaufpreiswährung" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "Zuliefererteil muss ausgewählt werden" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "Bestellung muss angegeben sein" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "Lieferant muss mit der Bestellung übereinstimmen" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "Die Bestellung muss mit dem Lieferant übereinstimmen" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "Position" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "Position stimmt nicht mit Kaufauftrag überein" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "Zielort für empfangene Teile auswählen" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "Losnummer für eingehende Lagerartikel" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "Seriennummern für eingehende Lagerartikel" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Barcode" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "Barcode ist bereits in Verwendung" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "Ganzzahl für verfolgbare Teile erforderlich" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "Positionen müssen angegeben werden" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "Ziel-Lagerort muss angegeben werden" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "Barcode muss eindeutig sein" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "Verkaufspreis-Währung" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "Keine Sendungsdetails angegeben" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "Position ist nicht diesem Auftrag zugeordnet" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "Anzahl muss positiv sein" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "Seriennummern zum Zuweisen eingeben" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "Sendung wurde bereits versandt" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "Sendung ist nicht diesem Auftrag zugeordnet" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "Folgende Serienummern konnten nicht gefunden werden" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "Folgende Seriennummern sind bereits zugewiesen" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "Überfällige Bestellung" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "Bestellung {po} ist jetzt überfällig" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "Überfälliger Auftrag" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "Auftrag {so} ist jetzt überfällig" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "Bestellbericht drucken" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "Exportiere Bestellung in Datei" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "Bestell-Aktionen" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "Auftrag bearbeiten" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "Bestellung stornieren" @@ -4949,92 +5094,84 @@ msgstr "Bestellung duplizieren" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" -msgstr "" +msgstr "Bestellung aufgeben" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "Elemente empfangen" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "Teile empfangen" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "Bestellung als vollständig markieren" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "Auftrag fertigstellen" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "Bestellreferenz" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "Bestellungsbeschreibung" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "Bestellstatus" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "Keine Lieferanteninformationen verfügbar" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "Abgeschlossene Positionen" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "Unvollständig" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "Aufgegeben" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "Gesamtsumme" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "Gesamtkosten konnten nicht berechnet werden" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" -msgstr "" +msgstr "Barcode mit Bestellung verknüpfen" #: order/templates/order/order_wizard/match_fields.html:9 #: part/templates/part/import_wizard/ajax_match_fields.html:9 @@ -5085,13 +5222,13 @@ msgstr "Auswahl duplizieren" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Zeile entfernen" @@ -5152,9 +5289,9 @@ msgstr "Bestellungs-Positionen" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "Position hinzufügen" @@ -5165,30 +5302,25 @@ msgstr "Position hinzufügen" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "Positionen löschen" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "Zusätzliche Positionen" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "Extra Zeile anzeigen" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "Empfangene Teile" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "Notizen zur Bestellung" @@ -5197,40 +5329,40 @@ msgstr "Notizen zur Bestellung" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "Paketliste drucken" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "Kundenreferenz" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "Gesamtkosten" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "Verkaufsauftragsbericht drucken" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "Auftrag abschließen" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "Dieser Auftrag ist nicht vollständig zugeordnet" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "Abgeschlossene Sendungen" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "Auftrags-Positionen" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "Ausstehende Sendungen" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Aktionen" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "Neue Sendung" @@ -5293,64 +5424,65 @@ msgstr "Neue Sendung" msgid "Match Supplier Parts" msgstr "Zuliefererteile zuordnen" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "Auftrag nicht gefunden" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "Preis nicht gefunden" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "Stückpreis für {part} auf {price} aktualisiert" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format 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:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "Teil-ID" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "Name des Teils" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "Beschreibung des Teils" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "IPN (Interne Produktnummer)" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "Version" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Schlüsselwörter" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "Kategorie-ID" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "Kategoriename" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "Standard-Standortnummer" @@ -5358,24 +5490,24 @@ msgstr "Standard-Standortnummer" msgid "Default Supplier ID" msgstr "Standard-Lieferantennummer" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variante von" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimaler Bestand" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "Auf Lager" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "Bestellt" @@ -5383,115 +5515,108 @@ msgstr "Bestellt" msgid "Used In" msgstr "Benutzt in" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "Zugeordnet" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "Im Bau" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "Minimale Kosten" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "Maximale Kosten" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "Eltern ID" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "Name des übergeordneten Teils" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "Pfad zur Kategorie" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "Teile" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "Stücklistenebene" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "Stücklisten-Position ID" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "Übergeordnete IPN" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "Teil IPN" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Niedrigster Preis" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Höchster Preis" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "Eingehende Bestellung" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "Ausgehender Auftrag" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "Lagerartikel produziert von Bauauftrag" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "Lagerartikel für Bauauftrag benötigt" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "Gültig" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "Gesamte Stückliste validieren" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "Diese Option muss ausgewählt werden" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Standard-Lagerort" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Gesamtbestand" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "Verfügbarer Bestand" @@ -5499,467 +5624,474 @@ msgstr "Verfügbarer Bestand" msgid "Input quantity for price calculation" msgstr "Menge für die Preisberechnung" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Teil-Kategorie" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "Teil-Kategorien" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "Standard-Lagerort für Teile dieser Kategorie" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Strukturell" -#: part/models.py:135 +#: part/models.py:105 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:139 +#: part/models.py:109 msgid "Default keywords" msgstr "Standard Stichwörter" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "Symbol" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "Symbol (optional)" -#: part/models.py:164 +#: part/models.py:134 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:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "Ungültige Auswahl für übergeordnetes Teil" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" -msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "IPN muss zu Regex-Muster {pat} passen" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "Ein Lagerartikel mit dieser Seriennummer existiert bereits" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "Teil mit diesem Namen, IPN und Revision existiert bereits." -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "Strukturellen Teilekategorien können keine Teile zugewiesen werden!" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "Name des Teils" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "Ist eine Vorlage" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "Ist dieses Teil eine Vorlage?" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "Ist dieses Teil eine Variante eines anderen Teils?" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "Kategorie" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "Teile-Kategorie" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "Interne Teilenummer" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "Revisions- oder Versionsnummer" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Standard Zulieferer" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "Standard Zuliefererteil" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "Standard Ablaufzeit" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "Ablauf-Zeit (in Tagen) für Bestand dieses Teils" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "Minimal zulässiger Bestand" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "Maßeinheit für diesen Teil" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Kann dieses Teil zum Bauauftrag von anderen genutzt werden?" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "Hat dieses Teil Tracking für einzelne Objekte?" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "Kann dieses Teil an Kunden verkauft werden?" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "Ist dieses Teil aktiv?" -#: part/models.py:1029 +#: part/models.py:997 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:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "Prüfsumme der Stückliste gespeichert" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "Stückliste kontrolliert von" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "BOM Kontrolldatum" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "Erstellungs-Nutzer" -#: part/models.py:1042 -msgid "User responsible for this part" -msgstr "Benutzer, der für diesen Teil verantwortlich ist" +#: part/models.py:1014 +msgid "Owner responsible for this part" +msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "Letzte Inventur" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "Mehrere verkaufen" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "Währung für die Berechnung der Preise im Cache" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "Minimale Stücklisten Kosten" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "Minimale Kosten für Teile" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "Maximale Stücklisten Kosten" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "Maximale Kosten für Teile" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "Minimale Einkaufskosten" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "Minimale historische Kaufkosten" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "Maximale Einkaufskosten" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "Maximale historische Einkaufskosten" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "Minimaler interner Preis" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "Minimale Kosten basierend auf den internen Staffelpreisen" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "Maximaler interner Preis" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "Maximale Kosten basierend auf internen Preisstaffeln" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "Minimaler Lieferantenpreis" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "Mindestpreis für Teil von externen Lieferanten" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "Maximaler Lieferantenpreis" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "Maximaler Preis für Teil von externen Lieferanten" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "Minimale Variantenkosten" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "Berechnete minimale Kosten für Variantenteile" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "Maximale Variantenkosten" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "Berechnete maximale Kosten für Variantenteile" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "Berechnete Mindestkosten" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "Berechnete Maximalkosten" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "Mindestverkaufspreis" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "Mindestverkaufspreis basierend auf Staffelpreisen" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "Maximaler Verkaufspreis" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "Maximalverkaufspreis basierend auf Staffelpreisen" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "Mindestverkaufskosten" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "Minimaler historischer Verkaufspreis" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "Maximale Verkaufskosten" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "Maximaler historischer Verkaufspreis" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "Teil für die Inventur" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "Stückzahl" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "Anzahl einzelner Bestandseinträge zum Zeitpunkt der Inventur" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "Insgesamt verfügbarer Lagerbestand zum Zeitpunkt der Inventur" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "Datum" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "Datum der Inventur" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "Zusätzliche Notizen" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "Benutzer, der diese Inventur durchgeführt hat" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "Mindestbestandswert" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "Geschätzter Mindestwert des vorhandenen Bestands" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "Maximaler Bestandswert" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "Geschätzter Maximalwert des vorhandenen Bestands" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "Bericht" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "Inventur-Berichtsdatei (intern generiert)" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "Anzahl der Teile" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "Anzahl der Teile, die von der Inventur abgedeckt werden" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "Benutzer, der diesen Inventurbericht angefordert hat" -#: part/models.py:3238 +#: part/models.py:3239 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:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "Ein Test mit diesem Namen besteht bereits für dieses Teil" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "Test-Name" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "Namen für diesen Test eingeben" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "Test-Beschreibung" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "Beschreibung für diesen Test eingeben" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Benötigt" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "Muss dieser Test erfolgreich sein?" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "Erfordert Wert" -#: part/models.py:3294 +#: part/models.py:3295 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:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "Anhang muss eingegeben werden" -#: part/models.py:3300 +#: part/models.py:3301 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:3346 msgid "Checkbox parameters cannot have units" -msgstr "" +msgstr "Checkbox-Parameter können keine Einheiten haben" #: part/models.py:3351 msgid "Checkbox parameters cannot have choices" @@ -5967,482 +6099,494 @@ msgstr "" #: part/models.py:3369 msgid "Choices must be unique" -msgstr "" +msgstr "Auswahl muss einzigartig sein" #: part/models.py:3385 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "Parameter-Beschreibung" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" -msgstr "" +msgstr "Checkbox" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" -msgstr "" +msgstr "Ist dieser Parameter eine Checkbox?" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" -msgstr "" +msgstr "Auswahlmöglichkeiten" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "Ausgangsteil" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "Wert" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "Standard-Wert" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "Standard Parameter Wert" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "Teilnummer oder Teilname" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "Eindeutige Teil-ID" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "IPN-Wert des Teils" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "Stufe" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "Stücklistenebene" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "Stücklisten-Position" + +#: part/models.py:3771 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "Untergeordnetes Teil" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "Optional" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "Diese Stücklisten-Position ist optional" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "Verbrauchsmaterial" - -#: part/models.py:3790 +#: part/models.py:3797 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:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Überschuss" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "Referenz der Postion auf der Stückliste" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "Notizen zur Stücklisten-Position" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "Prüfsumme" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "überprüft" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "Diese Stücklistenposition wurde validiert" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 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:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Varianten zulassen" -#: part/models.py:3823 +#: part/models.py:3830 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:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "Menge muss eine Ganzzahl sein" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "Zuliefererteil muss festgelegt sein" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "Stücklisten Ersatzteile" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "Übergeordnete Stücklisten Position" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "Ersatzteil" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "Teil 1" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "Teil 2" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "verknüpftes Teil auswählen" -#: part/models.py:4115 +#: part/models.py:4130 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:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "Doppelte Beziehung existiert bereits" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "Kaufwährung dieses Lagerartikels" -#: part/serializers.py:302 +#: part/serializers.py:346 +msgid "No parts selected" +msgstr "" + +#: part/serializers.py:354 +msgid "Select category" +msgstr "Kategorie auswählen" + +#: part/serializers.py:384 msgid "Original Part" msgstr "Originalteil" -#: part/serializers.py:302 +#: part/serializers.py:384 msgid "Select original part to duplicate" msgstr "Originalteil zum Duplizieren auswählen" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy Image" msgstr "Bild kopieren" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy image from original part" msgstr "Bild vom Originalteil kopieren" -#: part/serializers.py:312 part/templates/part/detail.html:296 +#: part/serializers.py:394 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Stückliste kopieren" -#: part/serializers.py:312 +#: part/serializers.py:394 msgid "Copy bill of materials from original part" msgstr "Stückliste vom Originalteil kopieren" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy Parameters" msgstr "Parameter kopieren" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy parameter data from original part" msgstr "Parameterdaten vom Originalteil kopieren" -#: part/serializers.py:327 +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "Anmerkungen kopieren" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 msgid "Initial Stock Quantity" msgstr "Start-Bestandsmenge" -#: part/serializers.py:327 +#: part/serializers.py:414 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:333 +#: part/serializers.py:420 msgid "Initial Stock Location" msgstr "Initialer Lagerort" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Specify initial stock location for this Part" msgstr "Lagerstandort für dieses Teil angeben" -#: part/serializers.py:343 +#: part/serializers.py:430 msgid "Select supplier (or leave blank to skip)" msgstr "Lieferant auswählen (oder leer lassen, um zu überspringen)" -#: part/serializers.py:354 +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "Hersteller auswählen (oder leer lassen, um zu überspringen)" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "Hersteller-Teilenummer" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "Ausgewählte Firma ist kein gültiger Lieferant" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "Ausgewählte Firma ist kein gültiger Hersteller" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "Herstellerteil mit dieser MPN existiert bereits" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "Lieferantenteil mit dieser SKU existiert bereits" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "Teil duplizieren" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "Initiale Daten von anderem Teil kopieren" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Initialer Lagerbestand" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "Erstelle Teil mit Ausgangsbestand" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "Lieferanteninformationen" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "Lieferanteninformationen zu diesem Teil hinzufügen" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "Kategorieparameter kopieren" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "Parametervorlagen aus der ausgewählten Teilkategorie kopieren" -#: part/serializers.py:842 +#: part/serializers.py:961 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:848 +#: part/serializers.py:967 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:854 +#: part/serializers.py:973 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:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "Bericht generieren" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "Erstelle Berichtsdatei mit berechneten Inventurdaten" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "Teile aktualisieren" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "Angegebene Teile mit berechneten Inventurdaten aktualisieren" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "Inventur-Funktionalität ist nicht aktiviert" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "Aktualisieren" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "Preis für dieses Teil aktualisieren" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "Teil auswählen, von dem Stückliste kopiert wird" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "Bestehende Daten entfernen" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "Bestehende Stücklisten-Positionen vor dem Kopieren entfernen" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "Vererbtes einschließen" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "Stücklisten-Positionen einbeziehen, die von Vorlage-Teilen geerbt werden" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "Ungültige Zeilen überspringen" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "Aktiviere diese Option, um ungültige Zeilen zu überspringen" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "Ersatzteile kopieren" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "Ersatzteile beim Duplizieren von Stücklisten-Positionen kopieren" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "Bestehende Stückliste löschen" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "Bestehende Stücklisten-Positionen vor dem Importieren entfernen" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "Keine Teilspalte angegeben" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "Mehrere übereinstimmende Teile gefunden" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "Keine passenden Teile gefunden" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "Teil ist nicht als Komponente angelegt" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "Menge nicht angegeben" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "Ungültige Menge" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "Mindestens eine Stückliste-Position ist erforderlich" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "Benachrichtigungen über geringen Bestand" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "Der verfügbare Bestand für {part.name} ist unter das konfigurierte Mindestniveau gefallen" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "Gesamtstückzahl" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "Gesamt-Bestandswert min" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "Gesamt-Bestandswert max" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "Inventurbericht verfügbar" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "Ein neuer Inventurbericht steht zum Download zur Verfügung" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "Benachrichtigungen über geringen Bestand" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "Der verfügbare Bestand für {part.name} ist unter das konfigurierte Mindestniveau gefallen" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "Sie haben keine Berechtigung zum Bearbeiten der Stückliste." @@ -6461,90 +6605,70 @@ msgstr "Die Stückliste für %(part)s wurde zuletzt von %(checker)s am msgid "The BOM for %(part)s has not been validated." msgstr "Die Stückliste für %(part)s wurde noch nicht kontrolliert." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "Stücklisten-Aktionen" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "Einträge löschen" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "Inventur für diese Teilekategorie durchführen" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "Sie haben Benachrichtigungen für diese Kategorie abonniert" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "Benachrichtigungen für diese Kategorie abonnieren" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "Kategorieaktionen" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "Kategorie bearbeiten" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "Kategorie bearbeiten" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "Kategorie löschen" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "Kategorie löschen" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "Oberste Teil-Kategorie" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Unter-Kategorien" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "Teile (inklusive Unter-Kategorien)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "Neues Teil anlegen" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "Neues Teil" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "Optionen" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "Teil-Kategorie auswählen" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "Teil-Kategorie auswählen" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "Teilparameter" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "Teil-Kategorie anlegen" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "Neue Kategorie" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "Terminierungsdaten aktualisieren" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "Neu laden" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "Inventurinformationen hinzufügen" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "Inventur" @@ -6604,101 +6728,101 @@ msgstr "Teil Test-Vorlagen" msgid "Add Test Template" msgstr "Test Vorlage hinzufügen" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "Verkaufsauftragszuweisungen" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "Teile-Notizen" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "Teil Varianten" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "Neue Variante anlegen" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "neue Variante anlegen" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "Parameter hinzufügen" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "Verknüpfte Teile" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "Verknüpftes Teil hinzufügen" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "Stückliste" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "Export-Aktionen" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "Stückliste exportieren" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "Stücklisten-Bericht drucken" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "Stücklisten-Aktionen" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "Stückliste hochladen" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "Stückliste überprüfen" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "Stücklisten-Position hinzufügen" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "Baugruppen" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "Gefertigte Teile" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "Bauauftragszuweisungen" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "Zulieferer" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "Teil-Hersteller" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "Herstellerteile löschen" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "verknüpftes Teil" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "verknüpftes Teil hinzufügen" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "Testergebnis-Vorlage hinzufügen" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "Teile-Importvorlage herunterladen" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: 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 "Format" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "Dateiformat auswählen" @@ -6747,158 +6871,158 @@ msgstr "Dateiformat auswählen" msgid "Part List" msgstr "Teileliste" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "Benachrichtigungen für dieses Teil abonnieren" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "Label drucken" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "Kosteninformationen ansehen" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "Bestands-Aktionen" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "Bestand zählen" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "Teilbestand verschieben" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "Teile Aktionen" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "Teil duplizieren" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "Teil bearbeiten" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "Teil löschen" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "Teil ist Vorlage (Varianten können von diesem Teil erstellt werden)" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "Teil kann aus anderen Teilen angefertigt werden" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "Teil kann in Baugruppen benutzt werden" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "Teil wird per Seriennummer verfolgt" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "Teil kann von externen Zulieferern gekauft werden" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "Teil kann an Kunden verkauft werden" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "Inaktiv" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "Teil ist virtuell (kein physisches Teil)" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "Teildetails anzeigen" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "Zu Bauaufträgen zugeordnet" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "Zur Bestellung zugeordnet" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "Herstellbar" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "Minimaler Bestand" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "Preisspanne" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "letzte Seriennummer" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "Nach Seriennummer suchen" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "Teil-QR-Code" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "Barcode mit Teil verknüpfen" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "Berechnen" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "Verknüpftes Bild von diesem Teil entfernen" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "Keine passenden Bilder gefunden" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "Teildetails ausblenden" @@ -6955,15 +7079,15 @@ msgstr "Varianten" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "Bestand" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "Bepreisung" @@ -6987,11 +7111,11 @@ msgstr "Preisübersicht" msgid "Refresh Part Pricing" msgstr "Preis aktualisieren" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "Zuletzt aktualisiert" @@ -7054,12 +7178,12 @@ msgstr "Verkaufspreise" msgid "Add Sell Price Break" msgstr "Verkaufspreisstaffel hinzufügen" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "Kein Bestand" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "niedriger Bestand" @@ -7108,37 +7232,36 @@ msgstr "Neue Teilevariante anlegen" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "Unbekannte Datenbank" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" -msgstr "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" +msgstr "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" #: part/views.py:110 msgid "Match References" msgstr "Referenzen zuteilen" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" -msgstr "Teil {name} kann nicht importiert werden, da keine Kategorie zugewiesen ist" +msgid "Can't import part {new_part.name} because there is no category assigned" +msgstr "Teil {new_part.name} kann nicht importiert werden, da keine Kategorie zugewiesen ist" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "Teilbild auswählen" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "Teilbild aktualisiert" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "Teilbild nicht gefunden" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "Teilbepreisung" @@ -7150,20 +7273,21 @@ msgstr "Keine Aktion angegeben" msgid "No matching action found" msgstr "Keine passende Aktion gefunden" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "Fehlende Barcode-Daten" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "Keine Treffer für Barcode" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "Treffer für Barcode gefunden" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "Barcode entspricht einem bereits vorhandenen Artikel" @@ -7171,7 +7295,53 @@ msgstr "Barcode entspricht einem bereits vorhandenen Artikel" msgid "No match found for provided value" msgstr "Kein Treffer für angegebenen Wert gefunden" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "Ungültiger Lagerort" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "Artikel wurde bereits erhalten" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "Labeldruck fehlgeschlagen" @@ -7185,6 +7355,11 @@ msgstr "Bietet native Unterstützung für Barcodes" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "InvenTree Mitwirkende" @@ -7222,242 +7397,409 @@ msgstr "Eingehender Webhook-URL für Slack" msgid "URL that is used to send messages to a slack channel" msgstr "URL, die verwendet wird, um Nachrichten an einen Slack-Kanal zu senden" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "Link öffnen" -#: plugin/models.py:27 +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "InvenTree PDF-Etikettendrucker" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "Debug-Modus" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "Seitengröße für das Labelblatt" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "Einen Rahmen um jedes Label drucken" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "Querformat" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "Labelblatt im Querformat drucken" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "InvenTree Etikettendrucker" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "Label ist zu groß für Seitengröße" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "Es wurden keine Etiketten generiert" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "Unterstützt das Scannen von DigiKey-Barcodes" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "Unterstützt das Scannen von LCSC-Barcodes" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "Lieferantenintegration - Mouser" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "Unterstützt das Scannen von Mouser-Barcodes" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "Lieferantenintegration - TME" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "Unterstützt das Scannen von TME-Barcodes" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" +msgstr "" + +#: plugin/models.py:28 msgid "Plugin Configuration" msgstr "Plugin-Konfiguration" -#: plugin/models.py:28 +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "Plugin-Konfigurationen" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "Schlüssel" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "Schlüssel des Plugins" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "Name des Plugins" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "Ist das Plugin aktiv" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "Installiert" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "Beispiel-Plugin" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "Integriertes Plugin" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "Plugin" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "Methode" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "Kein Autor gefunden" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "Bestellungen aktivieren" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "Kauf-Funktionalität in InvenTree aktivieren" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "API-Schlüssel" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "Schlüssel für den Zugriff auf das externe API" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "Numerisch" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "Eine numerische Einstellung" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "Auswahleinstellungen" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "Eine Einstellung mit mehreren Optionen" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "InvenTree Mitwirkende" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "Quell-URL" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Quelle für das Paket - dies kann eine eigene Registry oder ein VCS-Pfad sein" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "Paket-Name" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Name für das Plugin-Paket - kann auch einen Versionstext enthalten" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "Plugin-Installation bestätigen" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Dies wird dieses Plugin sofort in die aktuelle Instanz installieren. Die Instanz wird sofort in Wartung gehen." -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "Installation nicht bestätigt" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "Entweder Paketname oder URL muss angegeben werden" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" -msgstr "" +msgstr "Plugin aktivieren" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" -msgstr "" +msgstr "Dieses Plugin aktivieren" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "Keine korrekten Objekte für Vorlage gegeben" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Vorlagendatei '{template}' fehlt oder existiert nicht" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "Testbericht" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "A4" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "US-Legal" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "US-Letter" + +#: report/models.py:171 msgid "Template name" msgstr "Vorlagen Name" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "Bericht-Vorlage Datei" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "Bericht-Vorlage Beschreibung" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "Bericht Revisionsnummer (autom. erhöht)" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "Seitengröße für PDF-Berichte" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "Muster für die Erstellung von Berichtsdateinamen" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "Bericht-Vorlage ist ein" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Lagerartikel-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "einfügen Installiert in Tests" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "Test-Ergebnisse für Lagerartikel in Baugruppen einschließen" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "Bauauftrag Filter" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Bau-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "Teil Filter" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Teile-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "Bestellungs-Abfragefilter" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "Auftrags-Abfragefilter" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "Snippet" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "Berichts-Snippet" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "Snippet-Beschreibung" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "Ressource" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "Berichts-Ressource" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "Ressource-Beschreibung" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "Benötigte Materialien" @@ -7474,9 +7816,9 @@ msgstr "Lieferant gelöscht" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "Stück-Preis" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Seriennummer" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "Lagerartikel Test-Bericht" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "Testergebnisse" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "Test" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "Ergebnis" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "Verbaute Objekte" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Seriennummer" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "Standort-ID" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "Ortsname" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Lagerortpfad" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "Lagerartikel ID" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "Statuscode" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "Zuliefererteil-ID" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "Zulieferer ID" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "Lieferant" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "Kunden ID" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "verbaut in" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "Bauauftrag-ID" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "Auftrags-ID" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "Bestellungs-ID" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "Überprüfung erforderlich" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "Löschen wenn leer" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "Ablaufdatum" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "Externer Standort" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "Menge ist erforderlich" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "Gültiges Teil muss angegeben werden" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "Der angegebene Lieferantenartikel existiert nicht" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 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:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Bestand-Lagerort" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "Bestand-Lagerorte" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Besitzer" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "Besitzer auswählen" -#: stock/models.py:126 +#: stock/models.py:156 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:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Extern" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "Dies ist ein externer Lagerort" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 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:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "Lagerartikel können nicht in strukturelle Lagerorte abgelegt werden!" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "Für virtuelle Teile können keine Lagerartikel erstellt werden" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" -msgstr "Teile-Typ ('{pf}') muss {pe} sein" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "Anzahl muss für Objekte mit Seriennummer 1 sein" -#: stock/models.py:611 +#: stock/models.py:645 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:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "Teil kann nicht zu sich selbst gehören" -#: stock/models.py:639 +#: stock/models.py:673 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:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "Referenz verweist nicht auf das gleiche Teil" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "Eltern-Lagerartikel" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "Basis-Teil" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" -msgstr "Die Verpackung dieses Lagerartikel ist gelagert in" +msgstr "Verpackung, in der dieser Lagerartikel gelagert ist" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "Ist dieses Teil in einem anderen verbaut?" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "Losnummer für diesen Lagerartikel" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "Bestand" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "Quellbau" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "Bauauftrag für diesen Lagerartikel" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "Quelle Bestellung" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "Bestellung für diesen Lagerartikel" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "Ziel-Auftrag" -#: stock/models.py:790 +#: stock/models.py:824 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:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "Löschen wenn leer" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "Diesen Lagerartikel löschen wenn der Bestand aufgebraucht ist" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "Preis für eine Einheit bei Einkauf" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "In Teil umgewandelt" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "Teil ist nicht verfolgbar" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" -msgstr "Anzahl darf nicht die verfügbare Anzahl überschreiten ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "Seriennummern existieren bereits" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "Artikel wurde einem Kundenauftrag zugewiesen" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "Lagerartikel ist in anderem Element verbaut" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "Lagerartikel enthält andere Artikel" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "Artikel wurde einem Kunden zugewiesen" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "Lagerartikel wird aktuell produziert" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "Artikel duplizeren" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "Lagerartikel müssen auf dasselbe Teil verweisen" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "Lagerartikel müssen auf dasselbe Lieferantenteil verweisen" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "Status-Codes müssen zusammenpassen" -#: stock/models.py:1679 +#: stock/models.py:1735 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:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "Wert muss für diesen Test angegeben werden" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "Anhang muss für diesen Test hochgeladen werden" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "Name des Tests" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "Testergebnis" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "Test Ausgabe Wert" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "Test Ergebnis Anhang" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "Test Notizen" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "Seriennummer ist zu lang" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" -msgstr "" +msgstr "Einkaufspreis dieses Lagerartikels, pro Einheit oder Verpackungseinheit" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "Anzahl der zu serialisierenden Lagerartikel eingeben" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, 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:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "Seriennummern für neue Teile eingeben" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "Ziel-Bestand" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "Optionales Notizfeld" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "Seriennummern können diesem Teil nicht zugewiesen werden" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "Lagerartikel für Installation auswählen" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" -msgstr "Lagerartikel ist nicht verfügbar" +#: stock/serializers.py:496 +msgid "Quantity to Install" +msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" -msgstr "Ausgewähltes Teil ist nicht in der Stückliste" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" +msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "Ziel Lagerort für unverbautes Objekt" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr " Transaktionsnotizen hinzufügen (optional)" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "Lagerartikel ist nicht verfügbar" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "Ausgewähltes Teil ist nicht in der Stückliste" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "Ziel Lagerort für unverbautes Objekt" + +#: stock/serializers.py:615 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:521 +#: stock/serializers.py:625 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:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "Ziel Lagerort für zurückgegebene Artikel" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "Teil muss verkaufbar sein" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "Artikel ist einem Kundenauftrag zugeordnet" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "Artikel ist einem Fertigungsauftrag zugeordnet" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "Kunde zum Zuweisen von Lagerartikel" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "Ausgewählte Firma ist kein Kunde" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "Notizen zur Lagerzuordnung" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "Eine Liste der Lagerbestände muss angegeben werden" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "Notizen zur Lagerartikelzusammenführung" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "Unterschiedliche Lieferanten erlauben" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Lieferanten erlauben" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "Unterschiedliche Status erlauben" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Status-Codes erlauben" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "Mindestens zwei Lagerartikel müssen angegeben werden" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "Primärschlüssel Lagerelement" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "Bestandsbewegungsnotizen" @@ -8034,263 +8434,271 @@ msgstr "Bestandsbewegungsnotizen" msgid "Stock Tracking Information" msgstr "Informationen zur Bestand-Verfolgung" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "Kind-Lagerartikel" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "Dieser Lagerartikel hat keine Kinder" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "Testdaten" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "Test-Bericht" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "Testdaten löschen" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "Testdaten hinzufügen" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "Lagerartikel-Notizen" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "Installierte Lagerartikel" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "Lagerartikel installieren" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "Alle Testergebnisse für diesen Lagerartikel löschen" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "Testergebnis hinzufügen" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "Lagerbestand lokalisieren" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "zu Lagerort einscannen" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "Druck Aktionen" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "Bestands-Anpassungs Aktionen" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "Bestand zählen" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "Bestand hinzufügen" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "Bestand entfernen" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "Bestand serialisieren" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "Bestand verschieben" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "Kunden zuweisen" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "zu Bestand zurückgeben" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "Lagerartikel deinstallieren" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "Deinstallieren" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "Lagerartikel installieren" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "Installieren" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "in Variante ändern" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "Lagerartikel duplizieren" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "Lagerartikel bearbeiten" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "Lagerartikel löschen" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Bauauftrag" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "Elternposition" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "Kein Hersteller ausgewählt" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "Sie gehören nicht zu den Eigentümern dieses Objekts und können es nicht ändern." -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "Nur Leserechte" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" -msgstr "" +msgstr "Dieser Lagerartikel ist nicht verfügbar" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "Dieser Lagerartikel wird gerade hergestellt und kann nicht geändert werden." -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "Ändern des Lagerartikel in der Bauauftrag-Ansicht." -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "Dieser Lagerartikel ist einem Auftrag zugewiesen" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "Dieser Lagerartikel ist einem Bauauftrag zugewiesen" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "vorherige Seite" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "Zur vorherigen Seriennummer wechseln" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "nächste Seite" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "Zur nächsten Seriennummer wechseln" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "Verfügbare Menge" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "Kein Lagerort gesetzt" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "Tests" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "Dieser Lagerartikel hat nicht alle Tests bestanden" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "Dieser Lagerartikel lief am %(item.expiry_date)s ab" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "abgelaufen" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "Dieser Lagerartikel läuft am %(item.expiry_date)s ab" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "überfällig" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "Keine Inventur ausgeführt" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "Bestandsstatus bearbeiten" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "Lagerartikel-QR-Code" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "Barcode mit Lagerartikel verknüpfen" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 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:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "Warnung" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "Diese Aktion kann nicht einfach rückgängig gemacht werden" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "Lagerartikel umwandeln" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "zurück ins Lager" @@ -8302,82 +8710,86 @@ msgstr "Teile mit Seriennummern mit diesem BestandObjekt anlegen." msgid "Select quantity to serialize, and unique serial numbers." msgstr "Zu serialisierende Anzahl und eindeutige Seriennummern angeben." -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "Inventur für diesen Lagerort durchführen" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "Lagerort lokalisieren" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "Lagerartikel per Barcode-Scan zu diesem Lagerort hinzufügen" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "Lagerartikel einscannen" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "Lagerort hierher einscannen" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "Lagerort scannen" -#: stock/templates/stock/location.html:102 +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 msgid "Location actions" msgstr "Lagerort-Aktionen" -#: stock/templates/stock/location.html:104 +#: stock/templates/stock/location.html:106 msgid "Edit location" msgstr "Lagerort bearbeiten" -#: stock/templates/stock/location.html:106 +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "Lagerort löschen" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "Oberster Lagerstandort" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "Standortbesitzer" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "Sie sind nicht auf der Liste der Besitzer dieses Lagerorts. Der Bestands-Lagerort kann nicht verändert werden." -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Unter-Lagerorte" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "Neuen Lagerort anlegen" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "Neuer Lagerort" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "Lagerort an diesen Ort eingescannt" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "QR-Code für diesen Lagerort" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "Barcode mit Lagerort verknüpfen" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "Sie wurden von InvenTree abgemeldet." #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "Einloggen" @@ -8451,71 +8863,71 @@ msgstr "Die Seite ist derzeit in Wartung und sollte bald wieder verfügbar sein! msgid "Index" msgstr "Index" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "Abonnierte Teile" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "Abonnierte Kategorien" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "neueste Teile" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "Stücklisten erwarten Kontrolle" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "kürzlich aktualisiert" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "Verbrauchter Bestand" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "Für Bauaufträge benötigt" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "abgelaufener Bestand" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "Bestand überfällig" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "laufende Bauaufträge" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "überfällige Bauaufträge" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "ausstehende Bestellungen" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "überfällige Bestellungen" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "ausstehende Aufträge" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "überfällige Aufträge" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "InvenTree Neuigkeiten" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "Aktuelle Neuigkeiten" @@ -8541,7 +8953,7 @@ msgstr "Alle als gelesen markieren" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "Benachrichtigungen" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "Lösche alle gelesenen Benachrichtigungen" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "Benachrichtigung löschen" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "Single Sign On" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "Einstellungen" @@ -8651,7 +9063,7 @@ msgstr "Teileimport" msgid "Import Part" msgstr "Teil importieren" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "Teil-Parametervorlage" @@ -8659,12 +9071,21 @@ msgstr "Teil-Parametervorlage" msgid "Stocktake Settings" msgstr "Inventur-Einstellungen" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "Inventurberichte" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "Physikalische Einheiten" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "Einheit hinzufügen" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "Plugin-Einstellungen" @@ -8672,30 +9093,30 @@ msgstr "Plugin-Einstellungen" msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." msgstr "Wenn Sie die folgenden Einstellungen ändern, müssen Sie InvenTree sofort neu starten. Ändern Sie dies nicht während der aktiven Nutzung." -#: templates/InvenTree/settings/plugin.html:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "Plugins" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "Plugin installieren" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "Externe Plugins sind für diese InvenTree-Installation nicht aktiviert" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "Plugin-Fehlerstapel" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "Stufe" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "Meldung" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "Plugin-Informationen" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "Version" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "Installationspfad" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "Integriert" @@ -8749,32 +9171,34 @@ msgstr "Integriert" msgid "This is a builtin plugin which cannot be disabled" msgstr "Dies ist ein integriertes Plugin, das nicht deaktiviert werden kann" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "Beispiel" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "Dies ist ein Beispiel-Plugin" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "Commit-Autor" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "Commit-Datum" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "Commit-Hash" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "Commit-Nachricht" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "Signaturstatus" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "Signatur Schlüssel" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "Bestellungs-Einstellungen" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "Kein Wert angegeben" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "Einstellungen ändern" @@ -8851,50 +9275,103 @@ msgstr "Benutzereinstellungen bearbeiten" msgid "Rate" msgstr "Kurs" -#: templates/InvenTree/settings/settings_staff_js.html:64 +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "Bearbeiten" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Löschen" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 msgid "Edit Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "Keine Kategorie-Parametervorlagen gefunden" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "Vorlage bearbeiten" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "Vorlage löschen" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "Kategorieparametervorlage löschen" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "Kategorieparametervorlage anlegen" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "Teilparametervorlage anlegen" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "Startseite" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "Suche" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "Berichte" @@ -8932,11 +9409,11 @@ msgstr "Allgemeine Einstellungen" msgid "Server" msgstr "Server" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "Etiketten" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "Kategorien" @@ -8948,6 +9425,10 @@ msgstr "Auftrags-Einstellungen" msgid "Stock Settings" msgstr "Bestands-Einstellungen" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "Kontoeinstellungen" @@ -8958,13 +9439,6 @@ msgstr "Kontoeinstellungen" msgid "Change Password" msgstr "Passwort ändern" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "Bearbeiten" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "Benutzername" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "Nicht verifiziert" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "Primär" @@ -9182,11 +9657,11 @@ msgstr "Es sind keine sozialen Netzwerke mit diesem Konto verbunden." #: templates/InvenTree/settings/user_sso.html:58 msgid "Add SSO Account" -msgstr "" +msgstr "SSO-Konto hinzufügen" #: templates/InvenTree/settings/user_sso.html:67 msgid "Single Sign On is not enabled for this server" -msgstr "" +msgstr "Single-Sign-On ist für diesen Server nicht aktiviert" #: templates/about.html:9 msgid "InvenTree Version" @@ -9204,44 +9679,48 @@ msgstr "Aktuell" msgid "Update Available" msgstr "Aktualisierung verfügbar" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "InvenTree-Dokumentation" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "API-Version" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "Python-Version" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "Django-Version" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "Code auf GitHub ansehen" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "Danksagung" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "Mobile App" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "Fehlerbericht senden" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "In die Zwischenablage kopieren" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "Versionsinformationen kopieren" @@ -9259,7 +9738,7 @@ msgstr "E-Mail-Adresse bestätigen" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "Bitte bestätigen Sie, dass %(email)s eine E-Mail-Adresse für den Benutzer %(user_display)s ist." -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Bestätigen" @@ -9435,30 +9914,30 @@ msgstr "Link hinzufügen" msgid "Add Attachment" msgstr "Anhang hinzufügen" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "Markierte Anhänge löschen" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "Anhänge entfernen" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "Barcode-Bezeichner" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "Server-Neustart erforderlich" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "Eine Konfigurationsoption wurde geändert, die einen Neustart des Servers erfordert" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "Bitte kontaktieren Sie Ihren Administrator für mehr Informationen" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "Ausstehende Datenbankmigrationen" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,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:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "Benötigte Menge" @@ -9501,15 +9980,15 @@ 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:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "Mindestmenge" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "Keine Antwort" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "keine Antwort vom InvenTree Server" @@ -9521,27 +10000,27 @@ msgstr "Fehler 400: Fehlerhafte Anfrage" msgid "API request returned error code 400" msgstr "Fehler-Code 400 zurückgegeben" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "Fehler 401: Nicht Angemeldet" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "Authentication Kredentials nicht angegeben" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "Fehler 403: keine Berechtigung" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "Fehlende Berechtigung für diese Aktion" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "Fehler 404: Ressource nicht gefunden" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "Die angefragte Ressource kann auf diesem Server nicht gefunden werden" @@ -9553,19 +10032,27 @@ msgstr "Fehler 405: Methode nicht erlaubt" msgid "HTTP method not allowed at URL" msgstr "HTTP-Methode für diese URL nicht erlaubt" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "Fehler 408: Zeitüberschreitung" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "Verbindungszeitüberschreitung bei der Datenanforderung" #: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "Fehler 503: Service nicht erreichbar" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "Der Server ist derzeit nicht erreichbar" + +#: templates/js/translated/api.js:265 msgid "Unhandled Error Code" msgstr "Unbehandelter Fehler-Code" -#: templates/js/translated/api.js:262 +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "Fehler-Code" @@ -9573,23 +10060,35 @@ msgstr "Fehler-Code" msgid "All selected attachments will be deleted" msgstr "Alle ausgewählten anhänge werden gelöscht" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "Anhänge entfernen" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "Anhänge löschen" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "Keine Anhänge gefunden" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "Anhang bearbeiten" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "Hochladedatum" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "Anhang bearbeiten" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "Anhang löschen" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "Unbekannte Antwort von Server erhalten" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "Ungültige Antwort von Server" @@ -9646,7 +10145,7 @@ msgstr "Dadurch wird der Link zu dem zugehörigen Barcode entfernt" msgid "Unlink" msgstr "Entfernen" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "Lagerartikel entfernen" @@ -9704,743 +10203,839 @@ msgstr "In Lagerorten buchen" msgid "Barcode does not match a valid location" msgstr "Barcode entspricht keinem Lagerort" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "Stücklisten-Position anlegen" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "Zeilendaten anzeigen" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "Zeilendaten" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "Schliessen" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "Vorlage einer Stückliste herunterladen" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "Multilevel Stückliste" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "Stücklisten-Daten für Untergruppen einbeziehen" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "Ebenen" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "Maximale Anzahl an Ebenen für Stückliste-Export auswählen (0 = alle Ebenen)" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "Alternative Teile einbeziehen" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "Alternative Teile in exportierte Stückliste einbeziehen" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "Parameter-Daten einschließen" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "Teile-Parameter in Stücklisten-Export einschließen" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "Bestand einschließen" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "Teil-Bestand in Stückliste-Export einschließen" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "Herstellerdaten einschließen" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "Teil-Herstellerdaten in Stückliste-Export einschließen" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "Zulieferer einschließen" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "Zulieferer-Daten in Stückliste-Export einschließen" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "Preisdaten einschließen" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "Preisinformationen in Stücklisten-Export einschließen" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "Ersatzteil entfernen" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "Wählen Sie ein neues Ersatzteil aus und fügen Sie sie mit den folgenden Eingaben hinzu" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "Sind Sie sicher, dass Sie dieses Ersatzteil entfernen möchten?" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "Ersatzteil entfernen" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "Ersatzteil hinzufügen" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "Stücklisten Ersatzteile bearbeiten" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "Alle ausgewählte Stücklistenpositionen werden gelöscht" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "Ausgewählte Stücklistenpositionen löschen?" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "Stückliste für Bauteile laden" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "Ersatzteile verfügbar" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "Varianten erlaubt" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "Ersatzteile" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "Stücklisten-Bepreisung ist vollständig" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "Stücklisten-Bepreisung ist unvollständig" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "Keine Preisinformation verfügbar" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "Kein Lagerbestand verfügbar" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "Beinhaltet Variante und Ersatzbestand" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "Beinhaltet Variantenbestand" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "Enthält Ersatzbestand" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "Verbrauchsartikel" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "Stücklisten-Position kontrollieren" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "Diese Position wurde kontrolliert" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "Ersatzteile bearbeiten" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "Stücklisten-Position bearbeiten" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "Stücklisten-Position löschen" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "Stückliste anzeigen" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "Keine Stücklisten-Position(en) gefunden" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "benötigtes Teil" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "Geerbt von übergeordneter Stückliste" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "Bauauftrag bearbeiten" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "Bauauftrag erstellen" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "Bauauftrag abbrechen" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "Sind Sie sicher, dass sie diesen Bauauftrag abbrechen möchten?" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "Lagerbestand wurde zu diesem Bauauftrag hinzugefügt" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "Für diesen Bau-Auftrag sind noch unvollständige Endprodukte vorhanden" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "Bauauftrag ist bereit abgeschlossen zu werden" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "Dieser Bauauftrag kann nicht abgeschlossen werden, da es unfertige Endprodukte gibt" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "Bauauftrag ist unvollständig" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "Bauauftrag fertigstellen" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "Nächste verfügbare Seriennummer" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "Letzte Seriennummer" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "Die Stückliste enthält verfolgbare Teile" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "Endprodukte müssen individuell angelegt werden" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "Nachverfolgbare Teile können Seriennummern haben" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "Seriennummeren für mehrere einzelne Endprodukte angeben" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "Endprodukt anlegen" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "Lagerartikel zu diesem Endprodukt zuweisen" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" -msgstr "Bestand von Endpordukt zurücknehmen" - #: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" +msgstr "" + +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "Endprodukt fertigstellen" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "Endprodukt entfernen" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" -msgstr "Sind Sie sicher, dass sie alle Lagerartikel von diesem Bauauftrag entfernen möchten?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" +msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" -msgstr "Lagerartikel zurücknehmen" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" +msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "Endprodukte auswählen" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "Mindestens ein Endprodukt muss ausgewählt werden" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "Endprodukt" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "Endprodukte fertigstellen" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "Endprodukte entfernen" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "Keine Allokationen für Bauauftrag gefunden" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "Standort nicht angegeben" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "Endprodukte fertigstellen" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "Endprodukte löschen" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "Keine aktiven Endprodukte gefunden" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" -msgstr "Bestand zuteilen" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" +msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" -msgstr "Keine nachverfolgten Stücklisten-Einträge für diesen Bauauftrag" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" +msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "Abgeschlossene Tests" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "Keine erforderlichen Tests für diesen Bauauftrag" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "Bestands-Zuordnung bearbeiten" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "Bestands-Zuordnung löschen" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "Zuordnung bearbeiten" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "Zuordnung entfernen" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "Ersatzteile verfügbar" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "Anzahl pro" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "Unzureichender Bestand verfügbar" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "Ausreichender Bestand verfügbar" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "Bestand bauen" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "Bestand bestellen" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "Bestand zuweisen" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "Teile auswählen" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "Sie müssen mindestens ein Teil auswählen" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "Anzahl für Bestandszuordnung eingeben" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "Alle Teile zugeordnet" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "Alle ausgewählten Teile wurden vollständig zugeordnet" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 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:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "Lagerartikel für Bauauftrag zuweisen" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "Keine passenden Lagerstandorte" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "Keine passenden Lagerbestände" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "Automatische Lagerzuordnung" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 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:2665 +#: templates/js/translated/build.js:1928 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:2666 +#: templates/js/translated/build.js:1929 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:2667 +#: templates/js/translated/build.js:1930 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "Wenn ein Ersatzbestand erlaubt ist, wird es dort verwendet, wo kein Vorrat des Primärteils gefunden werden kann" -#: templates/js/translated/build.js:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "Lagerartikel zuordnen" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "Keine Bauaufträge passen zur Anfrage" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "Auswählen" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "Bauauftrag ist überfällig" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "Fortschritt" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "Keine Benutzerinformation" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "Gruppe" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" -msgstr "Keine Teile zugeordnet zu" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" +msgstr "Bestands-Zuordnung bearbeiten" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "Bestands-Zuordnung löschen" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "Zuordnung bearbeiten" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "Zuordnung entfernen" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "Nachverfolgbares Teil" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "Unzureichender Bestand verfügbar" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "Ausreichender Bestand verfügbar" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "Bestand bauen" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "Bestand bestellen" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "Bestand zuweisen" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "Hersteller hinzufügen" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "Herstellerteil hinzufügen" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "Herstellerteil ändern" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "Zulieferer hinzufügen" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "Zuliefererteil hinzufügen" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "Alle ausgewählten Zulieferteile werden gelöscht" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "Zuliefererteil entfernen" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "Neue Firma hinzufügen" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "Teile geliefert" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "Hersteller-Teile" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "Keine Firmeninformation gefunden" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" -msgstr "" +msgstr "Neuen Kontakt erstellen" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "" +msgstr "Kontakt bearbeiten" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" -msgstr "" - -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 -msgid "Role" -msgstr "" +msgstr "Alle ausgewählten Kontakte werden gelöscht" #: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 +msgid "Role" +msgstr "Rolle" + +#: templates/js/translated/company.js:676 msgid "Delete Contacts" -msgstr "" +msgstr "Kontakte löschen" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" -msgstr "" +msgstr "Keine Kontakte gefunden" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "" +msgstr "Telefonnummer" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "" +msgstr "E-Mail-Adresse" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" +msgstr "Kontakt löschen" + +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "Neue Adresse erstellen" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "Adresse bearbeiten" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "Alle ausgewählten Adressen werden gelöscht" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "Adressen löschen" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "Keine Addressen gefunden" + +#: templates/js/translated/company.js:979 +msgid "Postal city" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "Bundesland" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "Kurierhinweise" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "Interne Hinweise" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "Adresse löschen" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "Alle ausgewählten Herstellerrteile werden gelöscht" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "Herstellerteile löschen" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "Alle ausgewählten Parameter werden gelöscht" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "Parameter löschen" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "Teile bestellen" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "Herstellerteile löschen" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "Keine Herstellerteile gefunden" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "Vorlagenteil" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "Baugruppe" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "Keine Parameter gefunden" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "Parameter bearbeiten" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "Parameter löschen" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "Parameter bearbeiten" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "Parameter löschen" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "Zuliefererteil entfernen" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "Keine Zuliefererteile gefunden" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "Verfügbarkeit" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "Zuliefererteil bearbeiten" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "Zuliefererteil entfernen" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "Preisstaffel löschen" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "Preisstaffel bearbeiten" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "Keine Informationen zur Preisstaffel gefunden" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "Zuletzt aktualisiert" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "Preisstaffel bearbeiten" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "Preisstaffel löschen" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "ja" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "nein" @@ -10448,89 +11043,89 @@ msgstr "nein" msgid "Select filter" msgstr "Filter auswählen" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" -msgstr "" +msgstr "Etiketten drucken" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" -msgstr "" +msgstr "Berichte drucken" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "Filter hinzufügen" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "Filter entfernen" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "Filter anlegen" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "Aktion verboten" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "Erstellvorgang nicht erlaubt" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "Updatevorgang nicht erlaubt" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "Löschvorgang nicht erlaubt" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "Anzeigevorgang nicht erlaubt" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "Dieses Formular offen lassen" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "Gib eine gültige Nummer ein" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "Fehler in Formular" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "Keine Ergebnisse gefunden" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "Suche" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "Eingabe leeren" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "Dateispalte" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "Feldname" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "Spalten auswählen" @@ -10544,104 +11139,124 @@ msgstr "NEIN" #: templates/js/translated/helpers.js:93 msgid "True" -msgstr "" +msgstr "Wahr" #: templates/js/translated/helpers.js:94 msgid "False" +msgstr "Falsch" + +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" -msgstr "Drucker auswählen" - -#: templates/js/translated/label.js:62 -msgid "Export to PDF" -msgstr "Als PDF exportieren" - -#: templates/js/translated/label.js:114 -msgid "selected" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "Label-Vorlage auswählen" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "Keine Labels gefunden" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "Label an den Drucker gesendet" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "Abbrechen" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "Abschicken" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "Formulartitel" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "Warte auf Server..." -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "Fehler-Informationen anzeigen" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "Akzeptieren" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "Lade Daten" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "ungültige Antwort vom Server" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "Formulardaten fehlen bei Serverantwort" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "Formulardaten fehlerhaft" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "JSON Antwort enthält keine Formulardaten" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "Fehler 400: Ungültige Anfrage" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "Fehler 400 von Server erhalten" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "Fehler bei Formulardaten-Anfrage" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "Keine Nachrichten gefunden" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "ID" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "Alter" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "Benachrichtigung" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "Als ungelesen markieren" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "Als gelesen markieren" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "Keine ungelesenen Benachrichtigungen" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "Benachrichtigungen erscheinen hier" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "Zeile löschen" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "Keine Positionen gefunden" @@ -10716,363 +11331,355 @@ msgstr "Zeile bearbeiten" msgid "Delete line" msgstr "Zeile löschen" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "Teileigenschaften" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "Erstellungsoptionen für Teile" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "Einstellungen für Teilkopien" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "Teil-Kategorie hinzufügen" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "Übergeordnete Teilkategorie" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "Icon (optional) - alle verfügbaren Icons einsehbar auf" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "Teil-Kategorie hinzufügen" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "Teil-Kategorie bearbeiten" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "Möchten Sie diese Kategorie wirklich löschen?" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "In übergeordnete Kategorie verschieben" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "Teil-Kategorie löschen" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "Aktion für Teile in dieser Kategorie" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "Aktion für Unterkategorien" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "Teil hinzufügen" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "Ein weiteres Teil anlegen" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "Teil erfolgreich angelegt" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "Teil bearbeiten" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "Teil bearbeitet" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "Teil-Variante anlegen" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "Aktives Teil" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "Teil kann nicht gelöscht werden, da es derzeit aktiv ist" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "Das Löschen dieses Teils kann nicht rückgängig gemacht werden" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "Alle Lagerartikel für dieses Teil werden gelöscht" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "Dieses Teil wird von allen Stücklisten entfernt" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "Alle Hersteller- und Zuliefererinformationen für dieses Teil werden gelöscht" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "Teil löschen" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "Benachrichtigungen für dieses Teil abonnieren" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "Sie haben Benachrichtigungen für dieses Teil abgemeldet" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "Die Stückliste zu validieren markiert jede Zeile als gültig" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "Stückliste prüfen" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "überprüfte Stückliste" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "Stückliste kopieren" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "Bestand niedrig" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "Kein Lagerbestand verfügbar" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "Bedarf" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "Einheit" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "Nachverfolgbares Teil" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "virtuelles Teil" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "Abonnierter Teil" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "Verkäufliches Teil" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "Die Erstellung eines neuen Inventurberichtes planen." -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "Nach Fertigstellung steht der Inventurbericht zum Download zur Verfügung." -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "Inventurbericht generieren" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "Inventurbericht geplant" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "Keine Inventurinformationen verfügbar" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "Inventureintrag bearbeiten" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "Inventureintrag löschen" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "Keine Varianten gefunden" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "Keine Teilparametervorlagen gefunden" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "Teilparametervorlage bearbeiten" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "Alle Parameter, die diese Vorlage referenzieren, werden ebenfalls gelöscht" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "Teilparametervorlage löschen" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "Keine Bestellungen gefunden" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "Diese Position ist überfällig" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "Position empfangen" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "Teile-Beziehung löschen" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "Teile-Beziehung löschen" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "Keine Teile gefunden" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "Keine Kategorie" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "Listenansicht" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "Rasteransicht" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "Legen Sie die Teilkategorie für die ausgewählten Teile fest" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "Teil-Kategorie auswählen" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" -msgstr "Teil-Kategorie wählen" +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "Teil-Kategorie auswählen" -#: templates/js/translated/part.js:2495 -msgid "Category is required" -msgstr "Kategorie erforderlich" +#: templates/js/translated/part.js:2283 +msgid "parts" +msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "Keine Kategorie" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "Listenansicht" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "Rasteransicht" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "Baumansicht" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "Unterkategorien laden" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "Abonnierte Kategorie" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "Keine zur Anfrage passenden Testvorlagen" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "Testergebnis bearbeiten" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "Testergebnis löschen" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "Dieses Testergebnis ist für ein Hauptteil" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "Testergebnis-Vorlage bearbeiten" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "Testergebnis-Vorlage löschen" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "Kein Datum angegeben" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "Das angegebene Datum liegt in der Vergangenheit" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "Spekulativ" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "Keine Zeitplanung für dieses Teil vorhanden" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "Fehler beim Abrufen der Zeitplanungsinformationen für dieses Teil" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "Geplante Lagermengen" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "Maximale Anzahl" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "Minimaler Lagerbestand" @@ -11080,53 +11687,49 @@ msgstr "Minimaler Lagerbestand" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "Beispiel" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "Das Plugin wurde installiert" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" -msgstr "" +msgstr "Aktivieren" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" -msgstr "" +msgstr "Deaktivieren" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" -msgstr "" +msgstr "Plugin aktualisiert" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" @@ -11148,254 +11751,254 @@ msgstr "Keine Staffelpreisdaten verfügbar" msgid "No purchase history data available" msgstr "Keine Einkaufshistorie verfügbar" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "Kaufpreisverlauf" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "Keine Verkaufshistorie verfügbar" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "Verkaufspreisverlauf" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "Keine Variantendaten verfügbar" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "Variantenteil" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "Bestellung zum Duplizieren auswählen" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "Positionen duplizieren" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "Alle Positionen der ausgewählten Bestellung duplizieren" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "Zusätzliche Zeilen duplizieren" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "Zusätzliche Positionen der ausgewählten Bestellung duplizieren" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "Bestellung bearbeiten" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "Duplizierungsoptionen" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "Bestellung vervollständigen" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "Diese Bestellung als vollständig markieren?" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "Alle Einträge wurden erhalten" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 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:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "Fertigstellen dieser Bestellung bedeutet, dass sie und ihre Positionen nicht länger bearbeitbar sind." -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "Bestellung abbrechen" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "Sind Sie sicher, dass Sie diese Bestellung abbrechen möchten?" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "Diese Bestellung kann nicht storniert werden" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "Bestellung aufgeben" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "Mindestens ein kaufbares Teil muss ausgewählt werden" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "Zu bestellende Menge" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "Neues Zuliefererteil" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "Neue Bestellung" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "Zur Bestellung hinzufügen" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "Keine passenden Lieferantenteile" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "Keine passenden Bestellungen" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "Positionen auswählen" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "Mindestens eine Position muss ausgewählt werden" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "Gelieferte Menge" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "Zu erhaltende Menge" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "Status" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" -msgstr "" +msgstr "Barcode hinzufügen" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" -msgstr "" +msgstr "Barcode entfernen" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "Losnummer hinzufügen" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "Seriennummern hinzufügen" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "Bestellnummer" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "Zu erhaltende Menge" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "Empfang der Teile bestätigen" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "Bestellpositionen erhalten" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "Bestellung überfällig" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "Positionen" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "Alle ausgewählten Positionen werden gelöscht" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "Ausgewählte Positionen löschen?" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "Position duplizieren" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "Position bearbeiten" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "Position löschen" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "Position duplizieren" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "Position bearbeiten" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "Position löschen" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "Kunden hinzufügen" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "Ungültiger Kunde" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "Keine passenden Positionen gefunden" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "Auftrag anlegen" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "Auftrag bearbeiten" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "Dieser Sendung wurden keine Artikel zugewiesen" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "Die folgenden Artikel werden verschickt" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "Sendung fertigstellen" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "Sendung bestätigen" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "Keine ausstehenden Sendungen gefunden" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "Keine Lagerartikel für offene Sendungen zugewiesen" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "Abgeschlossene Sendungen" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "Überspringen" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 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:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "Auftrag stornieren" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "Abbruch dieser Bestellung bedeutet, dass sie nicht länger bearbeitbar ist." -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "Sendung anlegen" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "Keine Aufträge gefunden" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "Sendung bearbeiten" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "Sendung fertigstellen" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "Sendung löschen" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "Sendung bearbeiten" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "Sendung löschen" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "Keine passenden Sendungen gefunden" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "Sendungsreferenz" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "Nicht versandt" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "Nachverfolgen" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "Rechnung" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "Sendung hinzufügen" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "Bestandszuordnung bestätigen" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "Artikel zu Kundenauftrag zuweisen" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "Keine Allokationen für Verkaufsaufträge gefunden" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "Bestandszuordnung bearbeiten" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "Löschvorgang bestätigen" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "Bestands-Zuordnung löschen" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "an Kunde versand" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "Lagerstandort nicht angegeben" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "Seriennummern zuweisen" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "Bestand kaufen" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "Preis berechnen" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "Kann nicht gelöscht werden, da Artikel versandt wurden" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "Kann nicht gelöscht werden, da Artikel zugewiesen sind" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "Seriennummern zuweisen" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "Stückpreis aktualisieren" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "Keine Ergebnisse" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "Suchbegriff eingeben" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "Ergebnisse minimieren" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "Ergebnisse entfernen" @@ -11679,686 +12282,726 @@ msgstr "Lagerartikel serialisieren" msgid "Confirm Stock Serialization" msgstr "Lager-Serialisierung bestätigen" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "Übergeordneter Lagerort" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "Lagerartikel-Ort bearbeiten" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "Neuer Lagerstandort" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "Sind Sie sicher, dass Sie diesen Lagerort löschen wollen?" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "Zum übergeordneten Lagerbestand verschieben" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "Bestand-Lagerort löschen" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "Aktion für Lagerartikel in diesem Lagerort" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "Aktion für Unter-Lagerorte" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "Dieser Teil kann nicht serialisiert werden" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "Ausgangsmenge für diesen Lagerartikel eingeben" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Seriennummern für neue Lagerartikel eingeben (oder leer lassen)" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "Lagerartikel dupliziert" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "Bestand duplizieren" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "Sind Sie sicher, dass Sie diesen Lagerartikel löschen wollen?" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "Lagerartikel löschen" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "Lagerartikel bearbeiten" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "Neuer Lagerartikel erstellt" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "Mehrere Lagerartikel erstellt" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "Seriennummer finden" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "Seriennummer eingeben" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "Eine Seriennummer eingeben" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "Keine passende Seriennummer" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "Mehrere Ergebnisse gefunden" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "Bestand Zuweisung bestätigen" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "Einem Kunden zuordnen" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "Achtung: Das Zusammenführen kann nicht rückgängig gemacht werden" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "Einige Informationen gehen verloren, wenn Artikel zusammengeführt werden" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "Lagerartikelverlauf wird für zusammengeführte Lagerartikel gelöscht" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "Lieferantenteil-Informationen werden für zusammengeführte Artikel gelöscht" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "Zusammenführung der Artikel bestätigen" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "Artikel zusammenführen" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "Bestand verschieben" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "Verschieben" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "Bestand zählen" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "Anzahl" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "Bestand entfernen" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "Entfernen" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "Bestand hinzufügen" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "Hinzufügen" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "Bestand löschen" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "Menge von serialisiertem Bestand kann nicht bearbeitet werden" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "Bestandsanzahl angeben" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "Lagerartikel auswählen" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" -msgstr "Sie müssen mindestens einen Lagerartikel auswählen" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "Bestands-Anpassung bestätigen" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "ERFOLGREICH" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "FEHLGESCHLAGEN" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "KEIN ERGEBNIS" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "Test bestanden" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "Testergebnis hinzufügen" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "Keine Testergebnisse gefunden" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "Testdatum" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "Testergebnis bearbeiten" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "Testergebnis löschen" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "In Arbeit" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "In Lagerartikel installiert" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "Auftrag zugewiesen" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "Kein Lagerort gesetzt" -#: templates/js/translated/stock.js:1746 +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "Bestand zusammenführen" + +#: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "Bestand löschen" + +#: templates/js/translated/stock.js:1923 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1850 +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 msgid "Stock item is in production" msgstr "Lagerartikel wird produziert" -#: templates/js/translated/stock.js:1855 +#: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" msgstr "Lagerartikel wurde Auftrag zugewiesen" -#: templates/js/translated/stock.js:1858 +#: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" msgstr "Lagerartikel wurde Kunden zugewiesen" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" msgstr "Serialisierter Lagerartikel wurde zugewiesen" -#: templates/js/translated/stock.js:1863 +#: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" msgstr "Lagerartikel wurde vollständig zugewiesen" -#: templates/js/translated/stock.js:1865 +#: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" msgstr "Lagerartikel wurde teilweise zugewiesen" -#: templates/js/translated/stock.js:1868 +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "Lagerartikel in anderem Element verbaut" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "Lagerartikel ist abgelaufen" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "Lagerartikel läuft demnächst ab" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "Lagerartikel abgewiesen" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "Lagerartikel verloren" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "Lagerartikel zerstört" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "gelöscht" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "Zuliefererteil nicht angegeben" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "Bestandswert" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "Keine zur Anfrage passenden Lagerartikel" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" -msgstr "Untergeordnete Lagerorte laden" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" +msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "Details" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "Artikelinformationen nicht verfügbar" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "Standort nicht mehr vorhanden" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "Bestellung existiert nicht mehr" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "Kunde existiert nicht mehr" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "Lagerartikel existiert nicht mehr" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "Hinzugefügt" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "Entfernt" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "Keine installierten Elemente" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "Lagerartikel entfernen" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "Zu deinstallierende Lagerartikel auswählen" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "Einen weiteren Lagerartikel in dieses Teil installiert" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "Lagerartikel können nur installiert werden wenn folgende Kriterien erfüllt werden" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "Der Lagerartikel ist auf ein Teil verknüpft das in der Stückliste für diesen Lagerartikel ist" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "Dieser Lagerartikel ist aktuell vorhanden" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "Der Lagerbestand ist nicht bereits in einem anderen Bestand installiert" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "Der Lagerbestand wird entweder mit einem Batch-Code oder mit Seriennummer verfolgt" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "Teil zur Installation auswählen" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "Bestellstatus" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "ausstehend" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "Mir zugewiesen" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "Nachverfolgbares Teil" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "Baugruppe" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "Hat verfügbaren Bestand" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "Bestand an Varianten zulassen" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "Hat Preis" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "Unter-Lagerorte einschließen" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "Lagerorte einschließen" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "Unterkategorien einschließen" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "Abonniert" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "Hat Seriennummer" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "Seriennummer >=" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "Seriennummer größer oder gleich" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "Seriennummer <=" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "Seriennummern kleiner oder gleich" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "Seriennummer" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "Losnummer" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "Aktive Teile" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "Bestand aktiver Teile anzeigen" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "Teil ist eine Baugruppe" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "Ist zugeordnet" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "Teil wurde zugeordnet" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "Lagerartikel ist zur Verwendung verfügbar" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "Bestand in Unter-Lagerorten einschließen" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "Zeige aufgebrauchte Lagerartikel" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "Zeige Objekte welche im Lager sind" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "In Arbeit" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "Elemente, die in Produktion sind, anzeigen" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "Varianten einschließen" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "Lagerartikel für Teil-Varianten einschließen" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "Installiert" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "Lagerartikel, die in anderen Elementen verbaut sind, anzeigen" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "zeige zu Kunden zugeordnete Einträge" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "Status" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "Hat Batch-Code" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "Nachverfolgt" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "Lagerbestand wird entweder per Batch-Code oder Seriennummer verfolgt" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "Hat Einkaufspreis" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "Bestand mit Einkaufspreis anzeigen" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "Ablaufdatum vor" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "Ablaufdatum nach" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "Zeige abgelaufene Lagerartikel" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "Bestand, der bald ablaufen, anzeigen" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "Test bestanden" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "Installierte Elemente einschließen" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "Bauauftrags-Status" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "Teile in Unterkategorien einschließen" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "Aktive Teile anzeigen" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "Verfügbarer Lagerbestand" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "Hat IPN" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "Teil hat Interne Teilenummer" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "Auf Lager" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "Käuflich" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "Hat Inventureinträge" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "Tabellendaten exportieren" msgid "Select File Format" msgstr "Dateiformat wählen" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "Lade Daten" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "Zeilen pro Seite" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "Alle Zeilen anzeigen" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "zeige" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "bis" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "von" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "Zeilen" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "Keine passenden Ergebnisse gefunden" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "Zeige/Verstecke Pagination" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "umschalten" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "Spalten" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "Alle" @@ -12454,11 +13097,11 @@ msgstr "Benachrichtigungen anzeigen" msgid "New Notifications" msgstr "Neue Benachrichtigungen" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "Admin" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "Ausloggen" @@ -12474,11 +13117,11 @@ msgstr "Zeige alle Benachrichtigungen und Verlauf" msgid "QR data not provided" msgstr "QR Daten nicht angegeben" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "Sie wurden erfolgreich ausgeloggt." -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "Erneut einloggen" @@ -12617,50 +13260,6 @@ msgstr "E-Mail-Einstellungen" msgid "Email settings not configured" msgstr "E-Mail-Einstellungen nicht konfiguriert" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "Barcode Aktionen" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "Bestands-Einstellungen " - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "Zu ausgewählten Lagerartikeln hinzufügen" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "Von ausgewählten Lagerartikeln entfernen" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "Inventur für gewählte Lagerartikel" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "Ausgewählte Lagerartikel verschieben" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "Ausgewählte Artikel zusammenführen" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "Bestand zusammenführen" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "Ausgewählte Positionen bestellen" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "Ausgewählte Positionen löschen" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "Bestand löschen" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "Ja" @@ -12669,59 +13268,99 @@ msgstr "Ja" msgid "No" msgstr "Nein" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "Benutzer" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "Welche Benutzer gehören zu dieser Gruppe" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" -msgstr "Folgende Benutzer gehören zu mehreren Gruppen:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "Persöhnliche Informationen" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "Berechtigungen" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "wichtige Daten" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "Berechtigung geändert" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "Gruppe" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "Ansicht" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "Berechtigung Einträge anzuzeigen" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "Berechtigung Einträge zu erstellen" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "Ändern" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "Berechtigungen Einträge zu ändern" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "Berechtigung Einträge zu löschen" diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po index 8f0e0179f1..c10c27729b 100644 --- a/InvenTree/locale/el/LC_MESSAGES/django.po +++ b/InvenTree/locale/el/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-11 21:26\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -17,422 +17,447 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "Το API endpoint δε βρέθηκε" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "Δεν έχετε δικαιώματα να το δείτε αυτό" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" -msgstr "" +msgstr "Δεν εισήχθη τιμή" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" -msgstr "" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "Δεν ήταν δυνατή η μετατροπή από {original} σε {unit}" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "Δόθηκε μη έγκυρη ποσότητα" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "Δόθηκε μη έγκυρη ποσότητα ({exc})" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Μπορείτε να βρείτε λεπτομέρειες σφάλματος στον πίνακα διαχείρισης" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Εισάγετε ημερομηνία" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Σημειώσεις" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "Η τιμή '{name}' δεν εμφανίζεται σε μορφή μοτίβου" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Η παρεχόμενη τιμή δεν ταιριάζει με το απαιτούμενο απαραραίητη μοτίβο: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Εισάγετε κωδικό" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Εισάγετε νέο κωδικό πρόσβασης" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Επιβεβαιώστε τον κωδικό πρόσβασης" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Επιβεβαιώστε τον νέο κωδικό πρόσβασης" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Παλιός κωδικός πρόσβασης" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "E-mail (ξανά)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Επιβεβαίωση διεύθυνσης email" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Πρέπει να πληκτρολογήσετε το ίδιο email κάθε φορά." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Η παρεχόμενη κύρια διεύθυνση ηλεκτρονικού ταχυδρομείου δεν είναι έγκυρη." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Ο παρεχόμενος τομέας ηλεκτρονικού ταχυδρομείου δεν έχει εγκριθεί." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "Η εγγραφή είναι απενεργοποιημένη." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Μη έγκυρη ποσότητα" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Κενό σειριακό αριθμό συμβολοσειράς" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Διπλότυπο serial number" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Μη έγκυρο εύρος ομάδας: {g}" +msgid "Invalid group range: {group}" +msgstr "Μη έγκυρο εύρος ομάδας: {group}" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "Το εύρος της ομάδας {g} υπερβαίνει την επιτρεπόμενη ποσότητα ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "Το εύρος της ομάδας {group} υπερβαίνει την επιτρεπόμενη ποσότητα ({expected_quantity})" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Μη έγκυρη ακολουθία ομάδας: {g}" +msgid "Invalid group sequence: {group}" +msgstr "Μη έγκυρη ακολουθία ομάδας: {group}" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Δεν βρέθηκαν σειριακοί αριθμοί" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Ο αριθμός μοναδικών σειριακών αριθμών ({s}) πρέπει να αντιστοιχεί στην ποσότητα ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "Ο αριθμός μοναδικών σειριακών αριθμών ({len(serials)}) πρέπει να αντιστοιχεί στην ποσότητα ({expected_quantity})" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Αφαιρέστε τα HTML tags από την τιμή που εισάγατε" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Σφάλμα σύνδεσης" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Ο διακομιστής απάντησε με μη έγκυρο κωδικό κατάστασης" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Προέκυψε σφάλμα" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Ο διακομιστής ανταποκρίθηκε με \"Invalid Content-Length value\"" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Η εικόνα είναι πολύ μεγάλη σε μέγεθος" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Η λήψη εικόνας ξεπέρασε το μέγιστο μέγεθος" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Ο διακομιστής επέστρεψε σφάλμα %1$d %2$s" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "Το URL δεν είναι έγκυρο αρχείο εικόνας" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "[{site.name}] Σύνδεση στην εφαρμογή" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "Email" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" -msgstr "" +msgstr "Τα μεταδεδομένα πρέπει να είναι ένα αντικείμενο dict python" + +#: InvenTree/models.py:85 +msgid "Plugin Metadata" +msgstr "Μεταδεδομένα Πρόσθετου" #: InvenTree/models.py:86 -msgid "Plugin Metadata" -msgstr "" - -#: InvenTree/models.py:87 msgid "JSON metadata field, for use by external plugins" -msgstr "" +msgstr "JSON πεδίο μεταδεδομένων, για χρήση από εξωτερικά πρόσθετα" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Λανθασμένο μοτίβο" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Δώσατε λάθος μορφή κλειδιού" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Λείπει το απαραίτητο κλειδί" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Το πεδίο δεν μπορεί να είναι άδειο" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "Η αναφορά πρέπει να ταιριάζει με το απαιτούμενο μοτίβο" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Ο αριθμός αναφοράς είναι πολύ μεγάλος" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Το αρχείο λείπει" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Λείπει ο εξωτερικός σύνδεσμος" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Συνημμένο" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Επιλέξτε αρχείο για επισύναψη" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Σύνδεσμος" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Σύνδεσμος προς εξωτερική διεύθυνση URL" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Σχόλιο" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Σχόλιο αρχείου" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Χρήστης" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "ημερομηνία φόρτωσης" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Το όνομα αρχείου δεν μπορεί να είναι κενό" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Μη διαθέσιμη τοποθεσία συνημμένου" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Το όνομα αρχείου περιέχει μη έγκυρους χαρακτήρες '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Λείπει επέκταση ονόματος αρχείου" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Αρχείο με αυτό το όνομα υπάρχει ήδη" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Σφάλμα κατά τη μετονομασία" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" -msgstr "" +msgstr "Διπλότυπα ονόματα δεν μπορούν να υπάρχουν στον ίδιο γονέα" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Μη έγκυρη επιλογή" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Όνομα" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Περιγραφή" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Περιγραφή (προαιρετική)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "γονέας" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Μονοπάτι" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" -msgstr "" +msgstr "Σημειώσεις Markdown (προαιρετικό)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" -msgstr "" +msgstr "Στοιχεία Barcode" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" -msgstr "" +msgstr "Δεδομένα barcode τρίτων" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" -msgstr "" +msgstr "Barcode Hash" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" -msgstr "" +msgstr "Μοναδικό hash δεδομένων barcode" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" -msgstr "" +msgstr "Βρέθηκε υπάρχων barcode" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Σφάλμα διακομιστή" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "Ένα σφάλμα έχει καταγραφεί από το διακομιστή." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Πρέπει να είναι αριθμός" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" -msgstr "" +msgstr "Νόμισμα" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" -msgstr "" +msgstr "Επιλέξτε νόμισμα από τις διαθέσιμες επιλογές" #: InvenTree/serializers.py:364 msgid "Filename" @@ -484,143 +509,155 @@ msgstr "Λείπει απαιτούμενη στήλη: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Διπλή στήλη: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "Διεύθυνση URL του αρχείου απομακρυσμένης εικόνας" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Η λήψη εικόνων από απομακρυσμένο URL δεν είναι ενεργοποιημένη" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "Βουλγάρικα" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Τσέχικα" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Γερμανικά" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Ελληνικά" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Αγγλικά" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Ισπανικά" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Ισπανικά (Μεξικό)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Φαρσί / Περσικά" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" -msgstr "" +msgstr "Φινλανδικά" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Γαλλικά" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Εβραϊκά" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "Ινδικά" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Ούγγρικα" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Ιταλικά" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Ιαπωνικά" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Κορεάτικα" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Dutch" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Νορβηγικά" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Πολωνικά" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Πορτογαλικά" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Πορτογαλικά (Βραζιλίας)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Ρωσικά" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Σουηδικά" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Ταϊλανδέζικα" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Τούρκικα" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Βιετναμέζικα" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Κινέζικα" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "Κινέζικα (απλοποιημένα)" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "Κινέζικα (Παραδοσιακά)" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Ο έλεγχος εργασίας στο παρασκήνιο απέτυχε" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "Δεν έχει ρυθμιστεί διεύθυνση ηλεκτρονικού ταχυδρομείου" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "Ο έλεγχος συστήματος για το Inventree απέτυχε" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Σε εκκρεμότητα" @@ -630,8 +667,8 @@ msgstr "Τοποθετήθηκε" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Ολοκληρώθηκε" @@ -652,12 +689,12 @@ msgstr "Επιστράφηκε" #: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 msgid "In Progress" -msgstr "" +msgstr "Σε Εξέλιξη" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Αποστάλθηκε" @@ -689,7 +726,7 @@ msgstr "Σε Καραντίνα" msgid "Legacy stock tracking entry" msgstr "Καταχώρηση παλαιού αποθέματος" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Το αντικείμενο αποθεμάτων δημιουργήθηκε" @@ -719,7 +756,7 @@ msgstr "Η τοποθεσία τροποποιήθηκε" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "" +msgstr "Το απόθεμα ενημερώθηκε" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" @@ -745,7 +782,7 @@ msgstr "Έγινε διαχωρισμός από το γονεϊκό αρχεί msgid "Split child item" msgstr "Διαχωρίστηκε θυγατρικό στοιχείο" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Έγινε συγχώνευση αποθεμάτων" @@ -765,7 +802,7 @@ msgstr "Η έξοδος της σειράς κατασκευής ολοκληρ msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Κατανάλωση με εντολή κατασκευής" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Απεστάλη στον πελάτη" @@ -813,119 +850,165 @@ msgstr "" msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Μη έγκυρος κωδικός συναλλάγματος" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Η μέση τιμή δεν πρέπει να είναι αρνητική" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Η μέση τιμή δεν πρέπει να υπερβαίνει το 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Μη έγκυρη τιμή για υπέρβαση" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Τροποποίηση πληροφοριών χρήστη" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Ορισμός Κωδικού Πρόσβασης" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Τα πεδία κωδικού πρόσβασης πρέπει να ταιριάζουν" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Δόθηκε λάθος κωδικός πρόσβασης" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Πληροφορίες συστήματος" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Σχετικά με το InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "Η έκδοση πρέπει να ακυρωθεί πριν διαγραφεί" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Σειρά Κατασκευής" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Δημιουργία Παραγγελιών" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Μη έγκυρη επιλογή για γονική κατασκευή" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Αναφορά Παραγγελίας Κατασκευής" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Αναφορά" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Γονική Κατασκευή" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατασκευή" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Εξάρτημα" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Επιλέξτε τμήμα για κατασκευή" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Κωδικός Παραγγελίας Πωλήσεων" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "SalesOrder στην οποία έχει διατεθεί αυτό το build" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Τοποθεσία Προέλευσης" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Επιλέξτε τοποθεσία από την οποία θα γίνει απόθεμα, για αυτή την κατασκευή (αφήστε κενό για να πάρετε από οποιαδήποτε θέση αποθήκευσης)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Τοποθεσία Προορισμού" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Επιλέξτε την τοποθεσία όπου θα αποθηκευτούν τα ολοκληρωμένα στοιχεία" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Ποσότητα Κατασκευής" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Αριθμός αντικειμένων για κατασκευή" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Ολοκληρωμένα αντικείμενα" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Αριθμός αντικειμένων αποθέματος που έχουν ολοκληρωθεί" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Κατάσταση Κατασκευής" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Κωδικός κατάστασης κατασκευής" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Κωδικός Παρτίδας" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Κωδικός παρτίδας για αυτήν την κατασκευή" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Ημερομηνία Δημιουργίας" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Ημερομηνία ολοκλήρωσης στόχου" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Ημερομηνία ολοκλήρωσης της κατασκευής. Η κατασκευή θα καθυστερήσει μετά από αυτή την ημερομηνία." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Ημερομηνία ολοκλήρωσης" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "ολοκληρώθηκε από" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Εκδόθηκε από" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Χρήστης που εξέδωσε αυτήν την παραγγελία κατασκευής" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Υπεύθυνος" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Εξωτερικοί σύνδεσμοι" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Η παραγγελία κατασκευής {build} έχει ολοκληρωθεί" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Δεν καθορίστηκε έξοδος κατασκευής" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Το στοιχείο κατασκευής πρέπει να ορίζει μια έξοδο κατασκευής, καθώς το κύριο τμήμα επισημαίνεται ως ανιχνεύσιμο" +#: build/models.py:1266 +msgid "Build object" +msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "Η καταχωρημένη ποσότητα ({q}) δεν πρέπει να υπερβαίνει τη διαθέσιμη ποσότητα αποθέματος ({a})" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "Στοιχείο αποθέματος είναι υπερ-κατανεμημένο" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "Η ποσότητα πρέπει να είναι 1 για σειριακό απόθεμα" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Το επιλεγμένο αντικείμενο αποθέματος δεν βρέθηκε στο BOM" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Κατασκευή" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "Κατασκευή για εκχώρηση τμημάτων" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Στοιχείο Αποθέματος" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Στοιχείο πηγαίου αποθέματος" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Ποσότητα" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "Το στοιχείο κατασκευής πρέπει να ορίζει μια έξοδο κατασκευής, καθώς το κύριο τμήμα επισημαίνεται ως ανιχνεύσιμο" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "Η καταχωρημένη ποσότητα ({q}) δεν πρέπει να υπερβαίνει τη διαθέσιμη ποσότητα αποθέματος ({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "Στοιχείο αποθέματος είναι υπερ-κατανεμημένο" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Η ποσότητα πρέπει να είναι 1 για σειριακό απόθεμα" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Στοιχείο Αποθέματος" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Στοιχείο πηγαίου αποθέματος" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Ποσότητα αποθέματος για διάθεση για κατασκευή" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Εγκατάσταση σε" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Αποθήκη προορισμού" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "Κατασκευή Εξόδου" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "Το εξερχόμενο μέρος δεν ταιριάζει με το μέρος BuildOrder" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "Αυτή η έξοδος κατασκευής δεν έχει εκχωρηθεί πλήρως" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "Εισάγετε ποσότητα για την έξοδο κατασκευής" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "Ακέραιη ποσότητα που απαιτείται για ανιχνεύσιμα μέρη" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Ακέραιη ποσότητα που απαιτείται, καθώς ο λογαριασμός των υλικών περιέχει ανιχνεύσιμα μέρη" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Σειριακοί αριθμοί" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "Εισάγετε ποσότητα για την έξοδο κατασκευής" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "Αυτόματη Κατανομή Σειριακών Αριθμών" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1766,147 +1864,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1914,14 +1971,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" +#: common/models.py:1197 +msgid "Automatic Backup" msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" +msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" +#: common/models.py:1204 +msgid "Auto Backup Interval" msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:1370 +msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1378 -msgid "Default page size for PDF reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1388 -msgid "Enable Test Reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" msgstr "" #: common/models.py:1550 -msgid "Enable SSO on the login pages" +msgid "Default page size for PDF reports" msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" +msgid "Attach Test Reports" msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" +msgid "Autofill Serial Numbers" msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3507,331 +3609,395 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" - -#: company/models.py:119 -msgid "Company address" -msgstr "" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3916,156 +4089,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4244,102 +4392,95 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "Το IPN πρέπει να ταιριάζει με το μοτίβο regex {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "" msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Κατασκευή" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9259,7 +9738,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "" @@ -9435,30 +9914,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11043,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12616,50 +13259,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12668,59 +13267,99 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index fcd5f93774..7a5bf0e97b 100644 --- a/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/InvenTree/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-05 11:04+0000\n" +"POT-Creation-Date: 2023-11-09 10:51+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,420 +18,445 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1086 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3004 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2159 stock/models.py:2267 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "" -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/helpers.py:462 order/models.py:439 order/models.py:608 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" +msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" +msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:486 stock/models.py:2261 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:233 -#: order/models.py:1090 order/models.py:1450 part/admin.py:39 -#: part/models.py:900 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:901 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3012 -#: part/models.py:3100 part/models.py:3179 part/models.py:3199 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:846 -#: part/models.py:3399 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:229 order/models.py:1114 part/admin.py:194 part/admin.py:276 -#: part/models.py:868 part/models.py:3415 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:3896 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2851 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -485,445 +510,506 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:822 msgid "German" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:824 msgid "English" msgstr "" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:829 msgid "French" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:739 -msgid "Chinese" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/status_codes.py:139 InvenTree/status_codes.py:181 -#: InvenTree/status_codes.py:360 InvenTree/status_codes.py:397 -#: InvenTree/status_codes.py:432 templates/js/translated/table_filters.js:511 +#: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 +#: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 +#: InvenTree/status_codes.py:188 generic/states/tests.py:16 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "" -#: InvenTree/status_codes.py:140 +#: InvenTree/status_codes.py:13 generic/states/tests.py:17 msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:141 InvenTree/status_codes.py:363 -#: InvenTree/status_codes.py:399 order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 +#: InvenTree/status_codes.py:172 generic/states/tests.py:18 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "" -#: InvenTree/status_codes.py:142 InvenTree/status_codes.py:184 -#: InvenTree/status_codes.py:362 InvenTree/status_codes.py:400 +#: InvenTree/status_codes.py:15 InvenTree/status_codes.py:43 +#: InvenTree/status_codes.py:150 InvenTree/status_codes.py:173 msgid "Cancelled" msgstr "" -#: InvenTree/status_codes.py:143 InvenTree/status_codes.py:185 -#: InvenTree/status_codes.py:227 +#: InvenTree/status_codes.py:16 InvenTree/status_codes.py:44 +#: InvenTree/status_codes.py:71 msgid "Lost" msgstr "" -#: InvenTree/status_codes.py:144 InvenTree/status_codes.py:186 +#: InvenTree/status_codes.py:17 InvenTree/status_codes.py:45 +#: InvenTree/status_codes.py:73 msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:182 InvenTree/status_codes.py:398 +#: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:183 order/models.py:1329 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "" -#: InvenTree/status_codes.py:223 +#: InvenTree/status_codes.py:66 msgid "OK" msgstr "" -#: InvenTree/status_codes.py:224 +#: InvenTree/status_codes.py:67 msgid "Attention needed" msgstr "" -#: InvenTree/status_codes.py:225 +#: InvenTree/status_codes.py:68 msgid "Damaged" msgstr "" -#: InvenTree/status_codes.py:226 +#: InvenTree/status_codes.py:69 msgid "Destroyed" msgstr "" -#: InvenTree/status_codes.py:228 +#: InvenTree/status_codes.py:70 msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:229 +#: InvenTree/status_codes.py:72 msgid "Quarantined" msgstr "" -#: InvenTree/status_codes.py:308 +#: InvenTree/status_codes.py:91 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:310 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:312 +#: InvenTree/status_codes.py:96 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:313 +#: InvenTree/status_codes.py:97 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:315 +#: InvenTree/status_codes.py:100 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:316 +#: InvenTree/status_codes.py:101 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:317 +#: InvenTree/status_codes.py:102 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:105 msgid "Location changed" msgstr "" -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:106 msgid "Stock updated" msgstr "" -#: InvenTree/status_codes.py:322 +#: InvenTree/status_codes.py:109 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:323 +#: InvenTree/status_codes.py:110 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:325 +#: InvenTree/status_codes.py:112 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:326 +#: InvenTree/status_codes.py:113 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:328 +#: InvenTree/status_codes.py:116 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:329 +#: InvenTree/status_codes.py:117 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:331 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:333 +#: InvenTree/status_codes.py:123 msgid "Converted to variant" msgstr "" -#: InvenTree/status_codes.py:335 templates/js/translated/table_filters.js:321 -msgid "Sent to customer" -msgstr "" - -#: InvenTree/status_codes.py:336 -msgid "Returned from customer" -msgstr "" - -#: InvenTree/status_codes.py:338 +#: InvenTree/status_codes.py:126 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:339 +#: InvenTree/status_codes.py:127 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:340 +#: InvenTree/status_codes.py:128 msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:341 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:343 +#: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" msgstr "" -#: InvenTree/status_codes.py:345 +#: InvenTree/status_codes.py:135 msgid "Received against Purchase Order" msgstr "" -#: InvenTree/status_codes.py:347 +#: InvenTree/status_codes.py:138 msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:361 +#: 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:433 +#: InvenTree/status_codes.py:191 msgid "Return" msgstr "" -#: InvenTree/status_codes.py:434 +#: InvenTree/status_codes.py:194 msgid "Repair" msgstr "" -#: InvenTree/status_codes.py:435 -msgid "Refund" -msgstr "" - -#: InvenTree/status_codes.py:436 +#: InvenTree/status_codes.py:197 msgid "Replace" msgstr "" -#: InvenTree/status_codes.py:437 +#: InvenTree/status_codes.py:200 +msgid "Refund" +msgstr "" + +#: InvenTree/status_codes.py:203 msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "" -#: build/api.py:221 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "" -#: build/models.py:156 order/models.py:356 order/models.py:762 -#: order/models.py:1084 order/models.py:1721 part/admin.py:278 -#: part/models.py:3797 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1192 order/models.py:1308 order/models.py:1309 -#: part/models.py:390 part/models.py:2864 part/models.py:2978 -#: part/models.py:3118 part/models.py:3137 part/models.py:3156 -#: part/models.py:3177 part/models.py:3269 part/models.py:3554 -#: part/models.py:3662 part/models.py:3762 part/models.py:4076 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -932,548 +1018,563 @@ msgstr "" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:505 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "" -#: build/models.py:253 order/models.py:241 part/models.py:1037 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:261 order/models.py:406 order/models.py:1764 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:255 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1041 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:437 order/serializers.py:378 -#: order/serializers.py:500 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1386 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1598 -msgid "Stock item is over-allocated" -msgstr "" - -#: build/models.py:1297 order/models.py:1601 -msgid "Allocation quantity must be greater than zero" -msgstr "" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1058 -#: order/serializers.py:1079 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1070 order/models.py:1642 order/serializers.py:1232 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2991 part/models.py:3778 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:513 order/serializers.py:1236 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:669 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:486 -#: order/serializers.py:605 order/serializers.py:1587 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:788 -#: order/models.py:1747 order/serializers.py:523 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:260 order/serializers.py:1126 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3685 -#: part/models.py:4068 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1116 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1400 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1513,15 +1614,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1530,89 +1631,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1637,18 +1739,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:237 -#: order/models.py:1096 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1659,47 +1761,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1451 order/models.py:1301 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 #: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1727,8 +1828,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1219 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1740,23 +1841,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1764,147 +1865,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1912,14 +1972,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1958,1494 +2014,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:231 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3559 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:995 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1001 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1012 -msgid "Purchaseable" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1017 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1007 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" +#: common/models.py:1197 +msgid "Automatic Backup" msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" +msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1027 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" +#: common/models.py:1204 +msgid "Auto Backup Interval" msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:1370 +msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1378 -msgid "Default page size for PDF reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1388 -msgid "Enable Test Reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" msgstr "" #: common/models.py:1550 -msgid "Enable SSO on the login pages" +msgid "Default page size for PDF reports" msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" +msgid "Attach Test Reports" msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" +msgid "Autofill Serial Numbers" msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1129 order/models.py:1936 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1022 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:913 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3476,7 +3581,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3495,9 +3600,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3505,331 +3610,395 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" - -#: company/models.py:119 -msgid "Company address" -msgstr "" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:263 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2254 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:986 part/models.py:3406 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:379 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3800 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1918 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1918 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1920 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3839,72 +4008,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:776 -#: order/models.py:1735 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3914,156 +4090,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4072,46 +4236,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4135,106 +4281,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4242,102 +4393,95 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4346,63 +4490,63 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:70 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:239 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1449 order/models.py:1175 order/models.py:1259 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1453 order/models.py:1906 order/models.py:1952 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1455 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:71 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:76 order/serializers.py:48 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:78 order/serializers.py:49 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:207 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:229 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" @@ -4410,184 +4554,188 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:233 order/models.py:1091 order/models.py:1451 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:238 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:247 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:254 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:264 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:357 order/models.py:763 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:365 order/models.py:788 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:380 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:388 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:388 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:395 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:400 order/models.py:1758 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:401 order/models.py:1759 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:407 order/models.py:1765 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:442 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:603 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:777 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:796 order/models.py:1752 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:796 order/models.py:1753 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:798 order/models.py:1405 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:805 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:854 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:858 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:861 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:864 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1071 +#: order/models.py:1074 msgid "Item quantity" msgstr "" -#: order/models.py:1084 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1086 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1097 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1115 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1120 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1121 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1130 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1160 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1168 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1174 order/models.py:1259 order/models.py:1300 -#: order/models.py:1399 order/models.py:1548 order/models.py:1905 -#: order/models.py:1952 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1193 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1200 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1201 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1208 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1209 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1222 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" @@ -4600,7 +4748,7 @@ msgid "Only salable parts can be assigned to a sales order" msgstr "" #: order/models.py:1319 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" @@ -4616,7 +4764,7 @@ msgstr "" msgid "Date of shipment" msgstr "" -#: order/models.py:1411 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" @@ -4632,8 +4780,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1427 order/models.py:1624 order/serializers.py:1247 -#: order/serializers.py:1375 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" @@ -4669,229 +4817,229 @@ msgstr "" msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1589 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1591 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1604 order/serializers.py:1109 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1607 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1608 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1616 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1625 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1638 order/models.py:1913 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1639 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1642 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1722 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1736 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1747 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1898 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1914 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1919 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1920 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1931 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1931 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1937 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:246 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:261 order/serializers.py:1127 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:272 order/serializers.py:1138 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:385 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:403 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:421 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:426 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:432 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:471 order/serializers.py:1215 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:477 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:487 order/serializers.py:606 order/serializers.py:1588 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:506 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:514 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:527 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:528 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:544 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:568 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:622 order/serializers.py:1603 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:639 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:949 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1006 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1070 order/serializers.py:1224 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1092 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1237 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1259 order/serializers.py:1383 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1262 order/serializers.py:1386 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1316 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1326 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1554 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1561 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1564 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1596 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1677 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" @@ -4904,11 +5052,11 @@ msgstr "" msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:89 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:94 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4918,26 +5066,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4947,90 +5095,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5083,13 +5223,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5150,9 +5290,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5163,30 +5303,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5195,40 +5330,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5236,35 +5371,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5272,18 +5407,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5291,64 +5425,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3666 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3670 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:888 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:895 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:874 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5356,24 +5491,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:863 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:979 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5381,115 +5516,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2929 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2935 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:391 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3674 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:497 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:517 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:535 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:621 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:769 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:770 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:776 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:126 part/models.py:922 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5497,477 +5625,484 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:74 part/models.py:3615 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:75 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:127 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:132 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:134 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:138 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:138 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:143 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:144 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:163 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:474 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:516 part/models.py:528 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:600 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:671 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:802 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:807 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:821 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:845 part/models.py:3671 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:851 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:852 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:862 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:869 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:875 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:882 part/models.py:3197 part/models.py:3614 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:883 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:889 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:894 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:965 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:966 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:973 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:974 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:980 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:987 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:996 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1002 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1008 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1013 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1018 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1023 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1028 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1030 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1030 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1033 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1035 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1039 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1041 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1045 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1920 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2852 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2869 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2870 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2875 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2876 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2881 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2882 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2887 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2893 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2894 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2899 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2900 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2905 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2906 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2911 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2912 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2917 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2918 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2923 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2924 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2930 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2936 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2941 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2942 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2947 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2948 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2953 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2954 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2959 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2960 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2979 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2984 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2985 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2992 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2996 part/models.py:3079 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2997 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3005 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3013 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3018 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3019 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3024 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3025 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3086 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3087 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3092 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3093 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3101 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3237 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3254 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3274 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3275 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3280 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3281 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3286 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3287 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3292 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3293 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3298 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3299 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3345 +#: part/models.py:3346 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3350 +#: part/models.py:3351 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3368 +#: part/models.py:3369 msgid "Choices must be unique" msgstr "" -#: part/models.py:3384 +#: part/models.py:3385 msgid "Parameter template name must be unique" msgstr "" @@ -5983,8 +6118,8 @@ msgstr "" msgid "Parameter description" msgstr "" -#: part/models.py:3422 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" @@ -5992,7 +6127,7 @@ msgstr "" msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3428 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" @@ -6000,447 +6135,459 @@ msgstr "" msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3510 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3554 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3559 part/models.py:3620 part/models.py:3621 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3564 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3564 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3625 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3626 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3663 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3675 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3678 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3679 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3763 -msgid "Select parent part" +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" msgstr "" #: part/models.py:3771 +msgid "Select parent part" +msgstr "" + +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3778 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3782 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3783 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3788 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3789 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3793 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3794 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3797 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3800 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3804 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3804 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3809 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3810 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3815 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3816 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3821 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3822 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3908 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3917 part/models.py:3919 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4035 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4056 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4069 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4077 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4092 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4096 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4096 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4114 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4118 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6459,90 +6606,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6579,7 +6706,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6588,9 +6715,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6602,101 +6729,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6730,13 +6857,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6745,158 +6872,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6953,15 +7080,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6985,11 +7112,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7052,12 +7179,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7106,37 +7233,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7148,20 +7274,21 @@ msgstr "" msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7169,7 +7296,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7183,6 +7356,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7220,242 +7398,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7472,9 +7817,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7486,26 +7831,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7515,12 +7864,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2242 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2248 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7546,485 +7895,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:419 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:581 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:588 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:614 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:623 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:641 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1377 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1383 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1389 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1392 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1395 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1402 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1473 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1476 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1479 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1485 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1488 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1495 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1499 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1503 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1507 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2160 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2218 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2224 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2243 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2249 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2255 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2262 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2268 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8032,263 +8435,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8300,82 +8711,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8412,7 +8827,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8449,71 +8864,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8539,7 +8954,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8556,7 +8971,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8611,7 +9026,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8649,7 +9064,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8657,12 +9072,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8670,30 +9094,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8702,7 +9126,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8739,7 +9163,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8747,32 +9172,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8808,7 +9235,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8825,7 +9252,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8849,50 +9276,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8911,14 +9391,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8930,11 +9410,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8946,6 +9426,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8956,13 +9440,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8988,6 +9465,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9202,44 +9680,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9257,7 +9739,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "" @@ -9433,30 +9915,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9485,7 +9967,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9499,15 +9981,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9519,27 +10001,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9551,19 +10033,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9571,23 +10061,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9620,7 +10122,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9644,7 +10146,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9702,743 +10204,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10446,89 +11044,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10548,98 +11146,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10648,32 +11266,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10698,7 +11316,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10714,363 +11332,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11078,51 +11688,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11146,254 +11752,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11422,250 +12028,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11677,686 +12283,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12388,51 +13034,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12452,11 +13098,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12472,11 +13118,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12615,50 +13261,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12667,58 +13269,98 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index 4d9fdf2506..ec7f7c7409 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" "Last-Translator: \n" "Language-Team: Spanish, Mexico\n" "Language: es_MX\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "endpoint API no encontrado" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "El usuario no tiene permiso para ver este modelo" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "Ningún valor proporcionado" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" -msgstr "El valor proporcionado no es un número válido" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "El valor proporcionado tiene una unidad inválida" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "El valor proporcionado no puede ser convertido a la unidad especificada" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Detalles del error pueden encontrarse en el panel de administración" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Ingrese la fecha" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Notas" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "El valor '{name}' no aparece en formato de patrón" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "El valor proporcionado no coincide con el patrón requerido: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Introduzca contraseña" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Ingrese su nueva contraseña" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Confirmar la contraseña" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Confirmar contraseña nueva" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Contraseña anterior" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "Email (de nuevo)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Confirmación de dirección de email" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Debe escribir el mismo correo electrónico cada vez." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "La dirección de correo electrónico principal proporcionada no es válida." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "El dominio de correo electrónico proporcionado no está aprobado." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "Registro deshabilitado." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Cantidad proporcionada no válida" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "No se ha proporcionado un número de serie" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Serie duplicada" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Rango de grupo no válido: {g}" +msgid "Invalid group range: {group}" +msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "El rango del grupo {g} supera la cantidad permitida ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Secuencia de grupo no válida: {g}" +msgid "Invalid group sequence: {group}" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Numeros de serie no encontrados" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Número único de número de serie ({s}) debe coincidir con la cantidad ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Eliminar etiquetas HTML de este valor" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Error de conexión" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "El servidor respondió con código de estado no válido" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Se ha producido una excepción" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "El servidor respondió con un valor de longitud de contenido inválido" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "El tamaño de la imagen es demasiado grande" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "La descarga de imagen excedió el tamaño máximo" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "El servidor remoto devolvió una respuesta vacía" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "La URL proporcionada no es un archivo de imagen válido" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "[{site.name}] Iniciar sesión en la aplicación" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "Correo electrónico" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "Los metadatos deben ser un objeto diccionario de python" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "Metadatos del complemento" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "Campo de metadatos JSON, para uso por complementos externos" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Patrón con formato incorrecto" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Clave de formato especificado desconocida" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Falta la clave de formato necesaria" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "El campo de servidor no puede estar vacío" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "La referencia debe coincidir con la expresión regular {pattern}" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "El número de referencia es demasiado grande" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Archivo no encontrado" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Falta enlace externo" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Archivo adjunto" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Seleccionar archivo para adjuntar" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Enlace" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Enlace a URL externa" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Comentario" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Comentario del archivo" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Usuario" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "fecha de subida" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "El nombre del archivo no debe estar vacío" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Directorio de archivos adjuntos no válido" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "El nombre del archivo contiene el carácter ilegal '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Falta el nombre de extensión del archivo" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Ya existe un archivo adjunto con este nombre" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Error al cambiar el nombre del archivo" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "Los nombres duplicados no pueden existir bajo el mismo padre" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Selección no válida" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Nombre" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Descripción" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Descripción (opcional)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "padre" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Ruta" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "Notas de Markdown (opcional)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Datos de código de barras" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Datos de código de barras de terceros" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Hash del Código de barras" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Hash único de datos de código de barras" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Código de barras existente encontrado" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Error de servidor" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "Se ha registrado un error por el servidor." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Debe ser un número válido" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Moneda" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "Seleccionar moneda de las opciones disponibles" @@ -484,143 +509,155 @@ msgstr "Falta la columna requerida: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Columna duplicada: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "URL de imagen remota" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "La descarga de imágenes desde la URL remota no está habilitada" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Checo" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Danés" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Alemán" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Griego" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Inglés" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Español" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Español (México)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Farsi / Persa" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "Finlandés" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Francés" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Hebreo" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Húngaro" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Italiano" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japonés" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Coreano" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Holandés" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Noruego" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Polaco" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portugués" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portugués (Brasileño)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Ruso" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Esloveno" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Sueco" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Tailandés" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Turco" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnamita" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Chino" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "Chino (Simplificado)" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "Chino (Tradicional)" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Falló la comprobación en segundo plano del worker" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "No se ha configurado el backend de correo" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "Las comprobaciones de estado del sistema InvenTree fallaron" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Pendiente" @@ -630,8 +667,8 @@ msgstr "Colocado" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Terminado" @@ -654,10 +691,10 @@ msgstr "Devuelto" msgid "In Progress" msgstr "En progreso" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Enviado" @@ -689,7 +726,7 @@ msgstr "En cuarentena" msgid "Legacy stock tracking entry" msgstr "Entrada antigua de rastreo de stock" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Artículo de stock creado" @@ -745,7 +782,7 @@ msgstr "Separar del artículo principal" msgid "Split child item" msgstr "Dividir artículo secundario" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Artículos de stock combinados" @@ -763,9 +800,9 @@ msgstr "Construir orden de salida completado" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "" +msgstr "Orden de ensamble rechazada" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Consumido por orden de construcción" @@ -781,7 +818,7 @@ msgstr "Recibido contra la orden de compra" msgid "Returned against Return Order" msgstr "Devuelto contra orden de devolución" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Enviar al cliente" @@ -813,119 +850,165 @@ msgstr "Reembolso" msgid "Reject" msgstr "Rechazo" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Unidad física inválida" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "No es un código de moneda válido" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "El valor excedente no debe ser negativo" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "El excedente no debe superar el 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Valor no válido para sobrecarga" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Editar datos del usuario" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" -msgstr "Configurar Contraseña" +msgstr "Configurar contraseña" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Los campos de contraseña deben coincidir" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Contraseña incorrecta proporcionada" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Información del sistema" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Acerca de InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "La compilación debe cancelarse antes de poder ser eliminada" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "Consumible" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "Opcional" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "Rastreado" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "Asignadas" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Disponible" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Construir órden" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Construir órdenes" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Opción no válida para la construcción padre" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Número de orden de construcción o armado" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Referencia" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "Breve descripción de la construcción (opcional)" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Construcción o Armado Superior" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Orden de Construcción o Armado a la que se asigna" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Orden de Construcción o Armado a la que se asigna" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Parte" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Seleccionar parte a construir o armar" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Referencia de orden de venta" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Orden de Venta a la que se asigna" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Ubicación de la fuente" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Seleccione la ubicación de donde tomar stock para esta construcción o armado (deje en blanco para tomar desde cualquier ubicación)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Ubicación de destino" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Seleccione la ubicación donde se almacenarán los artículos completados" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Cantidad a crear" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Número de objetos existentes a construir" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Elementos completados" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Número de productos en stock que se han completado" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Estado de la construcción" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Código de estado de construcción" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Numero de lote" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Número de lote de este producto final" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Fecha de Creación" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Fecha límite de finalización" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Fecha límite para la finalización de la construcción. La construcción estará vencida después de esta fecha." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Fecha de finalización" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "terminado por" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Emitido por" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "El usuario que emitió esta orden" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Responsable" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "Usuario o grupo responsable de esta orden de construcción" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Link externo" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "Prioridad de construcción" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "Prioridad de esta orden de construcción" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "Código del proyecto" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "Código de proyecto para esta orden de ensamble" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "El pedido {build} ha sido procesado" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "Pedido #[order] ha sido procesado" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "No se ha especificado salida de construcción" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "La construcción de la salida ya está completa" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "La salida de la construcción no coincide con el orden de construcción" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "La cantidad debe ser mayor que cero" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "La cantidad no puede ser mayor que la cantidad de salida" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Item de construcción o armado debe especificar un resultado o salida, ya que la parte maestra está marcada como rastreable" +#: build/models.py:1266 +msgid "Build object" +msgstr "Ensamblar equipo" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "Cantidad asignada ({q}) no debe exceder la cantidad disponible de stock ({a})" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "Artículo de stock sobreasignado" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Cantidad asignada debe ser mayor que cero" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "La cantidad debe ser 1 para el stock serializado" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Artículo de stock seleccionado no encontrado en BOM" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Construcción o Armado" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "Armar para asignar partes" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Artículo de stock" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Producto original de stock" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Cantidad" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "Cantidad requerida para orden de ensamble" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "Item de construcción o armado debe especificar un resultado o salida, ya que la parte maestra está marcada como rastreable" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "Cantidad asignada ({q}) no debe exceder la cantidad disponible de stock ({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "Artículo de stock sobreasignado" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Cantidad asignada debe ser mayor que cero" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "La cantidad debe ser 1 para el stock serializado" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "El artículo de almacén selelccionado no coincide con la línea BOM" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Artículo de stock" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Producto original de stock" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Cantidad de stock a asignar para construir" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Instalar en" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Artículo de stock de destino" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "Resultado de la construcción o armado" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "La salida de construcción no coincide con la construcción padre" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "La parte de salida no coincide con la parte de la Orden de Construcción" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "Esta salida de construcción ya ha sido completada" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "Esta salida de construcción no está completamente asignada" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "Ingrese la cantidad para la producción de la construcción" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "Cantidad entera requerida para partes rastreables" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Cantidad entera requerida, ya que la factura de materiales contiene partes rastreables" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Números de serie" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "Introduzca los números de serie de salidas de construcción" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "Autoasignar Números de Serie" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "Asignar automáticamente los artículos requeridos con números de serie coincidentes" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "Los siguientes números seriales ya existen o son inválidos" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "Debe proporcionarse una lista de salidas de construcción" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Ubicación" -#: build/serializers.py:416 -msgid "Stock location for scrapped outputs" -msgstr "" - #: build/serializers.py:422 -msgid "Discard Allocations" -msgstr "" - -#: build/serializers.py:423 -msgid "Discard any stock allocations for scrapped outputs" -msgstr "" +msgid "Stock location for scrapped outputs" +msgstr "Ubicación de almacén para salidas descartadas" #: build/serializers.py:428 -msgid "Reason for scrapping build output(s)" -msgstr "" +msgid "Discard Allocations" +msgstr "Descartar asignaciones" -#: build/serializers.py:489 +#: build/serializers.py:429 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "Descartar cualquier asignación de existencias para las salidas descartadas" + +#: build/serializers.py:434 +msgid "Reason for scrapping build output(s)" +msgstr "Razón para descartar la salida de ensamble(s)" + +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "Ubicación para las salidas de construcción completadas" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Estado" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "Aceptar Asignación Incompleta" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "Completar salidas si el inventario no se ha asignado completamente" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "Quitar inventario asignado" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "Resta cualquier existencia que ya ha sido asignado a esta versión" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "Eliminar salidas incompletas" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "Eliminar cualquier salida de construcción que no se haya completado" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "No permitido" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "Aceptar como consumido por este pedido de construcción" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "Liberar antes de completar esta orden de construcción" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "Stock sobreasignado" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Cómo quieres manejar los artículos extra de inventario asignados a la orden de construcción" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "Algunos artículos de inventario han sido sobreasignados" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "Aceptar no asignado" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Aceptar que los artículos de stock no se han asignado completamente a este pedido de construcción" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "El stock requerido no ha sido completamente asignado" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "Aceptar incompleto" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "Aceptar que el número requerido de salidas de construcción no se han completado" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "La cantidad de construcción requerida aún no se ha completado" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "El orden de construcción tiene salidas incompletas" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "Item de Lista de Materiales" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "Linea de ensamble" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "Resultado de la construcción o armado" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "La salida de la construcción debe apuntar a la misma construcción" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "Crear partida" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part debe apuntar a la misma parte que la orden de construcción" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "El artículo debe estar en stock" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Cantidad disponible ({q}) excedida" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "La salida de la construcción debe especificarse para la asignación de partes rastreadas" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "La salida de construcción no se puede especificar para la asignación de partes no rastreadas" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "Este artículo de stock ya ha sido asignado a esta salida de construcción" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "Debe proporcionarse la adjudicación de artículos" @@ -1515,15 +1613,15 @@ msgstr "Elementos opcionales" msgid "Allocate optional BOM items to build order" msgstr "Asignar artículos de la BOM opcionales para construir la orden" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "Stock requerido para la orden de construcción" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "Orden de construcción atrasada" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "El pedido de construcción {bo} está atrasado" @@ -1532,89 +1630,90 @@ msgstr "El pedido de construcción {bo} está atrasado" msgid "Part thumbnail" msgstr "Miniatura de parte" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "Acciones para código de barras" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "Mostrar código QR" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "Desvincular Código de Barras" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "Vincular Código de Barras" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "Imprimir acciones" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "Imprimir informe de orden de construcción" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "Acciones de construcción o armado" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Editar construcción o armado" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Cancelar construcción o armado" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "Construcción duplicada" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "Eliminar construcción o armado" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "Completar construcción" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "Descripción de Construcción" @@ -1639,18 +1738,18 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Stock no ha sido asignado completamente a este pedido de construcción" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "Fecha objetivo" @@ -1661,47 +1760,46 @@ msgstr "Esta construcción vence el %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "Vencido" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Completados" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "Salidas completadas" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "Orden de Venta" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Emitido por" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "Prioridad" @@ -1729,8 +1827,8 @@ msgstr "Fuente de stock" msgid "Stock can be taken from any available location." msgstr "Las existencias se pueden tomar desde cualquier ubicación disponible." -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "Destinación" @@ -1742,23 +1840,23 @@ msgstr "Se requiere ubicación de destino" msgid "Allocated Parts" msgstr "Partes asignadas" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "Lote" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "Creado" @@ -1766,147 +1864,106 @@ msgstr "Creado" msgid "No target date set" msgstr "Sin fecha objetivo" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Completados" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "Trabajo incompleto" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "Órdenes de Trabajo herederas" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "Asignar Stock a Trabajo" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" -msgstr "Desasignar stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "Desasignar existencias" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "Desasignar existencias" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "Desasignar stock" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "Asignar existencias automáticamente a contrucción" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "Auto asignar" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "Asignar existencias manualmente a construcción" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "Asignar stock" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "Pedir partes necesarias" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "Partes del pedido" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "Stock no ha sido asignado completamente a esta Orden de Trabajo" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "El stock sin rastrear no ha sido asignado completamente para esta Orden de Trabajo" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "Asignar partes seleccionadas" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "Esta Orden de Trabajo no tiene ningún objeto BOM sin seguimiento asociados" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "Salidas de Trabajo incompletas" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "Crear nueva salida de trabajo" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "Nueva Salida de Trabajo" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "Acciones de salida" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "Completa las salidas seleccionadas" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "Completar salidas" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "Eliminar salidas seleccionadas" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "Eliminar salidas" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" -msgstr "" +msgstr "Existencias consumidas" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "Salidas de Trabajo Completadas" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Adjuntos" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "Notas del Trabajo" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "Asignación completa" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" -msgstr "Todos los artículos de stock no rastreados han sido asignados" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "Todas las líneas han sido completamente asignadas" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "Nueva Orden de Trabajo" @@ -1914,14 +1971,10 @@ msgstr "Nueva Orden de Trabajo" msgid "Build Order Details" msgstr "Configuración de Pedido de Trabajo" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "Salidas incompletas" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "Salidas completadas" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "Archivo {name.title()}" msgid "Select {name} file to upload" msgstr "Seleccione el archivo {name} para subir" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "Actualizado" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Fecha y hora de la última actualización" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "Código del proyecto" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "Código único del proyecto" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "Descripción del proyecto" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "Clave de configuración (debe ser única - mayúsculas y minúsculas)" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "Valor de ajuste" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "El valor elegido no es una opción válida" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "El valor debe ser un valor booleano" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "El valor debe ser un entero" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "Cadena de clave debe ser única" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "Sin grupo" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "Un dominio vacío no está permitido." -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Nombre de dominio inválido: {domain}" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "Reinicio requerido" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "Se ha cambiado una configuración que requiere un reinicio del servidor" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "Nombre de la instancia del servidor" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "Descriptor de cadena para la instancia del servidor" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "Usar nombre de instancia" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "Utilice el nombre de la instancia en la barra de título" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "Restringir mostrar 'acerca de'" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "Mostrar la modal `about` solo para superusuarios" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Nombre de empresa" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "Nombre interno de empresa" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "URL Base" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "URL base para la instancia del servidor" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Moneda predeterminada" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "Seleccione la moneda base para los cálculos de precios" -#: common/models.py:979 -msgid "Download from URL" -msgstr "Descargar desde URL" +#: common/models.py:1126 +msgid "Currency Update Interval" +msgstr "" -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "Permitir la descarga de imágenes y archivos remotos desde la URL externa" +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "Límite de tamaño de descarga" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "Tamaño máximo de descarga permitido para la imagen remota" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "Agente de usuario usado para descargar desde la URL" - -#: common/models.py:999 -msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" -msgstr "Permitir reemplazar el agente de usuario utilizado para descargar imágenes y archivos desde URL externa (dejar en blanco para el valor predeterminado)" - -#: common/models.py:1004 -msgid "Require confirm" -msgstr "Requiere confirmación" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "Requiere confirmación explícita del usuario para ciertas acciones." - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "Profundidad del árbol" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "Profundidad de árbol predeterminada para treeview. Los niveles más profundos pueden ser cargados perezosamente a medida que son necesarios." - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "Actualizar intervalo de actualización" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "Con qué frecuencia comprobar actualizaciones (establecer a cero para desactivar)" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 msgid "days" msgstr "días" -#: common/models.py:1032 +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Descargar desde URL" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Permitir la descarga de imágenes y archivos remotos desde la URL externa" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "Límite de tamaño de descarga" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "Tamaño máximo de descarga permitido para la imagen remota" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "Agente de usuario usado para descargar desde la URL" + +#: common/models.py:1164 +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "Permitir reemplazar el agente de usuario utilizado para descargar imágenes y archivos desde URL externa (dejar en blanco para el valor predeterminado)" + +#: common/models.py:1169 +msgid "Require confirm" +msgstr "Requiere confirmación" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "Requiere confirmación explícita del usuario para ciertas acciones." + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "Profundidad del árbol" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "Profundidad de árbol predeterminada para treeview. Los niveles más profundos pueden ser cargados perezosamente a medida que son necesarios." + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "Actualizar intervalo de actualización" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "Con qué frecuencia comprobar actualizaciones (establecer a cero para desactivar)" + +#: common/models.py:1197 msgid "Automatic Backup" msgstr "Copia de seguridad automática" -#: common/models.py:1033 +#: common/models.py:1198 msgid "Enable automatic backup of database and media files" msgstr "Activar copia de seguridad automática de los archivos de base de datos y medios" -#: common/models.py:1039 +#: common/models.py:1204 msgid "Auto Backup Interval" msgstr "Intervalo de respaldo automático" -#: common/models.py:1040 +#: common/models.py:1205 msgid "Specify number of days between automated backup events" msgstr "Especificar número de días entre eventos automatizados de copia de seguridad" -#: common/models.py:1050 +#: common/models.py:1215 msgid "Task Deletion Interval" msgstr "Intervalo de eliminación de tareas" -#: common/models.py:1051 +#: common/models.py:1216 msgid "Background task results will be deleted after specified number of days" msgstr "Los resultados de las tareas en segundo plano se eliminarán después del número especificado de días" -#: common/models.py:1061 +#: common/models.py:1226 msgid "Error Log Deletion Interval" msgstr "Intervalo de eliminación de registro de errores" -#: common/models.py:1062 +#: common/models.py:1227 msgid "Error logs will be deleted after specified number of days" msgstr "Los registros de errores se eliminarán después del número especificado de días" -#: common/models.py:1072 +#: common/models.py:1237 msgid "Notification Deletion Interval" msgstr "Intervalo de eliminación de notificaciones" -#: common/models.py:1073 +#: common/models.py:1238 msgid "User notifications will be deleted after specified number of days" msgstr "Las notificaciones de usuario se eliminarán después del número especificado de días" -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Soporte de código de barras" -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "Habilitar soporte para escáner de código de barras" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" -#: common/models.py:1090 +#: common/models.py:1255 msgid "Barcode Input Delay" msgstr "Retraso de entrada de código de barras" -#: common/models.py:1091 +#: common/models.py:1256 msgid "Barcode input processing delay time" msgstr "Tiempo de retraso en la lectura de códigos de barras" -#: common/models.py:1101 +#: common/models.py:1266 msgid "Barcode Webcam Support" msgstr "Soporte para Webcam de código de barras" -#: common/models.py:1102 +#: common/models.py:1267 msgid "Allow barcode scanning via webcam in browser" msgstr "Permitir escaneo de código de barras a través de webcam en el navegador" -#: common/models.py:1108 +#: common/models.py:1273 msgid "Part Revisions" msgstr "Revisiones de partes" -#: common/models.py:1109 +#: common/models.py:1274 msgid "Enable revision field for Part" msgstr "Habilitar campo de revisión para parte" -#: common/models.py:1115 +#: common/models.py:1280 msgid "IPN Regex" msgstr "Regex IPN" -#: common/models.py:1116 +#: common/models.py:1281 msgid "Regular expression pattern for matching Part IPN" msgstr "Patrón de expresión regular para IPN de la parte coincidente" -#: common/models.py:1120 +#: common/models.py:1285 msgid "Allow Duplicate IPN" msgstr "Permitir IPN duplicado" -#: common/models.py:1121 +#: common/models.py:1286 msgid "Allow multiple parts to share the same IPN" msgstr "Permitir que varias partes compartan el mismo IPN" -#: common/models.py:1127 +#: common/models.py:1292 msgid "Allow Editing IPN" msgstr "Permitir editar IPN" -#: common/models.py:1128 +#: common/models.py:1293 msgid "Allow changing the IPN value while editing a part" msgstr "Permite cambiar el valor de IPN mientras se edita una parte" -#: common/models.py:1134 +#: common/models.py:1299 msgid "Copy Part BOM Data" msgstr "Copiar parte de datos BOM" -#: common/models.py:1135 +#: common/models.py:1300 msgid "Copy BOM data by default when duplicating a part" msgstr "Copiar datos BOM por defecto al duplicar una parte" -#: common/models.py:1141 +#: common/models.py:1306 msgid "Copy Part Parameter Data" msgstr "Copiar parámetros de parte" -#: common/models.py:1142 +#: common/models.py:1307 msgid "Copy parameter data by default when duplicating a part" msgstr "Copiar datos de parámetro por defecto al duplicar una parte" -#: common/models.py:1148 +#: common/models.py:1313 msgid "Copy Part Test Data" msgstr "Copiar parte de datos de prueba" -#: common/models.py:1149 +#: common/models.py:1314 msgid "Copy test data by default when duplicating a part" msgstr "Copiar datos de parámetro por defecto al duplicar una parte" -#: common/models.py:1155 +#: common/models.py:1320 msgid "Copy Category Parameter Templates" msgstr "Copiar plantillas de parámetros de categoría" -#: common/models.py:1156 +#: common/models.py:1321 msgid "Copy category parameter templates when creating a part" msgstr "Copiar plantillas de parámetros de categoría al crear una parte" -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Plantilla" -#: common/models.py:1163 +#: common/models.py:1328 msgid "Parts are templates by default" msgstr "Las partes son plantillas por defecto" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Montaje" -#: common/models.py:1170 +#: common/models.py:1335 msgid "Parts can be assembled from other components by default" msgstr "Las partes pueden ser ensambladas desde otros componentes por defecto" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Componente" -#: common/models.py:1177 +#: common/models.py:1342 msgid "Parts can be used as sub-components by default" msgstr "Las partes pueden ser usadas como subcomponentes por defecto" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 +#: common/models.py:1348 part/admin.py:53 part/models.py:981 msgid "Purchaseable" msgstr "Comprable" -#: common/models.py:1184 +#: common/models.py:1349 msgid "Parts are purchaseable by default" msgstr "Las partes son comprables por defecto" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Vendible" -#: common/models.py:1191 +#: common/models.py:1356 msgid "Parts are salable by default" msgstr "Las partes se pueden vender por defecto" -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Rastreable" -#: common/models.py:1198 +#: common/models.py:1363 msgid "Parts are trackable by default" msgstr "Las partes son rastreables por defecto" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtual" -#: common/models.py:1205 +#: common/models.py:1370 msgid "Parts are virtual by default" msgstr "Las partes son virtuales por defecto" -#: common/models.py:1211 +#: common/models.py:1376 msgid "Show Import in Views" msgstr "Mostrar importación en vistas" -#: common/models.py:1212 +#: common/models.py:1377 msgid "Display the import wizard in some part views" msgstr "Mostrar el asistente de importación en algunas vistas de partes" -#: common/models.py:1218 +#: common/models.py:1383 msgid "Show related parts" msgstr "Mostrar partes relacionadas" -#: common/models.py:1219 +#: common/models.py:1384 msgid "Display related parts for a part" msgstr "Mostrar partes relacionadas para una parte" -#: common/models.py:1225 +#: common/models.py:1390 msgid "Initial Stock Data" msgstr "Datos iniciales de existencias" -#: common/models.py:1226 +#: common/models.py:1391 msgid "Allow creation of initial stock when adding a new part" msgstr "Permitir la creación del stock inicial al añadir una nueva parte" -#: common/models.py:1232 templates/js/translated/part.js:108 +#: common/models.py:1397 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Datos iniciales del proveedor" -#: common/models.py:1233 +#: common/models.py:1398 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Permitir la creación de datos iniciales del proveedor al agregar una nueva parte" -#: common/models.py:1239 +#: common/models.py:1404 msgid "Part Name Display Format" msgstr "Formato de visualización de Nombre de Parte" -#: common/models.py:1240 +#: common/models.py:1405 msgid "Format to display the part name" msgstr "Formato para mostrar el nombre de la parte" -#: common/models.py:1247 +#: common/models.py:1412 msgid "Part Category Default Icon" msgstr "Icono por defecto de la categoría de parte" -#: common/models.py:1248 +#: common/models.py:1413 msgid "Part category default icon (empty means no icon)" msgstr "Icono por defecto de la categoría de parte (vacío significa que no hay icono)" -#: common/models.py:1253 +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "Forzar unidades de parámetro" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "Si se proporcionan unidades, los valores de parámetro deben coincidir con las unidades especificadas" + +#: common/models.py:1425 msgid "Minimum Pricing Decimal Places" msgstr "Mínimo de lugares decimales en el precio" -#: common/models.py:1254 +#: common/models.py:1426 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Número mínimo de decimales a mostrar al procesar los datos de precios" -#: common/models.py:1264 +#: common/models.py:1436 msgid "Maximum Pricing Decimal Places" msgstr "Máximo de lugares decimales en el precio" -#: common/models.py:1265 +#: common/models.py:1437 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Número máximo de decimales a mostrar al procesar los datos de precios" -#: common/models.py:1275 +#: common/models.py:1447 msgid "Use Supplier Pricing" msgstr "Usar precios de proveedor" -#: common/models.py:1276 +#: common/models.py:1448 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Incluir descuentos de precios del proveedor en los cálculos generales de precios" -#: common/models.py:1282 +#: common/models.py:1454 msgid "Purchase History Override" msgstr "Anulación del historial de compra" -#: common/models.py:1283 +#: common/models.py:1455 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "El precio histórico de compra anula los descuentos de precios del proveedor" -#: common/models.py:1289 +#: common/models.py:1461 msgid "Use Stock Item Pricing" msgstr "Usar precio del artículo de almacén" -#: common/models.py:1290 +#: common/models.py:1462 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Usar los precios de los datos de inventario introducidos manualmente para los cálculos de precios" -#: common/models.py:1296 +#: common/models.py:1468 msgid "Stock Item Pricing Age" msgstr "Edad del precio del artículo de almacén" -#: common/models.py:1297 +#: common/models.py:1469 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Excluir artículos de almacén anteriores a este número de días de los cálculos de precios" -#: common/models.py:1307 +#: common/models.py:1479 msgid "Use Variant Pricing" msgstr "Usar precios variantes" -#: common/models.py:1308 +#: common/models.py:1480 msgid "Include variant pricing in overall pricing calculations" msgstr "Incluir variantes de precios en los cálculos generales de precios" -#: common/models.py:1314 +#: common/models.py:1486 msgid "Active Variants Only" msgstr "Solo variantes activas" -#: common/models.py:1315 +#: common/models.py:1487 msgid "Only use active variant parts for calculating variant pricing" msgstr "Usar solo partes de variantes activas para calcular los precios de variantes" -#: common/models.py:1321 +#: common/models.py:1493 msgid "Pricing Rebuild Interval" msgstr "Intervalo de reconstrucción de precios" -#: common/models.py:1322 +#: common/models.py:1494 msgid "Number of days before part pricing is automatically updated" msgstr "Número de días antes de que el precio de la parte se actualice automáticamente" -#: common/models.py:1332 +#: common/models.py:1504 msgid "Internal Prices" msgstr "Precios internos" -#: common/models.py:1333 +#: common/models.py:1505 msgid "Enable internal prices for parts" msgstr "Habilitar precios internos para partes" -#: common/models.py:1339 +#: common/models.py:1511 msgid "Internal Price Override" msgstr "Anulación del precio interno" -#: common/models.py:1340 +#: common/models.py:1512 msgid "If available, internal prices override price range calculations" msgstr "Si está disponible, los precios internos anulan los cálculos del rango de precios" -#: common/models.py:1346 +#: common/models.py:1518 msgid "Enable label printing" msgstr "Habilitar impresión de etiquetas" -#: common/models.py:1347 +#: common/models.py:1519 msgid "Enable label printing from the web interface" msgstr "Habilitar impresión de etiquetas desde la interfaz web" -#: common/models.py:1353 +#: common/models.py:1525 msgid "Label Image DPI" msgstr "PPP de la imagen de etiqueta" -#: common/models.py:1354 +#: common/models.py:1526 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "Resolución DPI al generar archivos de imagen que suministrar para etiquetar complementos de impresión" -#: common/models.py:1363 +#: common/models.py:1535 msgid "Enable Reports" msgstr "Habilitar informes" -#: common/models.py:1364 +#: common/models.py:1536 msgid "Enable generation of reports" msgstr "Habilitar generación de informes" -#: common/models.py:1370 templates/stats.html:25 +#: common/models.py:1542 templates/stats.html:25 msgid "Debug Mode" msgstr "Modo de depuración" -#: common/models.py:1371 +#: common/models.py:1543 msgid "Generate reports in debug mode (HTML output)" msgstr "Generar informes en modo de depuración (salida HTML)" -#: common/models.py:1377 +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 msgid "Page Size" msgstr "Tamaño de página" -#: common/models.py:1378 +#: common/models.py:1550 msgid "Default page size for PDF reports" msgstr "Tamaño de página predeterminado para informes PDF" -#: common/models.py:1388 +#: common/models.py:1556 msgid "Enable Test Reports" msgstr "Habilitar informes de prueba" -#: common/models.py:1389 +#: common/models.py:1557 msgid "Enable generation of test reports" msgstr "Habilitar generación de informes de prueba" -#: common/models.py:1395 +#: common/models.py:1563 msgid "Attach Test Reports" msgstr "Adjuntar informes de prueba" -#: common/models.py:1396 +#: common/models.py:1564 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Al imprimir un informe de prueba, adjuntar una copia del informe de prueba al artículo de almacén asociado" -#: common/models.py:1402 +#: common/models.py:1570 msgid "Globally Unique Serials" msgstr "Seriales únicos globalmente" -#: common/models.py:1403 +#: common/models.py:1571 msgid "Serial numbers for stock items must be globally unique" msgstr "Los números de serie para los artículos de inventario deben ser únicos globalmente" -#: common/models.py:1409 +#: common/models.py:1577 msgid "Autofill Serial Numbers" msgstr "Autollenar números de serie" -#: common/models.py:1410 +#: common/models.py:1578 msgid "Autofill serial numbers in forms" msgstr "Autorellenar números de serie en formularios" -#: common/models.py:1416 +#: common/models.py:1584 msgid "Delete Depleted Stock" -msgstr "" +msgstr "Eliminar existencias agotadas" -#: common/models.py:1417 +#: common/models.py:1585 msgid "Determines default behaviour when a stock item is depleted" msgstr "Determina el comportamiento predeterminado cuando un artículo de almacén es agotado" -#: common/models.py:1423 +#: common/models.py:1591 msgid "Batch Code Template" msgstr "Plantilla de código de lote" -#: common/models.py:1424 +#: common/models.py:1592 msgid "Template for generating default batch codes for stock items" msgstr "Plantilla para generar códigos de lote por defecto para artículos de almacén" -#: common/models.py:1429 +#: common/models.py:1597 msgid "Stock Expiry" msgstr "Expiración de stock" -#: common/models.py:1430 +#: common/models.py:1598 msgid "Enable stock expiry functionality" msgstr "Habilitar la funcionalidad de expiración de stock" -#: common/models.py:1436 +#: common/models.py:1604 msgid "Sell Expired Stock" msgstr "Vender existencias caducadas" -#: common/models.py:1437 +#: common/models.py:1605 msgid "Allow sale of expired stock" msgstr "Permitir venta de existencias caducadas" -#: common/models.py:1443 +#: common/models.py:1611 msgid "Stock Stale Time" msgstr "Tiempo histórico de Stock" -#: common/models.py:1444 +#: common/models.py:1612 msgid "Number of days stock items are considered stale before expiring" msgstr "Número de días de artículos de stock se consideran obsoletos antes de caducar" -#: common/models.py:1451 +#: common/models.py:1619 msgid "Build Expired Stock" msgstr "Crear Stock Caducado" -#: common/models.py:1452 +#: common/models.py:1620 msgid "Allow building with expired stock" msgstr "Permitir crear con stock caducado" -#: common/models.py:1458 +#: common/models.py:1626 msgid "Stock Ownership Control" msgstr "Control de Stock" -#: common/models.py:1459 +#: common/models.py:1627 msgid "Enable ownership control over stock locations and items" msgstr "Habilitar control de propiedad sobre ubicaciones de stock y artículos" -#: common/models.py:1465 +#: common/models.py:1633 msgid "Stock Location Default Icon" msgstr "Icono por defecto de ubicación de almacén" -#: common/models.py:1466 +#: common/models.py:1634 msgid "Stock location default icon (empty means no icon)" msgstr "Icono por defecto de ubicación de almacén (vacío significa que no hay icono)" -#: common/models.py:1471 +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1646 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1472 +#: common/models.py:1647 msgid "Required pattern for generating Build Order reference field" msgstr "Patrón requerido para generar el campo de referencia de la Orden de Ensamblado" -#: common/models.py:1478 +#: common/models.py:1653 msgid "Enable Return Orders" msgstr "Habilitar órdenes de devolución" -#: common/models.py:1479 +#: common/models.py:1654 msgid "Enable return order functionality in the user interface" msgstr "Habilitar la funcionalidad de orden de devolución en la interfaz de usuario" -#: common/models.py:1485 +#: common/models.py:1660 msgid "Return Order Reference Pattern" msgstr "Patrón de referencia de orden de devolución" -#: common/models.py:1486 +#: common/models.py:1661 msgid "Required pattern for generating Return Order reference field" msgstr "Patrón requerido para generar el campo de referencia de la orden de devolución" -#: common/models.py:1492 +#: common/models.py:1667 msgid "Edit Completed Return Orders" msgstr "Editar ordenes de devolución completadas" -#: common/models.py:1493 +#: common/models.py:1668 msgid "Allow editing of return orders after they have been completed" msgstr "Permitir la edición de ordenes de devolución después de que hayan sido completados" -#: common/models.py:1499 +#: common/models.py:1674 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1500 +#: common/models.py:1675 msgid "Required pattern for generating Sales Order reference field" msgstr "Patrón requerido para generar el campo de referencia de la orden de venta" -#: common/models.py:1506 +#: common/models.py:1681 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1507 +#: common/models.py:1682 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1513 +#: common/models.py:1688 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1514 +#: common/models.py:1689 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1520 +#: common/models.py:1695 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1521 +#: common/models.py:1696 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1527 +#: common/models.py:1702 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1528 +#: common/models.py:1703 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1535 +#: common/models.py:1710 msgid "Enable password forgot" msgstr "Habilitar función de contraseña olvidada" -#: common/models.py:1536 +#: common/models.py:1711 msgid "Enable password forgot function on the login pages" msgstr "Activar la función olvido de contraseña en las páginas de inicio de sesión" -#: common/models.py:1542 +#: common/models.py:1717 msgid "Enable registration" msgstr "Habilitar registro" -#: common/models.py:1543 +#: common/models.py:1718 msgid "Enable self-registration for users on the login pages" msgstr "Activar auto-registro para usuarios en las páginas de inicio de sesión" -#: common/models.py:1549 +#: common/models.py:1724 msgid "Enable SSO" msgstr "Habilitar SSO" -#: common/models.py:1550 +#: common/models.py:1725 msgid "Enable SSO on the login pages" msgstr "Habilitar SSO en las páginas de inicio de sesión" -#: common/models.py:1556 +#: common/models.py:1731 msgid "Enable SSO registration" msgstr "Habilitar registro SSO" -#: common/models.py:1557 +#: common/models.py:1732 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Activar autoregistro a través de SSO para usuarios en las páginas de inicio de sesión" -#: common/models.py:1563 +#: common/models.py:1738 msgid "Email required" msgstr "Email requerido" -#: common/models.py:1564 +#: common/models.py:1739 msgid "Require user to supply mail on signup" msgstr "Requiere usuario para suministrar correo al registrarse" -#: common/models.py:1570 +#: common/models.py:1745 msgid "Auto-fill SSO users" msgstr "Auto-rellenar usuarios SSO" -#: common/models.py:1571 +#: common/models.py:1746 msgid "Automatically fill out user-details from SSO account-data" msgstr "Rellenar automáticamente los datos de usuario de la cuenta SSO" -#: common/models.py:1577 +#: common/models.py:1752 msgid "Mail twice" msgstr "Correo dos veces" -#: common/models.py:1578 +#: common/models.py:1753 msgid "On signup ask users twice for their mail" msgstr "Al registrarse pregunte dos veces a los usuarios por su correo" -#: common/models.py:1584 +#: common/models.py:1759 msgid "Password twice" msgstr "Contraseña dos veces" -#: common/models.py:1585 +#: common/models.py:1760 msgid "On signup ask users twice for their password" msgstr "Al registrarse, preguntar dos veces a los usuarios por su contraseña" -#: common/models.py:1591 +#: common/models.py:1766 msgid "Allowed domains" msgstr "Dominios permitidos" -#: common/models.py:1592 +#: common/models.py:1767 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1598 +#: common/models.py:1773 msgid "Group on signup" msgstr "Grupo al registrarse" -#: common/models.py:1599 +#: common/models.py:1774 msgid "Group to which new users are assigned on registration" msgstr "Grupo al que se asignan nuevos usuarios al registrarse" -#: common/models.py:1605 +#: common/models.py:1780 msgid "Enforce MFA" msgstr "Forzar MFA" -#: common/models.py:1606 +#: common/models.py:1781 msgid "Users must use multifactor security." msgstr "Los usuarios deben utilizar seguridad multifactor." -#: common/models.py:1612 +#: common/models.py:1787 msgid "Check plugins on startup" msgstr "Comprobar complementos al iniciar" -#: common/models.py:1613 +#: common/models.py:1788 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Comprobar que todos los complementos están instalados en el arranque - habilitar en entornos de contenedores" -#: common/models.py:1620 -msgid "Check plugin signatures" -msgstr "Comprobar las firmas del complemento" - -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "Comprobar y mostrar firmas de complementos" - -#: common/models.py:1628 +#: common/models.py:1796 msgid "Enable URL integration" msgstr "Habilitar integración de URL" -#: common/models.py:1629 +#: common/models.py:1797 msgid "Enable plugins to add URL routes" msgstr "Habilitar plugins para añadir rutas de URL" -#: common/models.py:1636 +#: common/models.py:1804 msgid "Enable navigation integration" msgstr "Habilitar integración de navegación" -#: common/models.py:1637 +#: common/models.py:1805 msgid "Enable plugins to integrate into navigation" msgstr "Habilitar plugins para integrar en la navegación" -#: common/models.py:1644 +#: common/models.py:1812 msgid "Enable app integration" msgstr "Habilitar integración de la aplicación" -#: common/models.py:1645 +#: common/models.py:1813 msgid "Enable plugins to add apps" msgstr "Habilitar plugins para añadir aplicaciones" -#: common/models.py:1652 +#: common/models.py:1820 msgid "Enable schedule integration" msgstr "Habilitar integración de programación" -#: common/models.py:1653 +#: common/models.py:1821 msgid "Enable plugins to run scheduled tasks" msgstr "Habilitar plugins para ejecutar tareas programadas" -#: common/models.py:1660 +#: common/models.py:1828 msgid "Enable event integration" msgstr "Habilitar integración de eventos" -#: common/models.py:1661 +#: common/models.py:1829 msgid "Enable plugins to respond to internal events" msgstr "Habilitar plugins para responder a eventos internos" -#: common/models.py:1668 +#: common/models.py:1836 msgid "Enable project codes" msgstr "Habilitar códigos de proyecto" -#: common/models.py:1669 +#: common/models.py:1837 msgid "Enable project codes for tracking projects" msgstr "Habilitar códigos de proyecto para rastrear proyectos" -#: common/models.py:1675 +#: common/models.py:1843 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1676 +#: common/models.py:1844 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1682 +#: common/models.py:1850 +msgid "Exclude External Locations" +msgstr "" + +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "" + +#: common/models.py:1857 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1683 +#: common/models.py:1858 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1692 +#: common/models.py:1867 msgid "Report Deletion Interval" msgstr "Intervalo de borrado de informe" -#: common/models.py:1693 +#: common/models.py:1868 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1710 common/models.py:2147 +#: common/models.py:1885 common/models.py:2314 msgid "Settings key (must be unique - case insensitive" msgstr "Tecla de ajustes (debe ser única - mayúsculas y minúsculas" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" -msgstr "No hay impresora (Exportar a PDF)" - -#: common/models.py:1751 +#: common/models.py:1925 msgid "Hide inactive parts" msgstr "Ocultar partes inactivas" -#: common/models.py:1752 +#: common/models.py:1926 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Ocultar partes inactivas en los resultados mostrados en la página de inicio" -#: common/models.py:1758 +#: common/models.py:1932 msgid "Show subscribed parts" msgstr "Mostrar partes suscritas" -#: common/models.py:1759 +#: common/models.py:1933 msgid "Show subscribed parts on the homepage" msgstr "Mostrar las partes suscritas en la página principal" -#: common/models.py:1765 +#: common/models.py:1939 msgid "Show subscribed categories" msgstr "Mostrar categorías suscritas" -#: common/models.py:1766 +#: common/models.py:1940 msgid "Show subscribed part categories on the homepage" msgstr "Mostrar categorías de partes suscritas en la página de inicio" -#: common/models.py:1772 +#: common/models.py:1946 msgid "Show latest parts" msgstr "Mostrar últimas partes" -#: common/models.py:1773 +#: common/models.py:1947 msgid "Show latest parts on the homepage" msgstr "Mostrar las últimas partes en la página de inicio" -#: common/models.py:1779 -msgid "Recent Part Count" -msgstr "Conteo de Partes Recientes" - -#: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "Número de partes recientes a mostrar en la página de índice" - -#: common/models.py:1786 +#: common/models.py:1953 msgid "Show unvalidated BOMs" msgstr "Mostrar BOMs no validadas" -#: common/models.py:1787 +#: common/models.py:1954 msgid "Show BOMs that await validation on the homepage" msgstr "Mostrar BOMs que esperan validación en la página de inicio" -#: common/models.py:1793 +#: common/models.py:1960 msgid "Show recent stock changes" msgstr "Mostrar cambios recientes de stock" -#: common/models.py:1794 +#: common/models.py:1961 msgid "Show recently changed stock items on the homepage" msgstr "Mostrar artículos de stock recientemente modificados en la página de inicio" -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "Conteo Reciente de Stock" - -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "Número de artículos de stock recientes a mostrar en la página de índice" - -#: common/models.py:1807 +#: common/models.py:1967 msgid "Show low stock" msgstr "Mostrar stock bajo" -#: common/models.py:1808 +#: common/models.py:1968 msgid "Show low stock items on the homepage" msgstr "Mostrar artículos de stock bajo en la página de inicio" -#: common/models.py:1814 +#: common/models.py:1974 msgid "Show depleted stock" msgstr "Mostrar stock agotado" -#: common/models.py:1815 +#: common/models.py:1975 msgid "Show depleted stock items on the homepage" msgstr "Mostrar artículos agotados en la página de inicio" -#: common/models.py:1821 +#: common/models.py:1981 msgid "Show needed stock" msgstr "Mostrar stock necesario" -#: common/models.py:1822 +#: common/models.py:1982 msgid "Show stock items needed for builds on the homepage" msgstr "Mostrar artículos de stock necesarios para trabajos en la página de inicio" -#: common/models.py:1828 +#: common/models.py:1988 msgid "Show expired stock" msgstr "Mostrar stock caducado" -#: common/models.py:1829 +#: common/models.py:1989 msgid "Show expired stock items on the homepage" msgstr "Mostrar artículos de stock caducados en la página de inicio" -#: common/models.py:1835 +#: common/models.py:1995 msgid "Show stale stock" msgstr "Mostrar stock obsoleto" -#: common/models.py:1836 +#: common/models.py:1996 msgid "Show stale stock items on the homepage" msgstr "Mostrar artículos de stock obsoletos en la página de inicio" -#: common/models.py:1842 +#: common/models.py:2002 msgid "Show pending builds" msgstr "Mostrar trabajos pendientes" -#: common/models.py:1843 +#: common/models.py:2003 msgid "Show pending builds on the homepage" msgstr "Mostrar trabajos pendientes en la página de inicio" -#: common/models.py:1849 +#: common/models.py:2009 msgid "Show overdue builds" msgstr "Mostrar trabajos vencidos" -#: common/models.py:1850 +#: common/models.py:2010 msgid "Show overdue builds on the homepage" msgstr "Mostrar trabajos pendientes en la página de inicio" -#: common/models.py:1856 +#: common/models.py:2016 msgid "Show outstanding POs" msgstr "Mostrar Órdenes de Compra Pendientes" -#: common/models.py:1857 +#: common/models.py:2017 msgid "Show outstanding POs on the homepage" msgstr "Mostrar las OC destacadas en la página de inicio" -#: common/models.py:1863 +#: common/models.py:2023 msgid "Show overdue POs" msgstr "Mostrar OC atrasadas" -#: common/models.py:1864 +#: common/models.py:2024 msgid "Show overdue POs on the homepage" msgstr "Mostrar las OC vencidas en la página de inicio" -#: common/models.py:1870 +#: common/models.py:2030 msgid "Show outstanding SOs" msgstr "Mostrar OV pendiemtes" -#: common/models.py:1871 +#: common/models.py:2031 msgid "Show outstanding SOs on the homepage" msgstr "Mostrar OV pendientes en la página de inicio" -#: common/models.py:1877 +#: common/models.py:2037 msgid "Show overdue SOs" msgstr "Mostrar OV atrasadas" -#: common/models.py:1878 +#: common/models.py:2038 msgid "Show overdue SOs on the homepage" msgstr "Mostrar OV atrasadas en la página de inicio" -#: common/models.py:1884 +#: common/models.py:2044 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:1885 +#: common/models.py:2045 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:1891 +#: common/models.py:2051 msgid "Show News" -msgstr "Mostrar noticias" +msgstr "Mostrar novedades" -#: common/models.py:1892 +#: common/models.py:2052 msgid "Show news on the homepage" msgstr "Mostrar las últimas novedades de InvenTree en la página de inicio" -#: common/models.py:1898 +#: common/models.py:2058 msgid "Inline label display" msgstr "Mostrar etiqueta interior" -#: common/models.py:1899 +#: common/models.py:2059 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Mostrar etiquetas PDF en el navegador, en lugar de descargar como un archivo" -#: common/models.py:1905 +#: common/models.py:2065 msgid "Default label printer" msgstr "Impresora predeterminada" -#: common/models.py:1906 +#: common/models.py:2066 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:1912 +#: common/models.py:2072 msgid "Inline report display" msgstr "Mostrar informe en línea" -#: common/models.py:1913 +#: common/models.py:2073 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Mostrar informes PDF en el navegador, en lugar de descargar como un archivo" -#: common/models.py:1919 +#: common/models.py:2079 msgid "Search Parts" msgstr "Buscar partes" -#: common/models.py:1920 +#: common/models.py:2080 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1926 +#: common/models.py:2086 msgid "Search Supplier Parts" msgstr "Buscar partes de proveedor" -#: common/models.py:1927 +#: common/models.py:2087 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:1933 +#: common/models.py:2093 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:1934 +#: common/models.py:2094 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:1940 +#: common/models.py:2100 msgid "Hide Inactive Parts" msgstr "Ocultar Partes Inactivas" -#: common/models.py:1941 +#: common/models.py:2101 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:1947 +#: common/models.py:2107 msgid "Search Categories" msgstr "Buscar categorías" -#: common/models.py:1948 +#: common/models.py:2108 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1954 +#: common/models.py:2114 msgid "Search Stock" msgstr "Buscar inventario" -#: common/models.py:1955 +#: common/models.py:2115 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1961 +#: common/models.py:2121 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:1962 +#: common/models.py:2122 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:1968 +#: common/models.py:2128 msgid "Search Locations" msgstr "Buscar ubicaciones" -#: common/models.py:1969 +#: common/models.py:2129 msgid "Display stock locations in search preview window" msgstr "Mostrar ubicaciones de almacén en la ventana de vista previa de búsqueda" -#: common/models.py:1975 +#: common/models.py:2135 msgid "Search Companies" msgstr "Buscar empresas" -#: common/models.py:1976 +#: common/models.py:2136 msgid "Display companies in search preview window" msgstr "Mostrar empresas en la ventana de vista previa de búsqueda" -#: common/models.py:1982 +#: common/models.py:2142 msgid "Search Build Orders" msgstr "" -#: common/models.py:1983 +#: common/models.py:2143 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:1989 +#: common/models.py:2149 msgid "Search Purchase Orders" msgstr "Buscar órdenes de compra" -#: common/models.py:1990 +#: common/models.py:2150 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1996 +#: common/models.py:2156 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:1997 +#: common/models.py:2157 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2003 +#: common/models.py:2163 msgid "Search Sales Orders" msgstr "Buscar órdenes de venta" -#: common/models.py:2004 +#: common/models.py:2164 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2010 +#: common/models.py:2170 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2011 +#: common/models.py:2171 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2017 +#: common/models.py:2177 msgid "Search Return Orders" msgstr "Buscar órdenes de devolución" -#: common/models.py:2018 +#: common/models.py:2178 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2024 +#: common/models.py:2184 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2025 +#: common/models.py:2185 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2031 +#: common/models.py:2191 msgid "Search Preview Results" msgstr "Resultados de la vista previa" -#: common/models.py:2032 +#: common/models.py:2192 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2038 +#: common/models.py:2198 msgid "Regex Search" msgstr "Búsqueda Regex" -#: common/models.py:2039 +#: common/models.py:2199 msgid "Enable regular expressions in search queries" msgstr "Habilitar expresiones regulares en las consultas de búsqueda" -#: common/models.py:2045 +#: common/models.py:2205 msgid "Whole Word Search" msgstr "Búsqueda por palabra completa" -#: common/models.py:2046 +#: common/models.py:2206 msgid "Search queries return results for whole word matches" msgstr "Las consultas de búsqueda devuelven resultados para palabras enteras coincidentes" -#: common/models.py:2052 +#: common/models.py:2212 msgid "Show Quantity in Forms" msgstr "Mostrar cantidad en formularios" -#: common/models.py:2053 +#: common/models.py:2213 msgid "Display available part quantity in some forms" msgstr "Mostrar la cantidad de partes disponibles en algunos formularios" -#: common/models.py:2059 +#: common/models.py:2219 msgid "Escape Key Closes Forms" msgstr "Formularios de cierre de teclas de escape" -#: common/models.py:2060 +#: common/models.py:2220 msgid "Use the escape key to close modal forms" msgstr "Usa la clave de escape para cerrar formularios modales" -#: common/models.py:2066 +#: common/models.py:2226 msgid "Fixed Navbar" msgstr "Barra de navegación fija" -#: common/models.py:2067 +#: common/models.py:2227 msgid "The navbar position is fixed to the top of the screen" msgstr "La posición de la barra de navegación se fija en la parte superior de la pantalla" -#: common/models.py:2073 +#: common/models.py:2233 msgid "Date Format" msgstr "Formato de Fecha" -#: common/models.py:2074 +#: common/models.py:2234 msgid "Preferred format for displaying dates" msgstr "Formato preferido para mostrar fechas" -#: common/models.py:2088 part/templates/part/detail.html:41 +#: common/models.py:2248 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Planificación de partes" -#: common/models.py:2089 +#: common/models.py:2249 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 +#: common/models.py:2255 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2096 +#: common/models.py:2256 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2102 +#: common/models.py:2262 msgid "Table String Length" msgstr "" -#: common/models.py:2103 +#: common/models.py:2263 msgid "Maximimum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2112 +#: common/models.py:2272 msgid "Default part label template" msgstr "" -#: common/models.py:2113 +#: common/models.py:2273 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2121 +#: common/models.py:2281 msgid "Default stock item template" msgstr "" -#: common/models.py:2122 +#: common/models.py:2282 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2130 +#: common/models.py:2290 msgid "Default stock location label template" msgstr "" -#: common/models.py:2131 +#: common/models.py:2291 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2177 +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "Cantidad de salto de precio" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Precio" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "Precio unitario a la cantidad especificada" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "Punto final en el que se recibe este webhook" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "Nombre para este webhook" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "Activo" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "Está activo este webhook" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "Token" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "Token para el acceso" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "Clave" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "Secreto compartido para HMAC" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "ID de mensaje" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "Identificador único para este mensaje" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "Host" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "Servidor desde el cual se recibió este mensaje" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "Encabezado" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "Encabezado del mensaje" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "Cuerpo" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "Cuerpo de este mensaje" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "Endpoint en el que se recibió este mensaje" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "Trabajado en" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "¿El trabajo en este mensaje ha terminado?" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "Id" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" -msgstr "Titulo" +msgstr "Título" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "Publicado" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "Autor" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "Resumen" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "Leer" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" -msgstr "¿Esta noticia fue leída?" +msgstr "¿Esta noticia ya fue leída?" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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 "Imágen" -#: common/models.py:2737 +#: common/models.py:2902 msgid "Image file" msgstr "Archivo de imagen" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "Nombre de unidad" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "Símbolo" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "Símbolo de unidad opcional" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "Definición" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "Definición de unidad" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "Nuevo {verbose_name}" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "Se ha creado un nuevo pedido y se le ha asignado" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "Artículos Recibidos" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "Los artículos han sido recibidos contra una orden de compra" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "Los artículos han sido recibidos contra una orden de devolución" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "Error generado por el complemento" @@ -3478,7 +3580,7 @@ msgstr "Falló la coincidencia de campos" msgid "Parts imported" msgstr "Partes importadas" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3491,15 +3593,15 @@ msgstr "Paso anterior" #: company/models.py:106 msgid "Company description" -msgstr "Descripción de la compañía" +msgstr "Descripción de la empresa" #: company/models.py:107 msgid "Description of the company" msgstr "Descripción de la empresa" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "Página web" @@ -3507,331 +3609,395 @@ msgstr "Página web" msgid "Company website URL" msgstr "URL del sitio web de la empresa" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Dirección" - -#: company/models.py:119 -msgid "Company address" -msgstr "Dirección de la empresa" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Teléfono" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "Teléfono de contacto" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "Correo electrónico" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "Correo electrónico de contacto" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Contacto" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "Punto de contacto" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "Enlace a información externa de la empresa" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "es cliente" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "¿Vendes artículos a esta empresa?" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "es proveedor" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "¿Compras artículos de esta empresa?" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "es fabricante" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "¿Esta empresa fabrica partes?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "Moneda predeterminada utilizada para esta empresa" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Empresa" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "Seleccionar empresa" + +#: company/models.py:337 +msgid "Address title" +msgstr "Título de dirección" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "Título que describe la entrada de dirección" + +#: company/models.py:342 +msgid "Primary address" +msgstr "Dirección principal" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "Establecer como dirección principal" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "Línea 1" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "Dirección línea 1" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "Línea 2" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "Dirección línea 2" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "Código postal" + +#: company/models.py:361 +msgid "City/Region" +msgstr "Ciudad/región" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "Código postal de ciudad/región" + +#: company/models.py:366 +msgid "State/Province" +msgstr "Estado/provincia" + +#: company/models.py:367 +msgid "State or province" +msgstr "Estado o provincia" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "País" + +#: company/models.py:372 +msgid "Address country" +msgstr "Dirección de país" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "Notas de envío de mensajería" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "Notas para el mensajero de envío" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "Notas de envío internas" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "Notas de envío para uso interno" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "Enlace a información de dirección (externa)" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Parte base" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "Seleccionar parte" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Fabricante" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Seleccionar fabricante" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "MPN" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "Número de parte de fabricante" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "URL para el enlace de parte del fabricante externo" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "Descripción de la parte del fabricante" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Parte del fabricante" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "Nombre del parámetro" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Valor" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "Valor del parámetro" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "Unidades" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "Unidades de parámetro" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" -msgstr "Las unidades de paquete deben ser compatibles con las unidades de piezas de base" +msgstr "Las unidades de paquete deben ser compatibles con las unidades de partes de base" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "Las unidades de paquete deben ser mayor que cero" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "La parte vinculada del fabricante debe hacer referencia a la misma parte base" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Proveedor" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "Seleccionar proveedor" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "SKU" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "Unidad de mantenimiento de stock de proveedores" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "Seleccionar parte del fabricante" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "URL del enlace de parte del proveedor externo" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "Descripción de la parte del proveedor" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "Nota" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "costo base" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "Cargo mínimo (p. ej., cuota de almacenamiento)" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Paquetes" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "Embalaje de partes" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "Cantidad de paquete" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "Cantidad total suministrada en un solo paquete. Dejar vacío para artículos individuales." -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "múltiple" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "Pedido múltiple" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "Disponible" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "Cantidad disponible del proveedor" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "Disponibilidad actualizada" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "Fecha de última actualización de los datos de disponibilidad" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "Moneda predeterminada utilizada para este proveedor" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "Crear orden de compra" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "Acciones de empresa" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "Editar datos de la empresa" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" -msgstr "Modificar Empresa" +msgstr "Editar empresa" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "Eliminar empresa" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "Eliminar Empresa" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "Eliminar Empresa" msgid "Part image" msgstr "Imagen de parte" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Cargar nueva imagen" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Descargar desde URL" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "Borrar imagen" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Cliente" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "Usa la moneda predeterminada" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Dirección" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "Teléfono" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "Quitar imagen" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "Eliminar imagen asociada a esta empresa" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "Eliminar" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "Cargar Imagen" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "Descargar imagen" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "Partes de Proveedor" @@ -3916,156 +4089,144 @@ msgstr "Crear nueva parte del proveedor" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "Nueva Parte de Proveedor" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "Partes de pedido" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "Eliminar partes" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "Eliminar Partes" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "Partes del fabricante" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "Crear nueva parte de fabricante" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "Nueva parte de fabricante" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "Stock del Proveedor" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "Ordenes de compra" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "Crear nueva orden de compra" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "Nueva orden de compra" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "Órdenes de venta" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "Crear Orden de Venta" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "Nueva orden de venta" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "Stock asignado" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "Ordenes de devolución" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "Crear nueva orden de devolución" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "Nueva orden de devolución" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "Notas de la empresa" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "Contactos de la empresa" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "Añadir contacto" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "Listado de proveedores" +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "Direcciones de la empresa" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "Añadir dirección" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "Fabricantes" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "Pedir ítem" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "Editar fabricante de la parte" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "Eliminar fabricante de la parte" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "Componente interno" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "No hay información del fabricante disponible" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "Proveedores" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "Eliminar partes del proveedor" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "Eliminar" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parámetros" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "Nuevo parámetro" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "Eliminar parámetro" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "Añadir parámetro" @@ -4137,106 +4280,111 @@ msgstr "Elementos de Stock Asignados" msgid "Contacts" msgstr "Contactos" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "Direcciones" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "Parte del proveedor" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "Acciones de partes del proveedor" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "Pedir ítem" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "Actualizar disponibilidad" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "Editar Parte del Proveedor" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "Duplicar parte del proveedor" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "Eliminar parte del proveedor" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "Eliminar parte del proveedor" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "No hay información de proveedor disponible" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "Stock del Proveedor" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "Crear nuevo artículo de stock" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Nuevo artículo de stock" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "Pedidos de partes al proveedor" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "Información de precios" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "Agregar descuento de precio" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "Código QR de parte del proveedor" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "Enlazar código de barras a la parte del proveedor" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "Actualizar disponibilidad de parte" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "Elementos de stock" @@ -4244,103 +4392,96 @@ msgstr "Elementos de stock" msgid "Supplier Part Pricing" msgstr "Precio de parte del proveedor" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "Nuevo Proveedor" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "Nuevo Fabricante" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "Clientes" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "Nuevo Cliente" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "Empresas" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" -msgstr "Nueva Compañía" +msgstr "Nueva empresa" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "Nombre etiqueta" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "Descripción de etiqueta" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "Etiqueta" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "Archivo de plantilla de etiqueta" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "Habilitado" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "Plantilla de etiqueta habilitada" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "Ancho [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "Ancho de la etiqueta, especificado en mm" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "Altura [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "Altura de la etiqueta, especificada en mm" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "Patrón de Nombre de archivo" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "Patrón para generar nombres de archivo de etiquetas" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," -msgstr "Crear filtros de consulta (lista separada por comas de pares clave=valor)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "Filtros" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "Crear filtros de consulta (lista separada por comas de pares clave=valor" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "Filtros de búsqueda de partes (valor separado por comas de pares clave=valor)" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" -msgstr "Código QC" +msgid "QR Code" +msgstr "Código QR" #: label/templates/label/part/part_label_code128.html:31 #: label/templates/label/stocklocation/qr_and_text.html:31 @@ -4348,569 +4489,573 @@ msgstr "Código QC" msgid "QR code" msgstr "Código QR" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "Precio Total" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "No se encontró ninguna orden de compra coincidente" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "Orden de compra" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "Orden de devolución" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "Desconocido" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "Precio total para este pedido" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "Moneda de pedido" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "Moneda para este pedido (dejar en blanco para utilizar el valor predeterminado de la empresa)" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "El contacto no coincide con la empresa seleccionada" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "Descripción del pedido (opcional)" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "Seleccione el código del proyecto para este pedido" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "Enlace a Url externa" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Fecha esperada para la entrega del pedido. El pedido se retrasará después de esta fecha." -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "Creado por" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "Usuario o grupo responsable de este pedido" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "Punto de contacto para este pedido" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "Dirección de la empresa para este pedido" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "Referencia del pedido" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "Estado de la orden de compra" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" -msgstr "Compañía de la que se están encargando los artículos" +msgstr "Empresa de la cual se están encargando los artículos" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "Referencia del proveedor" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "Código de referencia de pedido del proveedor" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "recibido por" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "Fecha de emisión" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "Fecha de expedición del pedido" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "La fecha de pedido fue completada" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "El proveedor de la parte debe coincidir con el proveedor de PO" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "La cantidad debe ser un número positivo" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "Empresa a la que se venden los artículos" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "Referencia del cliente " -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "Código de referencia de pedido del cliente" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "Fecha de envío" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "enviado por" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "El pedido no se puede completar porque no se han asignado partes" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "Sólo una orden abierta puede ser marcada como completa" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "El pedido no se puede completar porque hay envíos incompletos" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" -msgstr "El pedido no se puede completar porque hay artículos de línea incompletos" +msgstr "El pedido no se puede completar porque hay partidas incompletas" #: order/models.py:1074 msgid "Item quantity" msgstr "Cantidad del artículo" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" -msgstr "Referencia de línea en la orden" +msgstr "Referencia de partida" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" -msgstr "Notas del artículo de línea" +msgstr "Notas de partida" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" -msgstr "Fecha objetivo para este artículo de línea (dejar en blanco para usar la fecha de destino de la orden)" +msgstr "Fecha objetivo para esta partida (dejar en blanco para usar la fecha de destino de la orden)" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" -msgstr "Descripción del artículo de línea (opcional)" +msgstr "Descripción de partida (opcional)" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "Contexto" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "Contexto adicional para esta línea" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "Precio unitario" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "La parte del proveedor debe coincidir con el proveedor" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "eliminado" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "Orden" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "Parte del proveedor" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "Recibido" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "Número de artículos recibidos" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Precio de Compra" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "Precio de compra unitario" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "¿Dónde quiere el comprador almacenar este objeto?" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "Una parte virtual no puede ser asignada a un pedido de venta" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "Sólo las partes vendibles pueden ser asignadas a un pedido de venta" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Precio de Venta" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "Precio de venta unitario" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "Cantidad enviada" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "Fecha del envío" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "Fecha de entrega" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "Fecha de entrega del envío" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "Revisado por" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "Usuario que revisó este envío" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Envío" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "Número de envío" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "Número de Seguimiento" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "Información de seguimiento del envío" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "Número de factura" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "Número de referencia para la factura asociada" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "El envío ya ha sido enviado" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "El envío no tiene artículos de stock asignados" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "El artículo de stock no ha sido asignado" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "No se puede asignar el artículo de stock a una línea con una parte diferente" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "No se puede asignar stock a una línea sin una parte" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "La cantidad de asignación no puede exceder la cantidad de stock" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "La cantidad debe ser 1 para el stock serializado" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "La orden de venta no coincide con el envío" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "El envío no coincide con el pedido de venta" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "Línea" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "Referencia del envío del pedido de venta" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "Ítem" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "Seleccionar artículo de stock para asignar" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "Especificar la cantidad de asignación de stock" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "Referencia de la orden de devolución" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" -msgstr "Compañía de la que se están devolviendo los artículos" +msgstr "Empresa de la cual se están devolviendo los artículos" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "Estado de la orden de devolución" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "Sólo los artículos serializados pueden ser asignados a una orden de devolución" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "Seleccionar el artículo a devolver del cliente" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "Fecha de recepción" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "La fecha en la que se recibió este artículo de devolución" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Resultado" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" -msgstr "Salida para este artículo de línea" +msgstr "Salida para esta partida" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" -msgstr "Costo asociado con la devolución o reparación para este artículo de línea" +msgstr "Costo asociado con la devolución o reparación para esta partida" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "El pedido no puede ser cancelado" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" -msgstr "Permitir cerrar el pedido con artículos de línea incompletos" +msgstr "Permitir cerrar el pedido con partidas incompletas" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" -msgstr "El pedido tiene artículos de línea incompletos" +msgstr "El pedido tiene partidas incompletas" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "El pedido no está abierto" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "Moneda del precio de compra" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "Debe especificar la parte del proveedor" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "La orden de compra debe especificarse" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "El proveedor debe coincidir con la orden de compra" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "La orden de compra debe coincidir con el proveedor" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" -msgstr "Artículo en línea" +msgstr "Partida" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" -msgstr "La línea del artículo no coincide con la orden de compra" +msgstr "La partida no coincide con la orden de compra" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "Seleccione la ubicación de destino para los artículos recibidos" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "Introduzca el código de lote para los artículos de almacén entrantes" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "Introduzca números de serie para artículos de almacén entrantes" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Código de barras" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "Código de barras escaneado" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "Código de barras en uso" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "Debe proporcionarse una cantidad entera para las partes rastreables" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" -msgstr "Se deben proporcionar artículos de línea" +msgstr "Se deben proporcionar las partidas" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "Se requiere ubicación de destino" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "Los valores del código de barras deben ser únicos" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "Moneda del precio de venta" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "No se proporcionaron detalles de envío" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" -msgstr "Artículo en línea no está asociado con este pedido" +msgstr "La partida no está asociada con este pedido" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "La cantidad debe ser positiva" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "Introduzca números de serie para asignar" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "El envío ya ha sido enviado" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "El envío no está asociado con este pedido" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "No se han encontrado coincidencias para los siguientes números de serie" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "Los siguientes números de serie ya están asignados" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" -msgstr "Artículo de línea de orden de devolución" - -#: order/serializers.py:1562 -msgid "Line item does not match return order" -msgstr "El artículo de línea no coincide con la orden de devolución" - -#: order/serializers.py:1565 -msgid "Line item has already been received" -msgstr "El artículo de línea ya ha sido recibido" +msgstr "Partida de orden de devolución" #: order/serializers.py:1597 +msgid "Line item does not match return order" +msgstr "La partida no coincide con la orden de devolución" + +#: order/serializers.py:1600 +msgid "Line item has already been received" +msgstr "La partida ya ha sido recibida" + +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "Los artículos sólo pueden ser recibidos contra pedidos en curso" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "Moneda de precio de línea" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "Orden de compra atrasada" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "La orden de compra {po} está atrasada" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "Orden de venta atrasada" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "La orden de venta {so} está atrasada" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "Imprimir informe de orden de compra" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "Exportar pedido a archivo" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "Acciones de pedido" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "Editar pedido" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "Cancelar orden" @@ -4949,90 +5094,82 @@ msgstr "Duplicar orden" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "Emitir pedido" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "Recibir artículos" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "Recibir artículos" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "Marcar pedido como completado" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "Completar pedido" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "Miniatura de la parte del proveedor" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "Referencia del pedido" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "Descripción del pedido" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "Estado del pedido" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "No hay información disponible sobre el proveedor" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" -msgstr "Artículos de línea completados" +msgstr "Partidas completadas" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "Incompleto" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "Emitido" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "Costo total" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "No se ha podido calcular el costo total" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "Código QR de la orden de compra" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "Vincular código de barras a la orden de compra" @@ -5085,13 +5222,13 @@ msgstr "Duplicar selección" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Eliminar fila" @@ -5139,7 +5276,7 @@ msgstr "Paso %(step)s de %(count)s" #: report/templates/report/inventree_return_order_report_base.html:19 #: report/templates/report/inventree_so_report_base.html:22 msgid "Line Items" -msgstr "Línea de pedido" +msgstr "Partidas" #: order/templates/order/po_sidebar.html:7 msgid "Received Stock" @@ -5152,43 +5289,38 @@ msgstr "Comprar artículos de orden" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" -msgstr "Añadir artículo de línea" +msgstr "Añadir partida" #: order/templates/order/purchase_order_detail.html:31 #: order/templates/order/purchase_order_detail.html:32 #: order/templates/order/return_order_detail.html:28 #: order/templates/order/return_order_detail.html:29 msgid "Receive Line Items" -msgstr "Recibir artículos de línea" +msgstr "Recibir partidas" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "Eliminar artículos de línea" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "Líneas Adicionales" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "Añadir línea adicional" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "Articulos Recibidos" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "Notas del pedido" @@ -5197,40 +5329,40 @@ msgstr "Notas del pedido" msgid "Customer logo thumbnail" msgstr "Miniatura del logo del cliente" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "Imprimir informe de orden de devolución" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "Imprimir lista de empaquetado" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "Referencia del cliente" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "Costo Total" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "Devolver código QR del pedido" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "Enlazar código de barras al pedido de devolución" @@ -5238,35 +5370,35 @@ msgstr "Enlazar código de barras al pedido de devolución" msgid "Order Details" msgstr "Detalles del pedido" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "Imprimir informe de orden de venta" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "Enviar artículos" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "Ordenes de venta completas" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "Esta orden de venta no ha sido completamente asignada" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "Envíos completados" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "Código QR del pedido de ventas" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "Enlazar código de barras al pedido de venta" @@ -5274,18 +5406,17 @@ msgstr "Enlazar código de barras al pedido de venta" msgid "Sales Order Items" msgstr "Artículos de Pedidos de Venta" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "Envíos pendientes" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Acciones" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "Nuevo Envío" @@ -5293,64 +5424,65 @@ msgstr "Nuevo Envío" msgid "Match Supplier Parts" msgstr "Coincidir partes de proveedor" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "Orden de venta no encontrada" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "Precio no encontrado" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "Actualizado el precio unitario de {part} a {price}" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "Actualizado el precio unitario de {part} a {price} y la cantidad a {qty}" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "ID de Parte" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "Nombre de parte" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "Descripción de parte" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "IPN" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "Revisión" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Palabras claves" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "ID de Categoría" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "Nombre de categoría" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "ID de ubicación predeterminada" @@ -5358,24 +5490,24 @@ msgstr "ID de ubicación predeterminada" msgid "Default Supplier ID" msgstr "ID de proveedor predeterminado" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variante de" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Stock mínimo" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "En Stock" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "En pedido" @@ -5383,115 +5515,108 @@ msgstr "En pedido" msgid "Used In" msgstr "Usado en" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "Asignadas" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "En construcción" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "Costo mínimo" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "Costo máximo" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "Identificador de la clase o especie padre" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "Nombre del padre" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "Ruta de Categoría" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "Partes" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "Nivel de BOM" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "ID de artículo de BOM" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "IPN del padre" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "IPN de la parte" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Precio mínimo" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Precio máximo" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "Orden de compra entrante" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "Orden de venta saliente" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "Válido" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "Validación de Lista de Materiales" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "Esta opción debe ser seleccionada" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Ubicación Predeterminada" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Inventario Total" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "Stock Disponible" @@ -5499,461 +5624,468 @@ msgstr "Stock Disponible" msgid "Input quantity for price calculation" msgstr "Cantidad de entrada para el cálculo del precio" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Categoría de parte" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "Categorías de parte" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "Ubicación predeterminada para partes de esta categoría" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Estructural" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Las partes no pueden asignarse directamente a una categoría estructural, pero pueden asignarse a categorías hijas." -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "Palabras clave predeterminadas" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "Palabras clave por defecto para partes en esta categoría" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "Icono" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "Icono (opcional)" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "¡No puedes hacer que esta categoría de partes sea estructural porque algunas partes ya están asignadas!" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "Opción no válida para la parte principal" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" -msgstr "La parte '{p1}' se utiliza en BOM para '{p2}' (recursivo)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "El IPN debe coincidir con la expresión regular {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "Ya existe un artículo de almacén con este número de serie" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "IPN duplicado no permitido en la configuración de partes" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "Parte con este nombre, IPN y revisión ya existe." -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "¡No se pueden asignar partes a las categorías de partes estructurales!" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "Nombre de la parte" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "Es plantilla" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "¿Es esta parte una parte de la plantilla?" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "¿Es esta parte una variante de otra parte?" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "Descripción de parte (opcional)" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "Palabras clave para mejorar la visibilidad en los resultados de búsqueda" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "Categoría" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "Categoría de parte" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "Número de parte interna" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "Revisión de parte o número de versión" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "¿Dónde se almacena este artículo normalmente?" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Proveedor por defecto" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "Parte de proveedor predeterminada" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "Expiración por defecto" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "Tiempo de expiración (en días) para los artículos de stock de esta parte" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "Nivel mínimo de stock permitido" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "Unidades de medida para esta parte" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "¿Se puede construir esta parte a partir de otras partes?" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "¿Se puede utilizar esta parte para construir otras partes?" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "¿Esta parte tiene seguimiento de objetos únicos?" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "¿Se puede comprar esta parte a proveedores externos?" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "¿Se puede vender esta parte a los clientes?" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "¿Está activa esta parte?" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "¿Es ésta una parte virtual, como un producto de software o una licencia?" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "Suma de verificación de BOM" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "Suma de verificación de BOM almacenada" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "BOM comprobado por" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "Fecha BOM comprobada" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "Creación de Usuario" -#: part/models.py:1042 -msgid "User responsible for this part" -msgstr "Usuario responsable de esta parte" +#: part/models.py:1014 +msgid "Owner responsible for this part" +msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "Último inventario" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "Vender múltiples" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "Moneda utilizada para almacenar en caché los cálculos de precios" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "Costo mínimo de BOM" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "Costo mínimo de partes de componentes" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "Costo máximo de BOM" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "Costo máximo de partes de componentes" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "Costo mínimo de compra" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "Costo histórico mínimo de compra" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "Costo máximo de compra" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "Costo histórico máximo de compra" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "Precio interno mínimo" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "Precio interno máximo" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "Costo máximo basado en precios reducidos internos" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "Precio mínimo de proveedor" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "Precio mínimo de la parte de proveedores externos" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "Precio máximo de proveedor" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "Precio máximo de la parte de proveedores externos" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "Costo mínimo de variante" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "Costo mínimo calculado de las partes variantes" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "Costo máximo de variante" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "Costo máximo calculado de las partes variantes" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "Precio de venta mínimo" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "Precio de venta mínimo basado en precios reducidos" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "Precio de venta máximo" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "Precio de venta máximo basado en precios reducidos" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "Costo de venta mínimo" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "Precio de venta mínimo histórico" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "Número de artículos" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "Fecha" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "Notas adicionales" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "Informe" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "Número de partes" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "Las plantillas de prueba sólo pueden ser creadas para partes rastreables" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "Ya existe una prueba con este nombre para esta parte" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "Nombre de prueba" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "Introduzca un nombre para la prueba" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "Descripción de prueba" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "Introduce la descripción para esta prueba" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Requerido" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "¿Es necesario pasar esta prueba?" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "Requiere valor" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "¿Esta prueba requiere un valor al agregar un resultado de la prueba?" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "Adjunto obligatorio" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "¿Esta prueba requiere un archivo adjunto al agregar un resultado de la prueba?" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "El nombre de parámetro en la plantilla tiene que ser único" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "Nombre de Parámetro" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" -msgstr "" +msgstr "Casilla de verificación" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" -msgstr "" +msgstr "¿Es este parámetro una casilla de verificación?" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" -msgstr "" +msgstr "Opciones" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" -msgstr "" +msgstr "Opciones válidas para este parámetro (separados por comas)" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" -msgstr "" +msgstr "Opción inválida para el valor del parámetro" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "Parte principal" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "Plantilla de parámetro" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "Datos" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "Valor del parámetro" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "Valor predeterminado" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "Valor de parámetro por defecto" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "ID de parte o nombre de parte" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" -msgstr "" +msgstr "Valor de ID de parte única" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" -msgstr "" +msgstr "Valor IPN de parte" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "Nivel" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "Nivel de BOM" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "Item de Lista de Materiales" + +#: part/models.py:3771 msgid "Select parent part" msgstr "Seleccionar parte principal" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "Sub parte" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "Seleccionar parte a utilizar en BOM" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "Cantidad del artículo en BOM" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "Opcional" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "Este artículo BOM es opcional" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "Consumible" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" -msgstr "" +msgstr "Este artículo de BOM es consumible (no está rastreado en órdenes de construcción)" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Exceso" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Cantidad estimada de desperdicio de construcción (absoluta o porcentaje)" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "Referencia de artículo de BOM" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "Notas del artículo de BOM" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "Suma de verificación" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "Suma de verificación de línea de BOM" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Validado" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" -msgstr "" +msgstr "Este artículo de BOM ha sido validado" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Este artículo BOM es heredado por BOMs para partes variantes" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Permitir variantes" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Artículos de stock para partes variantes pueden ser usados para este artículo BOM" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "La cantidad debe ser un valor entero para las partes rastreables" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "Debe especificar la subparte" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "Ítem de BOM sustituto" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "La parte sustituta no puede ser la misma que la parte principal" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "Artículo BOM superior" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "Sustituir parte" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "Parte 1" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "Parte 2" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "Seleccionar parte relacionada" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "Moneda de compra de ítem de stock" -#: part/serializers.py:302 +#: part/serializers.py:346 +msgid "No parts selected" +msgstr "" + +#: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 msgid "Original Part" msgstr "Parte original" -#: part/serializers.py:302 +#: part/serializers.py:384 msgid "Select original part to duplicate" msgstr "Seleccione la parte original a duplicar" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy Image" msgstr "Copiar Imagen" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy image from original part" msgstr "Copiar imagen desde la parte original" -#: part/serializers.py:312 part/templates/part/detail.html:296 +#: part/serializers.py:394 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Copiar BOM" -#: part/serializers.py:312 +#: part/serializers.py:394 msgid "Copy bill of materials from original part" msgstr "Copiar la factura de materiales de la parte original" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy Parameters" msgstr "Copiar Parámetros" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy parameter data from original part" msgstr "Copiar datos del parámetro de la parte original" -#: part/serializers.py:327 +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 msgid "Initial Stock Quantity" msgstr "Cantidad Inicial de Stock" -#: part/serializers.py:327 +#: part/serializers.py:414 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:343 +#: part/serializers.py:430 msgid "Select supplier (or leave blank to skip)" msgstr "Seleccione proveedor (o déjelo en blanco para saltar)" -#: part/serializers.py:354 +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "Seleccionar fabricante (o dejar en blanco para saltar)" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "Número de parte del fabricante" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "La empresa seleccionada no es un proveedor válido" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "La empresa seleccionada no es un fabricante válido" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "Duplicar Parte" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "Información del proveedor" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "Añadir información inicial del proveedor para esta parte" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "Copiar Parámetros de Categoría" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "Copiar plantillas de parámetro de la categoría de partes seleccionada" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "Generar informe" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "Actualizar partes" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "Actualizar" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "Seleccionar parte de la que copiar BOM" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "Eliminar Datos Existentes" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "Eliminar artículos BOM existentes antes de copiar" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "Incluye Heredado" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "Incluye artículos BOM que son heredados de partes con plantillas" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "Omitir filas no válidas" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "Activar esta opción para omitir filas inválidas" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "Copiar partes sustitutas" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "Limpiar BOM Existente" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "Varios resultados encontrados" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "No se encontraron partes coincidentes" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "La parte no está designada como componente" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "Cantidad no proporcionada" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "Cantidad no válida" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "Se requiere al menos un artículo BOM" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "Notificación por bajo stock" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "Cantidad Total" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "Costo total mínimo" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "Costo total máximo" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "Notificación por bajo stock" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "No tienes permiso para editar la lista de materiales." @@ -6461,90 +6605,70 @@ msgstr "El BOM para %(part)s fue revisado por última vez por %(checker msgid "The BOM for %(part)s has not been validated." msgstr "El BOM para %(part)s no ha sido validada." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "Acciones BOM" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "Eliminar artículos" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "Estás suscrito a las notificaciones de esta categoría" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "Suscribirse a las notificaciones de esta categoría" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "Acciones de categoría" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "Editar categoría" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "Editar Categoría" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "Eliminar categoría" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "Eliminar Categoría" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "Categoría de partes de nivel superior" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Subcategorías" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "Partes (incluyendo subcategorías)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "Crear nueva parte" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "Nueva Parte" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "Opciones" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "Definir categoría" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "Definir Categoría" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "Parámetros de Parte" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "Crear nueva categoría de partes" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "Nueva Categoría" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "Actualizar" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "Inventario" @@ -6604,101 +6728,101 @@ msgstr "Plantillas de prueba de parte" msgid "Add Test Template" msgstr "Añadir Plantilla de Prueba" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "Asignaciones de órdenes de venta" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "Notas de parte" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "Variantes de Parte" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "Crear nueva variante" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "Nueva Variante" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "Añadir nuevo parámetro" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "Partes relacionadas" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "Añadir Relacionado" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "Lista de Materiales" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "Exportar acciones" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "Exportar BOM" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "Imprimir informe BOM" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "Acciones BOM" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "Subir BOM" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "Validar BOM" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "Añadir artículo al BOM" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "Ensamblajes" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "Construcción de partes" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "Construir adjudicaciones de pedidos" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "Proveedores de partes" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "Fabricantes de partes" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "Eliminar partes del fabricante" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "Partes relacionadas" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "Añadir artículos relacionados" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "Añadir plantilla de resultados de prueba" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "Descargar plantilla de importación de parte" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "Formato" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "Seleccionar formato de archivo" @@ -6747,158 +6871,158 @@ msgstr "Seleccionar formato de archivo" msgid "Part List" msgstr "Listado de artículos" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "Estás suscrito a las notificaciones de este artículo" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "Suscríbete a las notificaciones de este artículo" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "Imprimir etiqueta" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "Mostrar información de precios" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "Acciones de stock" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "Contar stock de partes" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "Transferir stock de partes" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "Acciones para partes" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "Duplicar parte" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "Editar parte" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "Eliminar parte" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "La parte es una parte de plantilla (las variantes se pueden hacer a partir de esta parte)" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "La parte puede ser ensamblada desde otras partes" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "La parte puede ser usada en ensamblajes" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "El stock de esta parte está rastreado por número de serie" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "La parte puede ser comprada de proveedores externos" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "La parte puede ser vendida a clientes" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "Inactivo" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "La parte es virtual (no una parte física)" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "Mostrar Detalles de Parte" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "Puede construir" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "Nivel mínimo de stock" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "Rango de precios" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "Último número de serie" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "Buscar número de serie" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "Código QR de Parte" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "parte" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "Calcular" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "No se encontraron imágenes coincidentes" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "Ocultar Detalles de la Parte" @@ -6955,15 +7079,15 @@ msgstr "Variantes" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "Inventario" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "Precios" @@ -6987,11 +7111,11 @@ msgstr "Vista general de precios" msgid "Refresh Part Pricing" msgstr "Actualizar precio de partes" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "Última actualización" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "Sin Stock" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "Bajo Stock" @@ -7108,37 +7232,36 @@ msgstr "Crear nueva variante de parte" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "Base de datos desconocida" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "Coincidir Referencias" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "Seleccionar Imagen de Parte" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "Imagen de parte actualizada" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "Imagen de parte no encontrada" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "Precio de parte" @@ -7150,20 +7273,21 @@ msgstr "No se especificó ninguna acción" msgid "No matching action found" msgstr "No se encontró ninguna acción coincidente" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "Faltan datos de código de barras" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "No se encontró ninguna coincidencia para los datos del código de barras" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "Coincidencia encontrada para datos de códigos de barras" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "El código de barras coincide con artículo existente" @@ -7171,7 +7295,53 @@ msgstr "El código de barras coincide con artículo existente" msgid "No match found for provided value" msgstr "No hay coincidencias para el valor proporcionado" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "Impresión de etiquetas fallida" @@ -7185,6 +7355,11 @@ msgstr "Proporciona soporte nativo para códigos de barras" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "Contribuidores de InvenTree" @@ -7194,7 +7369,7 @@ msgstr "Notificaciones de InvenTree" #: plugin/builtin/integration/core_notifications.py:35 msgid "Integrated outgoing notification methods" -msgstr "" +msgstr "Métodos de notificaciones salientes integrados" #: plugin/builtin/integration/core_notifications.py:40 #: plugin/builtin/integration/core_notifications.py:81 @@ -7216,248 +7391,415 @@ msgstr "Permitir el envío de mensajes por canal de slack para notificaciones de #: plugin/builtin/integration/core_notifications.py:52 msgid "Slack incoming webhook url" -msgstr "" +msgstr "URL de webhook entrante de Slack" #: plugin/builtin/integration/core_notifications.py:53 msgid "URL that is used to send messages to a slack channel" msgstr "URL que se utiliza para enviar mensajes a un canal de slack" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "Abrir enlace" -#: plugin/models.py:27 +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "Impresora de etiquetas PDF de InvenTree" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "Proporciona soporte nativo para imprimir etiquetas PDF" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "Modo de depuración" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "Activar modo de depuración - devuelve código HTML en lugar de PDF" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" +msgstr "" + +#: plugin/models.py:28 msgid "Plugin Configuration" msgstr "Configuración del complemento" -#: plugin/models.py:28 +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "Configuraciones del Plug-in" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "Clave" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "Clave del complemento" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "Nombre del complemento" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "Está activo el complemento" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "Instalado" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "Complemento de ejemplo" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "Complemento integrado" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "Complemento" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "Método" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "No se encontró autor" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" -msgstr "" +msgstr "El complemento '{p}' no es compatible con la versión actual de InvenTree {v}" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" -msgstr "" +msgstr "El complemento requiere al menos la versión {v}" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" -msgstr "" +msgstr "El complemento requiere como máximo la versión {v}" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "Habilitar PO" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "Habilitar la funcionalidad PO en la interfaz de InvenTree" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "Clave API" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "Clave necesaria para acceder a la API externa" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "Numérico" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "Una configuración numérica" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "Configuración de Elección" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "Un ajuste con múltiples opciones" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "URL de origen" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Fuente del paquete - puede ser un registro personalizado o una ruta VCS" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "Nombre de Paquete" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Nombre del paquete Plug-in - también puede contener un indicador de versión" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "Confirmar instalación del complemento" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Esto instalará este plug-in en la instancia actual. La instancia entrará en mantenimiento." -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "Instalación no confirmada" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "Debe proporcionar cualquier nombre de paquete de la URL" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" -msgstr "" +msgstr "Activar complemento" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" -msgstr "" +msgstr "Activar este complemento" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "No se han proporcionado objetos válidos a la plantilla" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "Informe de la prueba" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "Nombre de la plantilla" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "Plantilla de informe" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "Descripción de la plantilla de informe" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "Número de revisión del informe (autoincremental)" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "Patrón para generar nombres de archivo" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "Plantilla de informe está habilitada" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Filtros de consulta de Stock (lista separada por comas de pares clave=valor)" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "Incluye Pruebas Instaladas" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "Incluye resultados de prueba para artículos de stock instalados dentro del artículo ensamblado" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "Crear filtros" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Crear filtros de consulta (lista separada por comas de pares clave=valor" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "Filtros de partes" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Filtros de búsqueda de partes (lista separada por comas de pares clave=valor" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "Filtros de búsqueda de orden de compra" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "Filtros de búsqueda de pedidos de ventas" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "Filtros de búsqueda de orden de devolución" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "Fragmento" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "Archivo fragmento de informe" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "Descripción de archivo de fragmento" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "Activo" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "Reportar archivo de activos" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "Descripción del archivo de activos" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "Materiales necesarios" @@ -7474,9 +7816,9 @@ msgstr "El proveedor ha sido eliminado" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "Precio Unitario" @@ -7484,30 +7826,34 @@ msgstr "Precio Unitario" #: report/templates/report/inventree_return_order_report_base.html:48 #: report/templates/report/inventree_so_report_base.html:55 msgid "Extra Line Items" -msgstr "Elementos de línea extra" +msgstr "Partida extra" #: report/templates/report/inventree_po_report_base.html:72 #: report/templates/report/inventree_so_report_base.html:72 -#: templates/js/translated/purchase_order.js:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 msgid "Total" msgstr "Total" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Número de serie" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "Artículo Stock Informe de prueba" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "Resultados de la Prueba" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "Prueba" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "Resultado" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "Elementos instalados" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Serial" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "ID de Ubicación" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "Nombre de localización" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Ruta de Ubicación" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "ID del artículo de almacén" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "Código de estado" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "ID Parte del Proveedor" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "ID de proveedor" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "Nombre del proveedor" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "ID de cliente" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Instalado en" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "ID de construcción" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "ID de orden de venta" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "ID de orden de compra" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "Revisión necesaria" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "Fecha de Expiración" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "Ubicación externa" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "Cantidad requerida" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "Debe suministrarse una parte válida" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Ubicación de Stock" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "Ubicaciones de Stock" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Propietario" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "Seleccionar Propietario" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Externo" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" -msgstr "Tipo de parte ('{pf}') debe ser {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "La cantidad debe ser 1 para el artículo con un número de serie" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Número de serie no se puede establecer si la cantidad es mayor que 1" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "El objeto no puede pertenecer a sí mismo" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "El artículo debe tener una referencia de construcción si is_building=True" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "La referencia de la construcción no apunta al mismo objeto de parte" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "Artículo de stock padre" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "Parte base" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "Seleccione una parte del proveedor correspondiente para este artículo de stock" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "¿Dónde se encuentra este artículo de stock?" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "Empaquetar este artículo de stock se almacena en" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "¿Está este artículo instalado en otro artículo?" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "Número de serie para este artículo" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "Código de lote para este artículo de stock" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "Cantidad de Stock" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "Build de origen" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "Build para este item de stock" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "Consumido por" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "Orden de compra de origen" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "Orden de compra para este artículo de stock" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "Orden de venta de destino" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Fecha de caducidad del artículo de stock. El stock se considerará caducado después de esta fecha" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "Eliminar al agotar" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "Eliminar este artículo de stock cuando se agoten las existencias" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "Precio de compra único en el momento de la compra" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "Convertido a parte" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "La parte no está establecida como rastreable" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "Cantidad debe ser un entero" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" -msgstr "La cantidad no debe exceder la cantidad disponible de existencias ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "Los números de serie deben ser una lista de enteros" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "La cantidad no coincide con los números de serie" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "Números de serie ya existen" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "Artículo de stock ha sido asignado a un pedido de venta" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "Artículo de stock está instalado en otro artículo" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "Artículo de stock contiene otros artículos" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "Artículo de stock ha sido asignado a un cliente" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "El artículo de stock está en producción" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "Stock serializado no puede ser combinado" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "Artículos de Stock Duplicados" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "Los artículos de stock deben referirse a la misma parte" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "Los artículos de stock deben referirse a la misma parte del proveedor" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "Los códigos de estado del stock deben coincidir" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "Stock no se puede mover porque no está en stock" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "Notas de entrada" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "Debe proporcionarse un valor para esta prueba" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "El archivo adjunto debe ser subido para esta prueba" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "Nombre del test" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "Resultado de la prueba" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "Valor de salida de prueba" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "Adjunto de resultados de prueba" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "Notas de prueba" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "El número de serie es demasiado grande" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "Introduzca el número de artículos de stock para serializar" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "La cantidad no debe exceder la cantidad disponible de stock ({q})" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "Introduzca números de serie para nuevos artículos" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "Ubicación de stock de destino" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "Campo de nota opcional" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "Los números de serie no se pueden asignar a esta parte" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "Añadir nota de transacción (opcional)" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "La parte debe ser vendible" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "El artículo está asignado a una orden de venta" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "El artículo está asignado a una orden de creación" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "Cliente para asignar artículos de stock" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "La empresa seleccionada no es un cliente" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "Notas de asignación de stock" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "Debe proporcionarse una lista de artículos de stock" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "Notas de fusión de stock" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "Permitir proveedores no coincidentes" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "Permitir fusionar artículos de stock con diferentes partes de proveedor" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "Permitir estado no coincidente" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "Permitir fusionar artículos de stock con diferentes códigos de estado" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "Debe proporcionar al menos dos artículos de stock" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "Valor de clave primaria de Stock" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "Notas de transacción de stock" @@ -8034,263 +8434,271 @@ msgstr "Notas de transacción de stock" msgid "Stock Tracking Information" msgstr "Información de Seguimiento de Stock" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "Elementos de Stock Hijos" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "Este artículo de stock no tiene ningún artículo secundario" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "Datos de Prueba" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "Informe de Prueba" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "Eliminar Datos de Prueba" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "Añadir Datos de Prueba" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "Notas del artículo de stock" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "Elementos de Stock instalados" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "Instalar artículo de stock" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "Añadir Resultado de Prueba" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "Escanear a la ubicación" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "Acciones de impresión" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "Acciones de ajuste de stock" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "Contar stock" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "Añadir stock" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "Eliminar stock" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "Serializar stock" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "Transferir stock" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "Asignar a cliente" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "Regresar al stock" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "Desinstalar artículo de stock" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "Desinstalar" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "Instalar artículo de stock" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "Instalar" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "Convertir a variante" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "Duplicar artículo" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "Editar artículo de almacén" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "Eliminar artículo de stock" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Construcción o Armado" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "Elemento padre" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "Ningún fabricante establecido" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "No estás en la lista de propietarios de este artículo. Este artículo de stock no puede ser editado." -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "Solo lectura" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "Este artículo de stock está en producción y no puede ser editado." -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "Editar el artículo de stock desde la vista de construcción." -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "Este artículo de stock está asignado a la orden de venta" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "Este artículo de stock está asignado al orden de construcción" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "página anterior" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "Navegar al número de serie anterior" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "página siguiente" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "Navegar al siguiente número de serie" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "Cantidad disponible" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "Ubicación no establecida" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "Pruebas" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "Este artículo de stock no ha pasado todas las pruebas requeridas" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "Este ítem expiró el %(item.expiry_date)s" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "Expirado" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "Este ítem expira el %(item.expiry_date)s" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Desactualizado" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "Ningún inventario realizado" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "Editar Estado del Stock" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "Código QR de Item de Stock" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "Enlazar código de barras al artículo de stock" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "Seleccione una de las variantes de parte listadas a continuación." -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "Advertencia" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "Esta acción no se puede deshacer fácilmente" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "Convertir artículo de stock" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "Volver a Stock" @@ -8302,82 +8710,86 @@ msgstr "Crear artículos serializados a partir de este artículo de stock." msgid "Select quantity to serialize, and unique serial numbers." msgstr "Seleccione la cantidad para serializar y números de serie únicos." -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "Escanear en contenedor" -#: stock/templates/stock/location.html:102 +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 msgid "Location actions" msgstr "Acciones de ubicación" -#: stock/templates/stock/location.html:104 +#: stock/templates/stock/location.html:106 msgid "Edit location" msgstr "Editar ubicación" -#: stock/templates/stock/location.html:106 +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "Eliminar ubicación" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "Ubicación de stock superior" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "Propietario de la ubicación" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "No estás en la lista de propietarios de esta ubicación. Esta ubicación de stock no puede ser editada." -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Sub-ubicación" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "Crear nueva ubicación de stock" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "Nueva Ubicación" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "ubicación de almacén" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "Has cerrado sesión en InvenTree." #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "Iniciar sesión" @@ -8451,73 +8863,73 @@ msgstr "El sitio está actualmente en mantenimiento y debería estar listo pront msgid "Index" msgstr "Índice" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "Partes Suscritas" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "Categorías Suscritas" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "Últimas Partes" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "Validación de BOM en espera" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "Actualizado Recientemente" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "Stock Agotado" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "Requerido para construir pedidos" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "Stock Caducado" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "Stock Obsoleto" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "Pedidos en curso" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "Órdenes de construcción atrasadas" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "Órdenes de Compra Pendientes" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "Pedidos de Compra Atrasados" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "Pedidos de Venta Pendientes" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "Pedidos de Venta Atrasados" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" -msgstr "Noticias de InvenTree" +msgstr "Novedades de InvenTree" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" -msgstr "Noticias actuales" +msgstr "Últimas novedades" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" @@ -8541,7 +8953,7 @@ msgstr "Marcar todos como leidos" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "Notificaciones" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "Borrar todas las notificaciones leídas" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "Eliminar notificación" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "Inicio de sesión único" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "Ajustes" @@ -8651,7 +9063,7 @@ msgstr "Importar Parte" msgid "Import Part" msgstr "Importar Parte" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "Plantillas de Parámetros de Partes" @@ -8659,12 +9071,21 @@ msgstr "Plantillas de Parámetros de Partes" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "Ajustes del complemento" @@ -8672,30 +9093,30 @@ msgstr "Ajustes del complemento" msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." msgstr "Cambiar la configuración de abajo requiere reiniciar inmediatamente el servidor. No lo cambie mientras esté en uso activo." -#: templates/InvenTree/settings/plugin.html:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "Complementos" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "Instalar complemento" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "Los complementos externos no están habilitados para esta instalación de InvenTree" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "Pila de error de complementos" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "Etapa" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "Mensaje" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "Información de Plugin" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "Versión" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "Ruta de instalación" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "Integrado" @@ -8749,32 +9171,34 @@ msgstr "Integrado" msgid "This is a builtin plugin which cannot be disabled" msgstr "Este es un complemento incorporado que no puede ser desactivado" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "Muestra" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "Autor del Commit" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "Fecha del Commit" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "Hash de Commit" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "Mensaje de Commit" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "Estado de Firma" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "Firma de clave" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "Ajustes de Orden de Compra" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "Códigos del proyecto" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "Nuevo código de proyecto" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "Ningún valor establecido" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "Editar ajustes" @@ -8851,50 +9275,103 @@ msgstr "Editar Configuración de Usuario" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "Editar" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Eliminar" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 msgid "Edit Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "No hay plantillas de parámetros de categoría" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "Editar Plantilla" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "Eliminar Plantilla" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "Eliminar plantilla de parámetro de categoría" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "Crear plantilla de parámetro de categoría" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "Crear plantilla Parámetro de Parte" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "Página de Inicio" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "Buscar" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "Informando" @@ -8932,11 +9409,11 @@ msgstr "Configuración Global" msgid "Server" msgstr "Servidor" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "Etiquetas" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "Categorías" @@ -8948,6 +9425,10 @@ msgstr "Configuración de orden de venta" msgid "Stock Settings" msgstr "Configuración de Stock" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "Configuración de la Cuenta" @@ -8958,13 +9439,6 @@ msgstr "Configuración de la Cuenta" msgid "Change Password" msgstr "Cambiar Contraseña" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "Editar" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "Nombre de usuario" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "Sin verificar" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "Principal" @@ -9204,44 +9679,48 @@ msgstr "Actualizado" msgid "Update Available" msgstr "Actualización Disponible" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "Documentación de InvenTree" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "Versión API" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "Versión de Python" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "Versión de Django" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "Ver código en GitHub" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "Créditos" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "Aplicación Móvil" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "Enviar Informe de Error" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "copiar al portapapeles" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "copiar información de versión" @@ -9259,7 +9738,7 @@ msgstr "Confirmar Email" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "Confirme que %(email)s es una dirección de correo electrónico para el usuario %(user_display)s." -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Confirmar" @@ -9435,30 +9914,30 @@ msgstr "Agregar Enlace" msgid "Add Attachment" msgstr "Añadir archivo adjunto" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "Identificador de Código de Barras" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "Reinicio del Servidor Requerido" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "Se ha cambiado una opción de configuración que requiere reiniciar el servidor" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "Póngase en contacto con su administrador para más información" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "Las siguientes partes están bajas en stock requerido" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "Cantidad requerida" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "Haga clic en el siguiente enlace para ver esta parte" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "Cantidad Mínima" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "Sin Respuesta" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "No hay respuesta del servidor InvenTree" @@ -9521,27 +10000,27 @@ msgstr "Error 400: Solicitud incorrecta" msgid "API request returned error code 400" msgstr "La solicitud API devolvió el código de error 400" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "Error 401: No autenticado" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "Credenciales de autenticación no suministradas" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "Error 403: Permiso Denegado" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "No tiene los permisos necesarios para acceder a esta función" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "Error 404: Recurso No Encontrado" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "El recurso solicitado no se pudo encontrar en el servidor" @@ -9553,19 +10032,27 @@ msgstr "Error 405: Método no Permitido" msgid "HTTP method not allowed at URL" msgstr "Método HTTP no permitido en URL" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "Error 408: Tiempo de espera agotado" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "Tiempo de espera de conexión agotado al solicitar datos del servidor" #: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 msgid "Unhandled Error Code" msgstr "Código de error no controlado" -#: templates/js/translated/api.js:262 +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "Código de error" @@ -9573,23 +10060,35 @@ msgstr "Código de error" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "No se encontraron archivos adjuntos" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "Editar archivos adjuntos" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "Fecha de subida" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "Editar adjunto" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "Eliminar adjunto" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "Respuesta desconocida del servidor" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "Respuesta del servidor inválida" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "Desvincular" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "Eliminar artículo de stock" @@ -9704,743 +10203,839 @@ msgstr "Comprobar en la ubicación" msgid "Barcode does not match a valid location" msgstr "El código de barras no coincide con una ubicación válida" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "Crear artículo para el BOM" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "Mostrar datos de fila" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "Datos de Fila" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "Cerrar" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "Descargar plantilla BOM" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "Niveles" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "Seleccione el número máximo de niveles BOM a exportar (0 = todos los niveles)" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "Incluye partes alternativas" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "Incluye Parámetros de Datos" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "Incluye Datos de Stock" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "Incluye datos de stock de partes en BOM exportado" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "Incluir Datos del fabricante" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "Incluye datos del fabricante de partes en BOM exportado" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "Incluir Datos del Proveedor" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "Incluye datos del proveedor de partes en BOM exportado" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "Eliminar parte sustituta" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "Seleccione y añada una nueva parte sustituta usando la siguiente entrada" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "¿Está seguro que desea eliminar este enlace de la parte sustituta?" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "Eliminar parte sustituta" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "Añadir sustituto" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "Editar sustitutos de artículos BOM" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "Todos los artículos BOM seleccionados serán eliminados" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "¿Eliminar artículos BOM seleccionados?" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "Sustitutos Disponibles" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "Stock de variante permitido" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "Sustitutos" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "Validar Artículo para el BOM" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "Esta línea ha sido validada" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "Editar partes sustitutas" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "Editar Artículo de BOM" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "Eliminar Artículo de BOM" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "Ver BOM" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "No se encontraron artículos BOM" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "Parte requerida" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "Heredado de BOM superior" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "Editar Orden de Trabajo" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "Crear Orden de Trabajo" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "¿Estás seguro de que quieres cancelar esta construcción?" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "El pedido de construcción está listo para ser completado" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "Orden de construcción incompleta" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "Completar Orden de Construcción" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "Siguiente número de serie disponible" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "Último número de serie" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "La ley de materiales contiene partes rastreables" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "Las salidas de construcción deben ser generadas individualmente" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "Las partes rastreables pueden tener números de serie especificados" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "Introduzca números de serie para generar múltiples salidas de construcción única" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "Crear Salida de Trabajo" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "Asignar artículos de stock a esta salida de trabajo" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" -msgstr "Desasignar stock de la salida de trabajo" - #: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" +msgstr "" + +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "Completar salida de trabajo" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "Eliminar Salida de Trabajo" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" -msgstr "¿Está seguro que desea desasignar los artículos de stock de este trabajo?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" +msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" -msgstr "Desasignar artículos de stock" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" +msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "Seleccionar Salida de Trabajo" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "Se debe seleccionar al menos una salida de trabajo" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "Salida" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "Completar salidas de trabajo" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "Eliminar Salidas" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "No se encontraron asignaciones de órdenes de trabajo" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "Ubicación no especificada" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "Completar salidas" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "Eliminar salidas" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "No se encontraron salidas de trabajo activas" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "Editar asignación de stock" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "Eliminar asignación de stock" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "Editar Asignación" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "Quitar asignación" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "Partes sustitutas disponibles" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "Cantidad por" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "Stock de Trabajo" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "Pedido de stock" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "Asignar stock" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "Seleccionar partes" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "Debe seleccionar al menos una parte para asignar" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "Especificar la cantidad de asignación de stock" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "Seleccionar ubicación de origen (dejar en blanco para tomar de todas las ubicaciones)" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "Asignar Artículos de Stock a Orden de Trabajo" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "No hay ubicaciones de stock coincidentes" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "No hay artículos de stock coincidentes" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "" +msgstr "Los artículos de almacén se asignarán automáticamente a este pedido de construcción, de acuerdo con las pautas proporcionadas" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "Asignar artículos de inventario" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "No hay trabajos que coincidan con la consulta" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "Seleccionar" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "Orden de trabajo atrasada" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "Progreso" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "No hay información de usuario" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "grupo" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" -msgstr "No se asignaron partes para" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" +msgstr "Editar asignación de stock" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "Eliminar asignación de stock" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "Editar Asignación" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "Quitar asignación" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "Parte Rastreable" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "Stock de Trabajo" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "Pedido de stock" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "Asignar stock" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "Agregar Fabricante" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "Añadir Parte del fabricante" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "Editar Parte del Fabricante" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "Añadir Proveedor" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "Añadir Parte de Proveedor" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "Se eliminarán todas las partes del proveedor seleccionadas" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "Eliminar partes de proveedor" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "Añadir nueva Empresa" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "Partes Suministradas" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "Partes Fabricadas" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "No se encontró información de la empresa" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "Crear nuevo contacto" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "Editar contacto" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "Todos los contactos seleccionados serán eliminados" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "Cargo" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "Eliminar contactos" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "No se encontró ningún contacto" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "Número de teléfono" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "Dirección de correo electrónico" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "Eliminar contacto" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "Crear nueva dirección" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "Editar dirección" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "Todos las direcciones seleccionadas serán eliminadas" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "Eliminar direcciones" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "No se encontraron direcciones" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "Ciudad postal" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "Estado/provincia" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "Notas del mensajero" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "Notas internas" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "Eliminar dirección" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "Se eliminarán todas las partes del fabricante seleccionadas" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "Eliminar Partes del Fabricante" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "Todos los parámetros seleccionados serán eliminados" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "Eliminar parámetros" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "Partes de pedido" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "Eliminar partes del fabricante" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "No se encontraron partes del fabricante" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "Plantilla de parte" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "Parte ensamblada" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "No se encontraron parámetros" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "Editar parámetro" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "Eliminar parámetro" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "Editar parámetro" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "Eliminar parámetro" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "Eliminar partes del proveedor" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "No se encontraron partes de proveedor" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "Unidades base" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "Disponibilidad" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "Editar proveedor" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "Eliminar ítem del proveedor" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "Eliminar precio de descuento" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "Editar precio de descuento" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "No se ha encontrado información de descuento de precios" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "Última actualización" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "Editar precio de descuento" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "Eliminar precio de descuento" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "verdadero" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "falso" @@ -10448,89 +11043,89 @@ msgstr "falso" msgid "Select filter" msgstr "Seleccionar filtro" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "Imprimir etiquetas" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "Imprimir informes" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "Descargar tabla de datos" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "Recargar tabla de datos" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "Añadir un nuevo filtro" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "Limpiar todos los filtros" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "Crear filtro" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "Acción Prohibida" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "Operación de creación no permitida" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "Operación de actualización no permitida" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "Operación de eliminación no permitida" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "Operación de visualización no permitida" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "Mantener este formulario abierto" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "Introduzca un número válido" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "Existen errores en el formulario" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "No hay resultados" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "Buscando" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "Limpiar entrada" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "Columna de archivo" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "Nombre del campo" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "Seleccionar columnas" @@ -10550,138 +11145,158 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" -msgstr "Seleccionar impresora" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" +msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" -msgstr "Exportar a PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "seleccionado" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "Seleccione Plantilla de Etiqueta" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "Seleccionar artículos" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "No hay artículos seleccionados para imprimir" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "No se encontraron etiquetas" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "No se encontraron plantillas de etiqueta que coincidan con los artículos seleccionados" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "seleccionado" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "Etiquetas enviadas a la impresora" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "Cancelar" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "Enviar" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "Título del Formulario" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "Esperando al servidor..." -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "Mostrar Información de Error" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "Aceptar" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "Cargando Datos" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "Respuesta no válida del servidor" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "Datos del formulario faltantes de la respuesta del servidor" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "Error al publicar datos del formulario" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "Respuesta JSON faltan datos del formulario" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "Error 400: Solicitud Incorrecta" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "El servidor devolvió el código de error 400" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "Error al solicitar datos del formulario" #: templates/js/translated/news.js:33 msgid "No news found" -msgstr "" +msgstr "No hay novedades" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "Identificación" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "Edad" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "Notificación" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "Marcar como no leído" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "Marcar como leído" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "No hay notificaciones sin leer" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "Las notificaciones cargarán aquí" #: templates/js/translated/order.js:89 msgid "Add Extra Line Item" -msgstr "" +msgstr "Añadir partida extra" #: templates/js/translated/order.js:126 msgid "Export Order" @@ -10700,9 +11315,9 @@ msgid "Delete Line" msgstr "Eliminar línea" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" -msgstr "No hay artículos de línea" +msgstr "No hay partidas" #: templates/js/translated/order.js:369 msgid "Duplicate line" @@ -10716,417 +11331,405 @@ msgstr "Editar línea" msgid "Delete line" msgstr "Eliminar línea" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "Atributos de Parte" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "Opciones de Creación de Parte" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "Opciones de Duplicación de Parte" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "Añadir Categoría de Parte" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "Categoría superior de parte" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "Crear Categoría de Parte" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "Categoría de partes creada" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "Editar Categoría de Parte" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "Mover a la categoría padre" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "Eliminar Categoría de Parte" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "Crear Parte" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "Parte creada con éxito" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "Editar Parte" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "Parte editada" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "Crear Variante de Parte" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "Parte activa" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "Eliminar parte" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "Estás suscrito a las notificaciones de este artículo" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "Te has suscrito a las notificaciones de este artículo" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "Suscríbete a las notificaciones de este artículo" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "Has cancelado la suscripción a las notificaciones de este artículo" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" -msgstr "Validar el BOM marcará cada artículo de línea como válido" +msgstr "Validar el BOM marcará cada partida como válida" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "Validar la Factura de Materiales" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "Validación de Lista de Materiales" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "Copiar Factura de Materiales" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "Stock bajo" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "Existencias no disponibles" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "Demanda" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "Unidad" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "Parte Rastreable" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "Parte virtual" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "Parte suscrita" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "Parte vendible" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "No se encontraron variantes" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "No se encontraron plantillas de parámetros de parte" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "Crear plantilla Parámetro de Parte" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "Eliminar Plantilla de Parámetros de Parte" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "No se encontraron órdenes de compra" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" -msgstr "" +msgstr "Esta partida está atrasada" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" -msgstr "Recibir ítem de línea" +msgstr "Recibir partida" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "Eliminar relación de parte" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "Eliminar Relación de Parte" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "No se encontraron partes" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "partes" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "Sin categoría" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "Mostrar como lista" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "Mostrar como cuadrícula" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "Definir Categoría de Parte" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" -msgstr "" +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "Definir categoría" -#: templates/js/translated/part.js:2495 -msgid "Category is required" -msgstr "" +#: templates/js/translated/part.js:2283 +msgid "parts" +msgstr "partes" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "Sin categoría" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "Mostrar como lista" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "Mostrar como cuadrícula" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "Mostrar como árbol" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "Cargar subcategorías" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "Categoría suscrita" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "No hay plantillas de prueba que coincidan con la consulta" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "Editar resultado de prueba" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "Eliminar resultado de prueba" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "Esta prueba está definida para una parte principal" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "Editar plantilla de resultado de prueba" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "Eliminar plantilla de resultados de prueba" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "Sin fecha especificada" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "Especulativo" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "Cantidad máxima" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" #: templates/js/translated/plugin.js:45 msgid "No plugins found" +msgstr "No se encontraron complementos" + +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" +msgstr "Este complemento está activo" + +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" -msgstr "" - -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "Muestra" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" -msgstr "" +msgstr "Desactivar Plugin" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" -msgstr "" +msgstr "Activar Plugin" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "El Plugin fue Instalado" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" -msgstr "" +msgstr "¿Estás seguro de que deseas activar este complemento?" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" -msgstr "" +msgstr "¿Estás seguro de que deseas desactivar este complemento?" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" -msgstr "" +msgstr "Activar" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" -msgstr "" +msgstr "Desactivar" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" -msgstr "" +msgstr "Complemento actualizado" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" @@ -11148,256 +11751,256 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "Historial de precios de venta" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "No hay datos de variantes disponibles" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "Parte variante" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" -msgstr "Duplicar artículos de línea" +msgstr "Duplicar partidas" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" -msgstr "" +msgstr "Duplicar todos las partidas del pedido seleccionado" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "Duplicar líneas adicionales" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" -msgstr "" +msgstr "Duplicar las partidas extra del pedido seleccionado" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "Modificar orden de compra" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "Completar orden de compra" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "Marcar pedido como completado?" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" -msgstr "" +msgstr "Todos las partidas han sido recibidas" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." -msgstr "Este pedido tiene artículos de línea que no han sido marcados como recibidos." +msgstr "Este pedido tiene partidas que no han sido marcadas como recibidas." -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." -msgstr "Completar este pedido significa que los artículos de orden y línea ya no serán editables." +msgstr "Completar este pedido significa que la orden y las partidas ya no serán editables." -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "Cancelar orden de compra" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." -msgstr "" +msgstr "Después de realizar esta orden de compra, las partidas ya no serán editables." -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "Cantidad a ordenar" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "Nueva parte del proveedor" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "Nueva orden de compra" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "Añadir a la orden de compra" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "No hay partes de proveedor coincidentes" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "No hay órdenes de compra coincidentes" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" -msgstr "Seleccionar Artículos de Línea" +msgstr "Seleccionar partidas" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" -msgstr "Debe seleccionar al menos un artículo de línea" +msgstr "Debe seleccionar al menos una partida" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "Cantidad recibida" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "Cantidad a recibir" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "Estado del Stock" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "Agregar código de barras" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "Eliminar código de barras" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "Especificar ubicación" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "Añadir código de lote" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "Añadir números de serie" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "Código de Pedido" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "Cantidad a recibir" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "Confirmar recepción de artículos" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "Recibir artículos de orden de compra" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "El pedido está vencido" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "Artículos" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" -msgstr "" +msgstr "Todos las partidas seleccionadas serán eliminadas" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" -msgstr "" +msgstr "¿Eliminar partidas seleccionadas?" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" -msgstr "Duplicar artículo de línea" +msgstr "Duplicar partida" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 -msgid "Edit Line Item" -msgstr "Editar Ítem de Línea" - -#: templates/js/translated/purchase_order.js:1910 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 #: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/sales_order.js:2080 +msgid "Edit Line Item" +msgstr "Editar partida" + +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" -msgstr "Eliminar Ítemde Línea" +msgstr "Eliminar partida" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" -msgstr "Duplicar artículo de línea" +msgstr "Duplicar partida" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" -msgstr "Editar artículo de línea" +msgstr "Editar partida" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" -msgstr "Eliminar artículo de línea" +msgstr "Eliminar partida" #: templates/js/translated/report.js:63 msgid "items selected" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "Añadir Cliente" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "Cliente Inválido" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "Recibir artículos de pedido de devolución" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" -msgstr "No hay artículos de línea coincidentes" +msgstr "No hay partidas coincidentes" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "Marcar artículo como recibido" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "Crear Orden de Venta" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "Editar orden de venta" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "No se ha asignado ningún artículo de stock a este envío" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "Los siguientes artículos de stock serán enviados" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "Completar Envío" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "Confirmar Envío" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "No se encontraron envíos pendientes" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "No se ha asignado ningún artículo de almacén a los envíos pendientes" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "Completar Envíos" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "Omitir" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." -msgstr "Este pedido tiene artículos de línea que no han sido completados." +msgstr "Este pedido tiene partidas que no han sido completadas." -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "¿Emitir este pedido de venta?" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "Emitir orden de venta" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "Cancelar orden de venta" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "Cancelar esta orden significa que la orden ya no será editable." -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "Crear Nuevo Envío" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "No se encontraron ventas" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "Editar envío" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "Completar envío" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "Eliminar envío" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "Editar envío" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "Eliminar Envío" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "No se encontraron envíos coincidentes" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "Referencia de Envío" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "No enviado" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "Seguimiento" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "Factura" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "Añadir envío" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "Confirmar asignación de stock" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "Asignar artículos de stock a pedido de venta" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "No se encontraron asignaciones de órdenes" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "Editar Asignación de Stock" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "Confirmar Operación de Eliminar" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "Eliminar Adjudicación de Stock" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "Enviado al cliente" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "Ubicación de stock no especificada" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "Asignar números de serie" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "Comprar stock" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "Calcular precio" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "No se puede eliminar ya que los artículos han sido enviados" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "No se puede eliminar ya que los artículos han sido asignados" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "Asignar Números de Serie" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "Actualizar precio unitario" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "Sin resultados" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "Ingresar consulta de búsqueda" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "resultado" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "resultados" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "Minimizar resultados" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "Eliminar resultados" @@ -11679,686 +12282,726 @@ msgstr "Serializar Artículo de Stock" msgid "Confirm Stock Serialization" msgstr "Confirmar Serialización de Stock" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "Ubicación del stock principal" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "Editar ubicación de stock" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "Nueva Ubicación de Stock" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "Crear otra ubicación después de ésta" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "Ubicación de inventario creada" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "¿Está seguro que desea eliminar esta ubicación?" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "Mover a la ubicación de inventario del padre" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "Eliminar ubicación de stock" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "Esta parte no se puede serializar" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "Introduzca la cantidad inicial para este artículo de stock" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Introduzca números de serie para el nuevo stock (o deje en blanco)" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "Duplicar artículo de stock" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "¿Está seguro que desea eliminar este artículo de stock?" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "Eliminar artículo de stock" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "Editar artículo de stock" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "Crear nuevo artículo de stock" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "Creados varios artículos de stock" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "Encontrar número serial" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "Introducir número de serie" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "Introducir un número de serie" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "Ningún número de serie coincidente" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "Más de un resultado encontrado" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "Confirmar asignación de stock" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "Asignar Stock al Cliente" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "Advertencia: La operación de fusión no puede ser revertida" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "Alguna información se perderá al combinar artículos de stock" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "Se eliminará el historial de transacciones de stock para artículos fusionados" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "La información de la parte del proveedor se eliminará para los artículos fusionados" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "Confirmar fusión de artículos de stock" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "Fusionar Artículos de Stock" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "Transferir Stock" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "Mover" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "Contar Stock" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "Contar" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "Eliminar Stock" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "Tomar" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "Añadir Stock" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "Añadir" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "Eliminar Stock" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "La cantidad no se puede ajustar para el stock serializado" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "Especificar cantidad de stock" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "Seleccionar artículos de stock" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" -msgstr "Debe seleccionar al menos un artículo de stock disponible" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "Confirmar ajuste de stock" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "PASA" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "FALLO" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "SIN RESULTADO" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "Pruebas pasadas" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "Añadir resultado de prueba" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "No se encontraron resultados de prueba" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "Fecha de Prueba" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "Editar Resultados de Prueba" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "Borrar Resultado de Prueba" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "En producción" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "Instalado en el artículo de stock" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "Asignado a la Orden de Venta" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "Ninguna ubicación de stock establecida" -#: templates/js/translated/stock.js:1746 +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "Fusionar stock" + +#: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "Eliminar existencias" + +#: templates/js/translated/stock.js:1923 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1850 +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 msgid "Stock item is in production" msgstr "El artículo de stock está en producción" -#: templates/js/translated/stock.js:1855 +#: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" msgstr "Artículo de stock asignado al pedido de venta" -#: templates/js/translated/stock.js:1858 +#: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" msgstr "Artículo de stock asignado al cliente" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" msgstr "Se ha asignado un artículo de stock serializado" -#: templates/js/translated/stock.js:1863 +#: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" msgstr "Artículo de stock ha sido completamente asignado" -#: templates/js/translated/stock.js:1865 +#: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" msgstr "Artículo de stock ha sido asignado parcialmente" -#: templates/js/translated/stock.js:1868 +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "Artículo de stock ha sido instalado en otro artículo" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "Artículo de stock ha caducado" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "El artículo de stock caducará pronto" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "Artículo de stock ha sido rechazado" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "Artículo de stock perdido" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "Artículo de stock destruido" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "Agotado" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "Parte del proveedor no especificada" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "No hay artículos de stock que coincidan con la consulta" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" -msgstr "Cargar sublocalidades" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" +msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "Detalles" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "Sin cambios" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "Información de la parte no disponible" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "Ubicación ya no existe" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "La orden de compra ya no existe" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "El pedido de venta ya no existe" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "El pedido de devolución ya no existe" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "El cliente ya no existe" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "Artículo de stock ya no existe" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "Añadido" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "Eliminado" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "Ningún artículo instalado" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "Desinstalar artículo de stock" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "Los artículos de stock sólo pueden ser instalados si cumplen con los siguientes criterios" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "Seleccionar parte para instalar" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "Tiene código de proyecto" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "Estado del pedido" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "Pendiente" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "Asignado a mí" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "Parte Rastreable" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "Parte Ensamblada" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "Tiene stock disponible" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "Permitir stock de variante" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "Tiene precio" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "Incluir sub-ubicación" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "Incluir ubicaciones" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "Incluir subcategorías" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "Suscrito" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "Es Serializado" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "Número Serial GTE" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "Número de serie mayor o igual a" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "Número Serial LTE" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "Número de serie menor o igual que" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "Número de serie" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "Código de lote" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "Partes activas" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "Mostrar stock para las partes activas" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "Parte es un ensamblado" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "Está asignado" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "El artículo ha sido asignado" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "Stock disponible para uso" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "Incluye stock en sub-ubicaciones" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "Mostrar artículos de stock que están agotados" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "Mostrar artículos en stock" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "En Producción" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "Mostrar artículos que están en producción" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "Incluye Variantes" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "Incluye artículos de stock para partes de variantes" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "Instalado" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "Mostrar artículos de stock que están instalados en otro artículo" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "Mostrar artículos que han sido asignados a un cliente" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "Estado del stock" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "Tiene código de lote" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "Rastreado" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "Tiene precio de compra" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "Mostrar artículos de stock que tienen un precio de compra establecido" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "Fecha de vencimiento antes de" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "Fecha de vencimiento después" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "Mostrar artículos de stock que han caducado" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "Mostrar stock que está cerca de caducar" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "Prueba aprobada" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "Incluye artículos instalados" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "Estado de la construcción" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "Incluye partes en subcategorías" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "Mostrar partes activas" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "Existencias disponibles" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "Tiene unidades" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "Tiene IPN" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "La parte tiene un número de parte interno" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "En existencia" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "Comprable" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "Tiene entradas de inventario" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "Tiene opciones" @@ -12390,51 +13033,51 @@ msgstr "Exportar datos de tabla" msgid "Select File Format" msgstr "Seleccionar formato de archivo" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "Cargando datos" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "filas por página" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "Mostrar todas las filas" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "Mostrando" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "para" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "de" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "filas" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "No se encontraron resultados" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "Ocultar/Mostrar paginación" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "Alternar" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "Columnas" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "Todo" @@ -12454,11 +13097,11 @@ msgstr "Mostrar notificaciones" msgid "New Notifications" msgstr "Notificaciones nuevas" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "Admin" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "Cerrar sesión" @@ -12474,11 +13117,11 @@ msgstr "Mostrar todas las notificaciones y el historial" msgid "QR data not provided" msgstr "Datos QR no proporcionados" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "Se ha cerrado la sesión correctamente." -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "Volver a ingresar" @@ -12536,7 +13179,7 @@ msgstr "Continuar" #: templates/socialaccount/login.html:29 msgid "Invalid SSO Provider" -msgstr "" +msgstr "Proveedor SSO inválido" #: templates/socialaccount/login.html:31 msgid "The selected SSO provider is invalid, or has not been correctly configured" @@ -12617,50 +13260,6 @@ msgstr "Configuración de Email" msgid "Email settings not configured" msgstr "Configuración de correo no configurada" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "Acciones de código de barras" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "Opciones Stock" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "Añadir a los artículos de stock seleccionados" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "Eliminar de los artículos de stock seleccionados" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "Artículos de stock seleccionados" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "Mover artículos de stock seleccionados" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "Combinar artículos de stock seleccionados" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "Fusionar stock" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "Ordenar artículos seleccionados" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "Eliminar artículos seleccionados" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "Eliminar existencias" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "Sí" @@ -12669,59 +13268,99 @@ msgstr "Sí" msgid "No" msgstr "No" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "Usuarios" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "Seleccione qué usuarios están asignados a este grupo" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" -msgstr "Los siguientes usuarios son miembros de varios grupos:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "Información personal" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "Permisos" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "Fechas importantes" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "Permiso establecido" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "Grupo" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "Vista" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "Permiso para ver artículos" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "Permiso para añadir artículos" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "Cambiar" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "Permisos para editar artículos" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "Permiso para eliminar artículos" diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/InvenTree/locale/es_MX/LC_MESSAGES/django.po index fcd5f93774..7a5bf0e97b 100644 --- a/InvenTree/locale/es_MX/LC_MESSAGES/django.po +++ b/InvenTree/locale/es_MX/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-05 11:04+0000\n" +"POT-Creation-Date: 2023-11-09 10:51+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,420 +18,445 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1086 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3004 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2159 stock/models.py:2267 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "" -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/helpers.py:462 order/models.py:439 order/models.py:608 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" +msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" +msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:486 stock/models.py:2261 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:233 -#: order/models.py:1090 order/models.py:1450 part/admin.py:39 -#: part/models.py:900 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:901 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3012 -#: part/models.py:3100 part/models.py:3179 part/models.py:3199 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:846 -#: part/models.py:3399 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:229 order/models.py:1114 part/admin.py:194 part/admin.py:276 -#: part/models.py:868 part/models.py:3415 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:3896 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2851 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -485,445 +510,506 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:822 msgid "German" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:824 msgid "English" msgstr "" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:829 msgid "French" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:739 -msgid "Chinese" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/status_codes.py:139 InvenTree/status_codes.py:181 -#: InvenTree/status_codes.py:360 InvenTree/status_codes.py:397 -#: InvenTree/status_codes.py:432 templates/js/translated/table_filters.js:511 +#: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 +#: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 +#: InvenTree/status_codes.py:188 generic/states/tests.py:16 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "" -#: InvenTree/status_codes.py:140 +#: InvenTree/status_codes.py:13 generic/states/tests.py:17 msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:141 InvenTree/status_codes.py:363 -#: InvenTree/status_codes.py:399 order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 +#: InvenTree/status_codes.py:172 generic/states/tests.py:18 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "" -#: InvenTree/status_codes.py:142 InvenTree/status_codes.py:184 -#: InvenTree/status_codes.py:362 InvenTree/status_codes.py:400 +#: InvenTree/status_codes.py:15 InvenTree/status_codes.py:43 +#: InvenTree/status_codes.py:150 InvenTree/status_codes.py:173 msgid "Cancelled" msgstr "" -#: InvenTree/status_codes.py:143 InvenTree/status_codes.py:185 -#: InvenTree/status_codes.py:227 +#: InvenTree/status_codes.py:16 InvenTree/status_codes.py:44 +#: InvenTree/status_codes.py:71 msgid "Lost" msgstr "" -#: InvenTree/status_codes.py:144 InvenTree/status_codes.py:186 +#: InvenTree/status_codes.py:17 InvenTree/status_codes.py:45 +#: InvenTree/status_codes.py:73 msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:182 InvenTree/status_codes.py:398 +#: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:183 order/models.py:1329 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "" -#: InvenTree/status_codes.py:223 +#: InvenTree/status_codes.py:66 msgid "OK" msgstr "" -#: InvenTree/status_codes.py:224 +#: InvenTree/status_codes.py:67 msgid "Attention needed" msgstr "" -#: InvenTree/status_codes.py:225 +#: InvenTree/status_codes.py:68 msgid "Damaged" msgstr "" -#: InvenTree/status_codes.py:226 +#: InvenTree/status_codes.py:69 msgid "Destroyed" msgstr "" -#: InvenTree/status_codes.py:228 +#: InvenTree/status_codes.py:70 msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:229 +#: InvenTree/status_codes.py:72 msgid "Quarantined" msgstr "" -#: InvenTree/status_codes.py:308 +#: InvenTree/status_codes.py:91 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:310 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:312 +#: InvenTree/status_codes.py:96 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:313 +#: InvenTree/status_codes.py:97 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:315 +#: InvenTree/status_codes.py:100 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:316 +#: InvenTree/status_codes.py:101 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:317 +#: InvenTree/status_codes.py:102 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:105 msgid "Location changed" msgstr "" -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:106 msgid "Stock updated" msgstr "" -#: InvenTree/status_codes.py:322 +#: InvenTree/status_codes.py:109 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:323 +#: InvenTree/status_codes.py:110 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:325 +#: InvenTree/status_codes.py:112 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:326 +#: InvenTree/status_codes.py:113 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:328 +#: InvenTree/status_codes.py:116 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:329 +#: InvenTree/status_codes.py:117 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:331 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:333 +#: InvenTree/status_codes.py:123 msgid "Converted to variant" msgstr "" -#: InvenTree/status_codes.py:335 templates/js/translated/table_filters.js:321 -msgid "Sent to customer" -msgstr "" - -#: InvenTree/status_codes.py:336 -msgid "Returned from customer" -msgstr "" - -#: InvenTree/status_codes.py:338 +#: InvenTree/status_codes.py:126 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:339 +#: InvenTree/status_codes.py:127 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:340 +#: InvenTree/status_codes.py:128 msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:341 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:343 +#: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" msgstr "" -#: InvenTree/status_codes.py:345 +#: InvenTree/status_codes.py:135 msgid "Received against Purchase Order" msgstr "" -#: InvenTree/status_codes.py:347 +#: InvenTree/status_codes.py:138 msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:361 +#: 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:433 +#: InvenTree/status_codes.py:191 msgid "Return" msgstr "" -#: InvenTree/status_codes.py:434 +#: InvenTree/status_codes.py:194 msgid "Repair" msgstr "" -#: InvenTree/status_codes.py:435 -msgid "Refund" -msgstr "" - -#: InvenTree/status_codes.py:436 +#: InvenTree/status_codes.py:197 msgid "Replace" msgstr "" -#: InvenTree/status_codes.py:437 +#: InvenTree/status_codes.py:200 +msgid "Refund" +msgstr "" + +#: InvenTree/status_codes.py:203 msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "" -#: build/api.py:221 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "" -#: build/models.py:156 order/models.py:356 order/models.py:762 -#: order/models.py:1084 order/models.py:1721 part/admin.py:278 -#: part/models.py:3797 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1192 order/models.py:1308 order/models.py:1309 -#: part/models.py:390 part/models.py:2864 part/models.py:2978 -#: part/models.py:3118 part/models.py:3137 part/models.py:3156 -#: part/models.py:3177 part/models.py:3269 part/models.py:3554 -#: part/models.py:3662 part/models.py:3762 part/models.py:4076 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -932,548 +1018,563 @@ msgstr "" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:505 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "" -#: build/models.py:253 order/models.py:241 part/models.py:1037 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:261 order/models.py:406 order/models.py:1764 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:255 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1041 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:437 order/serializers.py:378 -#: order/serializers.py:500 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1386 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1598 -msgid "Stock item is over-allocated" -msgstr "" - -#: build/models.py:1297 order/models.py:1601 -msgid "Allocation quantity must be greater than zero" -msgstr "" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1058 -#: order/serializers.py:1079 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1070 order/models.py:1642 order/serializers.py:1232 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2991 part/models.py:3778 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:513 order/serializers.py:1236 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:669 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:486 -#: order/serializers.py:605 order/serializers.py:1587 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:788 -#: order/models.py:1747 order/serializers.py:523 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:260 order/serializers.py:1126 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3685 -#: part/models.py:4068 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1116 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1400 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1513,15 +1614,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1530,89 +1631,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1637,18 +1739,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:237 -#: order/models.py:1096 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1659,47 +1761,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1451 order/models.py:1301 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 #: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1727,8 +1828,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1219 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1740,23 +1841,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1764,147 +1865,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1912,14 +1972,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1958,1494 +2014,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:231 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3559 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:995 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1001 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1012 -msgid "Purchaseable" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1017 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1007 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" +#: common/models.py:1197 +msgid "Automatic Backup" msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" +msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1027 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" +#: common/models.py:1204 +msgid "Auto Backup Interval" msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:1370 +msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1378 -msgid "Default page size for PDF reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1388 -msgid "Enable Test Reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" msgstr "" #: common/models.py:1550 -msgid "Enable SSO on the login pages" +msgid "Default page size for PDF reports" msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" +msgid "Attach Test Reports" msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" +msgid "Autofill Serial Numbers" msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1129 order/models.py:1936 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1022 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:913 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3476,7 +3581,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3495,9 +3600,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3505,331 +3610,395 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" - -#: company/models.py:119 -msgid "Company address" -msgstr "" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:263 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2254 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:986 part/models.py:3406 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:379 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3800 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1918 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1918 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1920 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3839,72 +4008,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:776 -#: order/models.py:1735 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3914,156 +4090,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4072,46 +4236,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4135,106 +4281,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4242,102 +4393,95 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4346,63 +4490,63 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:70 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:239 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1449 order/models.py:1175 order/models.py:1259 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1453 order/models.py:1906 order/models.py:1952 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1455 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:71 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:76 order/serializers.py:48 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:78 order/serializers.py:49 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:207 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:229 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" @@ -4410,184 +4554,188 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:233 order/models.py:1091 order/models.py:1451 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:238 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:247 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:254 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:264 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:357 order/models.py:763 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:365 order/models.py:788 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:380 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:388 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:388 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:395 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:400 order/models.py:1758 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:401 order/models.py:1759 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:407 order/models.py:1765 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:442 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:603 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:777 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:796 order/models.py:1752 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:796 order/models.py:1753 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:798 order/models.py:1405 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:805 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:854 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:858 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:861 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:864 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1071 +#: order/models.py:1074 msgid "Item quantity" msgstr "" -#: order/models.py:1084 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1086 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1097 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1115 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1120 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1121 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1130 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1160 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1168 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1174 order/models.py:1259 order/models.py:1300 -#: order/models.py:1399 order/models.py:1548 order/models.py:1905 -#: order/models.py:1952 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1193 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1200 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1201 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1208 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1209 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1222 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" @@ -4600,7 +4748,7 @@ msgid "Only salable parts can be assigned to a sales order" msgstr "" #: order/models.py:1319 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" @@ -4616,7 +4764,7 @@ msgstr "" msgid "Date of shipment" msgstr "" -#: order/models.py:1411 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" @@ -4632,8 +4780,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1427 order/models.py:1624 order/serializers.py:1247 -#: order/serializers.py:1375 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" @@ -4669,229 +4817,229 @@ msgstr "" msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1589 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1591 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1604 order/serializers.py:1109 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1607 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1608 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1616 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1625 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1638 order/models.py:1913 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1639 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1642 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1722 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1736 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1747 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1898 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1914 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1919 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1920 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1931 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1931 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1937 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:246 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:261 order/serializers.py:1127 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:272 order/serializers.py:1138 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:385 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:403 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:421 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:426 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:432 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:471 order/serializers.py:1215 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:477 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:487 order/serializers.py:606 order/serializers.py:1588 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:506 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:514 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:527 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:528 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:544 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:568 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:622 order/serializers.py:1603 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:639 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:949 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1006 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1070 order/serializers.py:1224 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1092 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1237 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1259 order/serializers.py:1383 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1262 order/serializers.py:1386 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1316 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1326 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1554 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1561 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1564 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1596 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1677 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" @@ -4904,11 +5052,11 @@ msgstr "" msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:89 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:94 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4918,26 +5066,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4947,90 +5095,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5083,13 +5223,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5150,9 +5290,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5163,30 +5303,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5195,40 +5330,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5236,35 +5371,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5272,18 +5407,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5291,64 +5425,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3666 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3670 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:888 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:895 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:874 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5356,24 +5491,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:863 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:979 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5381,115 +5516,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2929 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2935 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:391 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3674 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:497 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:517 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:535 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:621 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:769 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:770 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:776 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:126 part/models.py:922 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5497,477 +5625,484 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:74 part/models.py:3615 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:75 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:127 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:132 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:134 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:138 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:138 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:143 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:144 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:163 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:474 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:516 part/models.py:528 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:600 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:671 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:802 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:807 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:821 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:845 part/models.py:3671 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:851 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:852 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:862 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:869 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:875 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:882 part/models.py:3197 part/models.py:3614 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:883 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:889 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:894 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:965 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:966 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:973 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:974 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:980 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:987 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:996 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1002 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1008 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1013 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1018 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1023 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1028 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1030 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1030 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1033 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1035 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1039 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1041 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1045 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1920 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2852 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2869 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2870 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2875 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2876 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2881 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2882 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2887 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2893 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2894 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2899 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2900 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2905 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2906 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2911 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2912 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2917 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2918 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2923 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2924 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2930 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2936 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2941 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2942 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2947 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2948 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2953 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2954 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2959 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2960 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2979 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2984 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2985 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2992 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2996 part/models.py:3079 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2997 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3005 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3013 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3018 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3019 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3024 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3025 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3086 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3087 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3092 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3093 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3101 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3237 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3254 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3274 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3275 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3280 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3281 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3286 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3287 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3292 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3293 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3298 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3299 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3345 +#: part/models.py:3346 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3350 +#: part/models.py:3351 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3368 +#: part/models.py:3369 msgid "Choices must be unique" msgstr "" -#: part/models.py:3384 +#: part/models.py:3385 msgid "Parameter template name must be unique" msgstr "" @@ -5983,8 +6118,8 @@ msgstr "" msgid "Parameter description" msgstr "" -#: part/models.py:3422 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" @@ -5992,7 +6127,7 @@ msgstr "" msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3428 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" @@ -6000,447 +6135,459 @@ msgstr "" msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3510 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3554 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3559 part/models.py:3620 part/models.py:3621 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3564 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3564 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3625 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3626 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3663 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3675 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3678 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3679 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3763 -msgid "Select parent part" +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" msgstr "" #: part/models.py:3771 +msgid "Select parent part" +msgstr "" + +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3778 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3782 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3783 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3788 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3789 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3793 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3794 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3797 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3800 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3804 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3804 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3809 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3810 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3815 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3816 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3821 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3822 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3908 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3917 part/models.py:3919 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4035 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4056 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4069 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4077 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4092 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4096 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4096 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4114 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4118 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6459,90 +6606,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6579,7 +6706,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6588,9 +6715,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6602,101 +6729,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6730,13 +6857,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6745,158 +6872,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6953,15 +7080,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6985,11 +7112,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7052,12 +7179,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7106,37 +7233,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7148,20 +7274,21 @@ msgstr "" msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7169,7 +7296,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7183,6 +7356,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7220,242 +7398,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7472,9 +7817,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7486,26 +7831,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7515,12 +7864,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2242 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2248 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7546,485 +7895,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:419 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:581 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:588 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:614 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:623 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:641 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1377 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1383 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1389 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1392 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1395 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1402 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1473 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1476 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1479 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1485 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1488 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1495 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1499 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1503 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1507 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2160 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2218 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2224 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2243 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2249 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2255 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2262 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2268 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8032,263 +8435,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8300,82 +8711,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8412,7 +8827,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8449,71 +8864,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8539,7 +8954,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8556,7 +8971,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8611,7 +9026,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8649,7 +9064,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8657,12 +9072,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8670,30 +9094,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8702,7 +9126,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8739,7 +9163,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8747,32 +9172,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8808,7 +9235,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8825,7 +9252,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8849,50 +9276,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8911,14 +9391,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8930,11 +9410,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8946,6 +9426,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8956,13 +9440,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8988,6 +9465,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9202,44 +9680,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9257,7 +9739,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "" @@ -9433,30 +9915,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9485,7 +9967,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9499,15 +9981,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9519,27 +10001,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9551,19 +10033,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9571,23 +10061,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9620,7 +10122,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9644,7 +10146,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9702,743 +10204,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10446,89 +11044,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10548,98 +11146,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10648,32 +11266,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10698,7 +11316,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10714,363 +11332,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11078,51 +11688,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11146,254 +11752,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11422,250 +12028,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11677,686 +12283,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12388,51 +13034,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12452,11 +13098,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12472,11 +13118,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12615,50 +13261,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12667,58 +13269,98 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/fa/LC_MESSAGES/django.po b/InvenTree/locale/fa/LC_MESSAGES/django.po index cd76634ccc..285ecdf5cc 100644 --- a/InvenTree/locale/fa/LC_MESSAGES/django.po +++ b/InvenTree/locale/fa/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" "Last-Translator: \n" "Language-Team: Persian\n" "Language: fa_IR\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "Address e API peida nashod" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "جزئیات خطا را می توان در پنل مدیریت پیدا کرد" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "تاریخ را وارد کنید" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "یادداشت" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "مقدار '{name}' در قالب الگو ظاهر قرار نمی گیرد" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "مقدار ارائه شده با الگوی مورد نیاز مطابقت ندارد: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "رمز عبور را وارد کنید" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "گذرواژه جدید را وارد کنید" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "تأیید کلمه‌ی عبور" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "گذرواژه جدید را تایید کنید" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "رمز عبور قدیمی" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "ایمیل (دوباره وارد کنید)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "تایید آدرس ایمیل" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "هر بار باید همان ایمیل را تایپ کنید." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "آدرس ایمیل اصلی ارائه شده معتبر نیست." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "دامنه ایمیل ارائه شده تایید نشده است." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" +msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" +msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "خطا در اتصال" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "سرور با کد وضعیت نامعتبر پاسخ داد" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "یک استثنا رخ داده است" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "سرور با مقدار طول محتوا نامعتبر پاسخ داد" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "اندازه عکس بسیار بزرگ است" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -484,143 +509,155 @@ msgstr "ستون مورد نیاز وجود ندارد: \"{name}\"" msgid "Duplicate column: '{col}'" msgstr "ستون تکراری: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "آدرس اینترنتی" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "آدرس فایل تصویری از راه دور" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:740 -msgid "Chinese" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "" @@ -630,8 +667,8 @@ msgstr "" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "" @@ -654,10 +691,10 @@ msgstr "" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "" @@ -689,7 +726,7 @@ msgstr "" msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "" @@ -745,7 +782,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "" @@ -765,7 +802,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "" @@ -813,119 +850,165 @@ msgstr "" msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "مرجع سفارش فروش" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "منبع محل" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "مقصد" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1766,147 +1864,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1914,14 +1971,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" +#: common/models.py:1197 +msgid "Automatic Backup" msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" +msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" +#: common/models.py:1204 +msgid "Auto Backup Interval" msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:1370 +msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1378 -msgid "Default page size for PDF reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1388 -msgid "Enable Test Reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" msgstr "" #: common/models.py:1550 -msgid "Enable SSO on the login pages" +msgid "Default page size for PDF reports" msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" +msgid "Attach Test Reports" msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" +msgid "Autofill Serial Numbers" msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3507,331 +3609,395 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" - -#: company/models.py:119 -msgid "Company address" -msgstr "" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3916,156 +4089,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4244,102 +4392,95 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "هیچ عملیات کاربر-محوری، مشخص نشده است" msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9259,7 +9738,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "تایید" @@ -9435,30 +9914,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11043,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12616,50 +13259,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12668,59 +13267,99 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/fi/LC_MESSAGES/django.po b/InvenTree/locale/fi/LC_MESSAGES/django.po index 1718b7e25e..5044c0e3b4 100644 --- a/InvenTree/locale/fi/LC_MESSAGES/django.po +++ b/InvenTree/locale/fi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:54\n" "Last-Translator: \n" "Language-Team: Finnish\n" "Language: fi_FI\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API-rajapintaa ei löydy" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "Käyttäjän oikeudet eivät riitä kohteen tarkastelemiseen" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "Arvoa ei annettu" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" -msgstr "Annettu arvo ei ole kelvollinen numero" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "Annetulla arvolla on virheellinen yksikkö" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "Annettua arvoa ei voitu muuntaa määritetyksi yksiköksi" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Virheen tiedot löytyvät hallintapaneelista" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Anna päivämäärä" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Merkinnät" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "" -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Anna salasana" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Anna uusi salasana" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Vahvista salasana" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Vahvista uusi salasana" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Vanha salasana" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "Sähköposti (uudelleen)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Sähköpostiosoitteen vahvistus" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Sinun täytyy kirjoittaa sama sähköposti joka kerta." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Annettu ensisijainen sähköpostiosoite ei kelpaa." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Annetun sähköpostiosoitteen verkkotunnusta ei hyväksytä." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Annettu määrä on virheellinen" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Tyhjä sarjanumero" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Duplikaatti sarjanumero" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" +msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" +msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Sarjanumeroita ei löytynyt" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Yksilöllisten sarjanumeroiden määrän ({s}) on vastattava määrää ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Yhteysvirhe" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Palvelin vastasi virheellisellä tilakoodilla" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Kuva on liian iso" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Kuvan lataus ylitti enimmäiskoon" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Etäpalvelin palautti tyhjän vastauksen" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "Annettu URL ei ole kelvollinen kuvatiedosto" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "Sähköposti" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "Metatietojen tulee olla python dict objekti" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "Liitännäisen metadata" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "JSON metadatakenttä, ulkoisten liitännäisten käyttöön" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Virheellisesti muotoiltu malli" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Viitekenttä ei voi olla tyhjä" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Viitenumero on liian suuri" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Puuttuva tiedosto" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Puuttuva ulkoinen linkki" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Liite" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Valitse liitettävä tiedosto" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Linkki" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Linkki ulkoiseen URLiin" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Kommentti" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Tiedoston kommentti" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Käyttäjä" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "latauspäivä" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Tiedoston nimi ei saa olla tyhjä" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Virheellinen liitteen hakemisto" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Tiedostonimi sisältää kielletyn merkin '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Tiedostonimen pääte puuttuu" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Samanniminen liite on jo olemassa" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Virhe tiedoston uudelleennimeämisessä" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Virheellinen valinta" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Nimi" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Kuvaus" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Kuvaus (valinnainen)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Polku" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Viivakoodin Tiedot" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Palvelinvirhe" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Täytyy olla kelvollinen luku" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuutta" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "Valitse valuutta käytettävissä olevista vaihtoehdoista" @@ -484,143 +509,155 @@ msgstr "Vaadittu sarake puuttuu: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Duplikaatti sarake: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "Kuvatiedoston URL" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Kuvien lataaminen ei ole käytössä" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "tšekki" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "tanska" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "saksa" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "kreikka" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "englanti" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "espanja" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "espanja (Meksiko)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "farsi / persia" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "suomi" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "ranska" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "heprea" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "unkari" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "italia" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "japani" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "korea" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "hollanti" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "norja" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "puola" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "portugali" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "portugali (Brasilia)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "venäjä" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "slovenia" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "ruotsi" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "thai" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "turkki" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "vietnam" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "kiina" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "InvenTree järjestelmän terveystarkastukset epäonnistui" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Odottaa" @@ -630,8 +667,8 @@ msgstr "" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Valmis" @@ -654,10 +691,10 @@ msgstr "Palautettu" msgid "In Progress" msgstr "Kesken" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Lähetetty" @@ -689,7 +726,7 @@ msgstr "Asetettu karanteeniin" msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Varastotuote luotu" @@ -745,7 +782,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "" @@ -765,7 +802,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "" @@ -813,119 +850,165 @@ msgstr "" msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Muokkaa käyttäjätietoja" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Aseta salasana" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Salasanat eivät täsmää" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Virheellinen salasana" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Järjestelmän tiedot" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Tietoja InvenTree:stä" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Saatavilla" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Osa" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Ulkoinen linkki" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Varastotuote" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Määrä" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Varastotuote" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Sarjanumerot" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Sijainti" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Tila" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "Ei sallittu" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "Poista viivakoodin linkitys" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "Linkitä viivakoodi" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "Myöhässä" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Valmis" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "Prioriteetti" @@ -1729,8 +1827,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1766,147 +1864,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Valmis" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Liitteet" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1914,14 +1971,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "{name.title()} Tiedosto" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "Päivitetty" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Viimeisimmän päivityksen aikaleima" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "Ei ryhmää" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "Verkkotunnus ei saa olla tyhjä." -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Virheellinen verkkotunnus: {domain}" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "Uudelleenkäynnistys vaaditaan" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Yrityksen nimi" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "Yrityksen sisäinen nimi" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Oletusvaluutta" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "päivää" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "Automaattinen varmuuskopionti" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "Ota käyttöön tietokannan ja mediatiedostojen automaattinen varmuuskopiointi" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "Automaattisen varmuuskopioinnin aikaväli" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "Viivakoodituki" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" +msgstr "päivää" + +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1144 +msgid "Download from URL" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" -msgstr "" - -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" -msgstr "Komponentti" +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" -msgstr "Ostettavissa" - -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" -msgstr "Seurattavissa" +#: common/models.py:1197 +msgid "Automatic Backup" +msgstr "Automaattinen varmuuskopionti" #: common/models.py:1198 -msgid "Parts are trackable by default" -msgstr "" +msgid "Enable automatic backup of database and media files" +msgstr "Ota käyttöön tietokannan ja mediatiedostojen automaattinen varmuuskopiointi" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" -msgstr "" +#: common/models.py:1204 +msgid "Auto Backup Interval" +msgstr "Automaattisen varmuuskopioinnin aikaväli" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "Viivakoodituki" + +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1299 +msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" -msgstr "Sisäiset hinnat" - -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" -msgstr "Sisäisen hinnan ohitus" - -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" +msgstr "Komponentti" + +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" +msgstr "Ostettavissa" + +#: common/models.py:1349 +msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" msgstr "" +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" +msgstr "Seurattavissa" + #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:1370 +msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" -msgstr "Sivun koko" - -#: common/models.py:1378 -msgid "Default page size for PDF reports" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1388 -msgid "Enable Test Reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" -msgstr "Täytä sarjanumerot automaattisesti" - -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" +msgstr "Sisäiset hinnat" + +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1511 +msgid "Internal Price Override" +msgstr "Sisäisen hinnan ohitus" + +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" -msgstr "" - -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" -msgstr "" - -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" -msgstr "Salli salasananpalautus" +msgid "Enable Reports" +msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" -msgstr "Salli rekisteröinti" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" -msgstr "Salli SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" +msgstr "Sivun koko" #: common/models.py:1550 -msgid "Enable SSO on the login pages" -msgstr "Salli SSO kirjautumissivuilla" +msgid "Default page size for PDF reports" +msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" -msgstr "Salli SSO rekisteröinti" +msgid "Enable Test Reports" +msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" -msgstr "Sähköposti vaaditaan" +msgid "Attach Test Reports" +msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" -msgstr "Sähköpostiosoite kahdesti" +msgid "Autofill Serial Numbers" +msgstr "Täytä sarjanumerot automaattisesti" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" -msgstr "Salasana kahdesti" +msgid "Delete Depleted Stock" +msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" -msgstr "Sallitut verkkotunnukset" +msgid "Batch Code Template" +msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" -msgstr "Pakota MFA" +msgid "Allow sale of expired stock" +msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "Salli salasananpalautus" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "Salli rekisteröinti" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "Salli SSO" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "Salli SSO kirjautumissivuilla" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "Salli SSO rekisteröinti" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "Sähköposti vaaditaan" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" -msgstr "" +msgid "Mail twice" +msgstr "Sähköpostiosoite kahdesti" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" -msgstr "" +msgid "Password twice" +msgstr "Salasana kahdesti" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" -msgstr "" +msgid "Allowed domains" +msgstr "Sallitut verkkotunnukset" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "" +msgid "Enforce MFA" +msgstr "Pakota MFA" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "Näytä uutiset" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "Näytä uutiset kotisivulla" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" -msgstr "" +#: common/models.py:2051 +msgid "Show News" +msgstr "Näytä uutiset" #: common/models.py:2052 -msgid "Show Quantity in Forms" -msgstr "" +msgid "Show news on the homepage" +msgstr "Näytä uutiset kotisivulla" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Hinta" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "Aktiivinen" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "Salaisuus" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "Isäntä" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "Otsikko" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "Julkaistu" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "Julkaisija" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "Yhteenveto" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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 "Kuva" -#: common/models.py:2737 +#: common/models.py:2902 msgid "Image file" msgstr "Kuvatiedosto" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "Uusi {verbose_name}" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "Yrityksen kuvaus" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "Sivusto" @@ -3507,331 +3609,395 @@ msgstr "Sivusto" msgid "Company website URL" msgstr "Yrityksen sivuston URL" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Osoite" - -#: company/models.py:119 -msgid "Company address" -msgstr "Yrityksen osoite" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Puhelinnumero" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "Sähköposti" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Kontakti" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "on asiakas" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "on toimittaja" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "on valmistaja" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Yritys" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Valmistaja" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Valitse valmistaja" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "Valmistajan osanumero" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Arvo" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Toimittaja" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "Valitse toimittaja" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "SKU" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "Toimittajan varastonimike" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "Valitse valmistajan osa" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "Muistiinpano" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "Saatavilla" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "Muokkaa yrityksen tietoja" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "Muokkaa yritystä" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "Poista yritys" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "Poista yritys" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "Poista yritys" msgid "Part image" msgstr "Osan kuva" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Asiakas" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "Käyttää oletusvaluuttaa" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Osoite" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "Puhelin" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "Poista kuva" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "Poista" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3916,156 +4089,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "Poista" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4244,103 +4392,96 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "Uusi toimittaja" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "Uusi valmistaja" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "Asiakkaat" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "Uusi asiakas" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "Yritykset" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "Uusi yritys" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "Käytössä" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "Leveys [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "Korkeus [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "Suodattimet" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" -msgstr "QR-koodi" +msgid "QR Code" +msgstr "" #: label/templates/label/part/part_label_code128.html:31 #: label/templates/label/stocklocation/qr_and_text.html:31 @@ -4348,170 +4489,174 @@ msgstr "QR-koodi" msgid "QR code" msgstr "QR-koodi" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "Hinta yhteensä" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "Tilauksen valuutta" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "Tilauksen viite" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "Asiakkaan viite " -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "Vastaanotettu" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "Seurantakoodi" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "Laskunumero" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Viivakoodi" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "Muokkaa tilausta" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "Peru tilaus" @@ -4949,90 +5094,82 @@ msgstr "Kopioi tilaus" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "Kokonaiskustannukset" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "Kokonaiskustannuksia ei voitu laskea" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Poista rivi" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Toiminnot" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "Hintaa ei löytynyt" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Avainsanat" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "Oletus avainsanat" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "Kuvake" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "Kuvake (valinnainen)" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "Kategoria" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "Päivämäärä" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "Muut merkinnät" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "Raportti" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "Valmistajan osanumero" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "Luo raportti" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "Muokkaa kategoriaa" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "Muokkaa kategoriaa" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "Poista kategoria" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "Poista kategoria" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "Luo uusi osa" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "Uusi osa" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "Valinnat" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "Aseta kategoria" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "Aseta kategoria" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "Monista osa" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "Muokkaa osaa" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "Poista osa" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "" msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "Avaa linkki" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "Avain" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "Numeerinen" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "Numeerinen asetus" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Sarjanumero" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Sarjanumero" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "edellinen sivu" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "Siirry edeltävään sarjanumeroon" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "seuraava sivu" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "Siirry seuraavaan sarjanumeroon" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "Varoitus" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 +msgid "Location actions" +msgstr "" + +#: stock/templates/stock/location.html:106 msgid "Edit location" msgstr "Muokkaa sijaintia" -#: stock/templates/stock/location.html:106 +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "Poista sijainti" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "Uusi sijainti" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "Asetukset" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "Muokkaa" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Poista" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 msgid "Edit Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "Palvelin" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "Muokkaa" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "Käyttäjätunnus" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "Vahvistamaton" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "Ensisijainen" @@ -9204,44 +9679,48 @@ msgstr "Ajantasalla" msgid "Update Available" msgstr "Päivitys saatavilla" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "InvenTree dokumentaatio" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "API-versio" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "Python-versio" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "Django-versio" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "Mobiilisovellus" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "kopioi leikepöydälle" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "kopioi versiotiedot" @@ -9259,7 +9738,7 @@ msgstr "Vahvista sähköpostiosoite" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Vahvista" @@ -9435,30 +9914,30 @@ msgstr "Lisää linkki" msgid "Add Attachment" msgstr "Lisää liite" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "Poista valitut liitteet" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "Poista liitteet" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "Palvelimen uudelleenkäynnistys vaaditaan" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "Kaikki liitteet poistetaan" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "Poista liitteet" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "Liitteitä ei löytynyt" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "Muokkaa liitettä" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "Muokkaa liitettä" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "Poista liite" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "Sulje" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "Valitse" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "Edistyminen" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "Lisää valmistaja" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "Lisää toimittaja" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "Lisää uusi yritys" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "Luo uusi yhteystieto" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "Muokkaa yhteystietoa" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "Poista yhteystiedot" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "Yhteystietoja ei löytynyt" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "Puhelinnumero" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "Sähköposti" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "Poista yhteystieto" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "Päivitetty viimeksi" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "tosi" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "epätosi" @@ -10448,89 +11043,89 @@ msgstr "epätosi" msgid "Select filter" msgstr "Valitse suodatin" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "Tulosta raportteja" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "Luo suodatin" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "Tosi" msgid "False" msgstr "Epätosi" -#: templates/js/translated/label.js:58 -msgid "Select Printer" -msgstr "Valitse tulostin" - -#: templates/js/translated/label.js:62 -msgid "Export to PDF" -msgstr "Vie PDF-muotoon" - -#: templates/js/translated/label.js:114 -msgid "selected" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "Peruuta" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "Lähetä" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "Odotetaan palvelinta..." -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "Ikä" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "Ilmoitus" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "Merkitse lukemattomaksi" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "Merkitse luetuksi" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "Ei lukemattomia ilmoituksia" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "Luo osa" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "Luo toinen osa tämän jälkeen" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "Osan luonti onnistui" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "Muokkaa osaa" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "Poista osa" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "Aseta kategoria" + +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2379 +msgid "No category" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "Lisää sarjanumeroita" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "Sarjanumerot" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "Skannaa tuotteen viivakoodi" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "Lisää asiakas" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "Virheellinen asiakas" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "Lasku" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "Syötä sarjanumero" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "Syötä sarjanumero" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "Siirrä" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: 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 "Sarjanumero" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "Tuotannossa" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "Kaikki" @@ -12454,11 +13097,11 @@ msgstr "Näytä ilmoitukset" msgid "New Notifications" msgstr "Uudet ilmoitukset" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "Kirjaudu ulos" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12616,50 +13259,6 @@ msgstr "Sähköpostiasetukset" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "Siirrä valitut varastokohteet" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "Poista valitut kohteet" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "Kyllä" @@ -12668,59 +13267,99 @@ msgstr "Kyllä" msgid "No" msgstr "Ei" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "Käyttäjät" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "Valitse mitkä käyttäjät on määritetty tähän ryhmään" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" -msgstr "Seuraavat käyttäjät ovat useiden ryhmien jäseniä:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "Henkilökohtaiset tiedot" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "Oikeudet" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "Ryhmä" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "Näytä" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "Oikeus tarkastella kohteita" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "Oikeus lisätä kohteita" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "Muuta" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "Oikeus muokata kohteita" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "Oikeus poistaa kohteita" diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po index ed9b7d90d3..6bd4cef1ae 100644 --- a/InvenTree/locale/fr/LC_MESSAGES/django.po +++ b/InvenTree/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:26\n" +"POT-Creation-Date: 2023-11-09 10:51+0000\n" +"PO-Revision-Date: 2023-11-08 20:35\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "Point de terminaison de l'API introuvable" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "L'utilisateur n'a pas la permission de voir ce modèle" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" +msgstr "Pas de valeur renseignée" + +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "" - -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Les détails de l'erreur peuvent être trouvées dans le panneau d'administration" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Entrer la date" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Notes" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "La valeur '{name}' n'apparaît pas dans le format du modèle" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "La valeur fournie ne correspond pas au modèle requis : " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Entrer le mot de passe" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Entrer le nouveau mot de passe" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Confirmez le mot de passe" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Confirmer le nouveau mot de passe" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Ancien mot de passe" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "Email (encore)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Confirmation de l'adresse email" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Vous devez taper le même e-mail à chaque fois." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "L'adresse e-mail principale fournie n'est pas valide." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Le domaine e-mail fourni n'est pas approuvé." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "L'enregistrement est désactivé." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Quantité fournie invalide" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Chaîne de numéro de série vide" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Numéro de série en doublon" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Plage de groupe invalide : {g}" +msgid "Invalid group range: {group}" +msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "La plage de groupe {g} dépasse la quantité autorisée ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Séquence de groupe invalide : {g}" +msgid "Invalid group sequence: {group}" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Aucun numéro de série trouvé" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Le nombre de numéros de série uniques ({s}) doit correspondre à la quantité ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Retirer les balises HTML de cette valeur" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Erreur de connexion" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Le serveur a répondu avec un code de statut invalide" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Une erreur est survenue" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Le serveur a répondu avec une valeur de longueur de contenu invalide" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Image trop volumineuse" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "La taille de l'image dépasse la taille maximale autorisée" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Le serveur distant a renvoyé une réponse vide" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "L'URL fournie n'est pas un fichier image valide" -#: InvenTree/models.py:82 -msgid "Metadata must be a python dict object" -msgstr "" +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "[{site.name}] Se connecter à l'application" -#: InvenTree/models.py:86 +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "E-mail" + +#: InvenTree/models.py:81 +msgid "Metadata must be a python dict object" +msgstr "Les metadata doivent être un objet python de type \"dict\"" + +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "Métadonnées de l'Extension" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" -msgstr "" +msgstr "Champs metadata JSON, pour plugins tiers" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Modèle mal formaté" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Clé de format inconnu spécifiée" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Clé de format requise manquante" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Le champ de référence ne peut pas être vide" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "La référence doit correspondre au modèle requis" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Le numéro de référence est trop grand" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Fichier manquant" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Lien externe manquant" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Pièce jointe" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Sélectionnez un fichier à joindre" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Lien" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Lien vers une url externe" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Commentaire" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Commentaire du fichier" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Utilisateur" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "date de chargement" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Le nom de fichier ne doit pas être vide" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Répertoire de pièce jointe invalide" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Le nom de fichier contient le caractère illégal '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Extension manquante du nom de fichier" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Une pièce jointe avec ce nom de fichier existe déjà" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Erreur lors du renommage du fichier" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "Les noms dupliqués ne peuvent pas exister sous le même parent" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Choix invalide" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Nom" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Description" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Description (facultative)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "parent" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Chemin d'accès" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" -msgstr "" +msgstr "Notes Markdown (option)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Données du code-barres" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Données de code-barres tierces" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Hash du code-barre" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Hachage unique des données du code-barres" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Code-barres existant trouvé" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Erreur serveur" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "Une erreur a été loguée par le serveur." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Doit être un nombre valide" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Devise" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "Sélectionnez la devise à partir des options disponibles" @@ -484,143 +509,155 @@ msgstr "Colonne requise manquante : {name}" msgid "Duplicate column: '{col}'" msgstr "Colonne duliquée : '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "URL du fichier image distant" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Le téléchargement des images depuis une URL distante n'est pas activé" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Tchèque" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Danois" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Allemand" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Grec" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Anglais" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Espagnol" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Espagnol (Mexique)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Farsi / Perse" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" -msgstr "" +msgstr "Finnois" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Français" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Hébreu" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Hongrois" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Italien" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japonais" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Coréen" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Néerlandais" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norvégien" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Polonais" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portugais" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portugais (Brésilien)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Russe" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Slovénien" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Suédois" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Thaïlandais" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Turc" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnamien" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Chinois" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "Chinois (Simplifié)" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "Chinois (Traditionnel)" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Échec de la vérification du processus d'arrière-plan" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "Backend d'email non configuré" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "Échec des contrôles de santé du système" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "En attente" @@ -630,8 +667,8 @@ msgstr "Placé" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Terminé" @@ -654,10 +691,10 @@ msgstr "Retourné" msgid "In Progress" msgstr "En Cours" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Expédié" @@ -689,7 +726,7 @@ msgstr "En quarantaine" msgid "Legacy stock tracking entry" msgstr "Ancienne entrée de suivi de stock" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Article en stock créé" @@ -719,7 +756,7 @@ msgstr "Emplacement modifié" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "" +msgstr "Stock mis à jour" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" @@ -745,7 +782,7 @@ msgstr "Séparer de l'élément parent" msgid "Split child item" msgstr "Fractionner l'élément enfant" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Articles de stock fusionnés" @@ -763,25 +800,25 @@ msgstr "Sortie de l'ordre de construction terminée" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "" +msgstr "La sortie de l'ordre de construction a été refusée" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Consommé par ordre de construction" #: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" -msgstr "" +msgstr "Commandes expédiées vs. ventes" #: InvenTree/status_codes.py:135 msgid "Received against Purchase Order" -msgstr "" +msgstr "Livraisons reçues vs. commandes réalisées" #: InvenTree/status_codes.py:138 msgid "Returned against Return Order" -msgstr "" +msgstr "Livraisons retournées vs. commandes retournées" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Envoyé au client" @@ -799,133 +836,179 @@ msgstr "Retour" #: InvenTree/status_codes.py:194 msgid "Repair" -msgstr "" +msgstr "Réparer" #: InvenTree/status_codes.py:197 msgid "Replace" -msgstr "" +msgstr "Remplacer" #: InvenTree/status_codes.py:200 msgid "Refund" -msgstr "" +msgstr "Remboursement" #: InvenTree/status_codes.py:203 msgid "Reject" -msgstr "" +msgstr "Refuser" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" -msgstr "" +msgstr "Unité invalide" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Code de devise invalide" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "La valeur de surplus ne doit pas être négative" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Le surplus ne doit pas dépasser 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Valeur invalide pour le dépassement" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Modifier les informations utilisateur" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Définir le mot de passe" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Les mots de passe doivent correspondre" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Mot de passe incorrect" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Informations système" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "À propos d'InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "La construction doit être annulée avant de pouvoir être supprimée" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "Consommable" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "Facultatif" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "Suivi" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "Allouée" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Disponible" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Ordre de Fabrication" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Ordres de Fabrication" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Choix invalide pour la fabrication parente" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Référence de l' Ordre de Fabrication" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Référence" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" -msgstr "" +msgstr "Brève description de la fabrication (optionnel)" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Fabrication parente" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "BuildOrder associé a cette fabrication" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "BuildOrder associé a cette fabrication" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Pièce" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Sélectionnez la pièce à construire" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Bon de commande de référence" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Commande de vente à laquelle cette construction est allouée" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Emplacement d'origine" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Sélectionner l'emplacement à partir duquel le stock doit être pris pour cette construction (laisser vide pour prendre à partir de n'importe quel emplacement de stock)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Emplacement cible" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Sélectionnez l'emplacement où les éléments complétés seront stockés" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Quantité a fabriquer" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Nombre de stock items à construire" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Articles terminés" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Nombre d'articles de stock qui ont été terminés" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "État de la construction" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Code de statut de construction" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Code de lot" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Code de lot pour ce build output" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Date de création" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Date d'achèvement cible" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Date cible pour l'achèvement de la construction. La construction sera en retard après cette date." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Date d'achèvement" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "achevé par" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Émis par" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Utilisateur ayant émis cette commande de construction" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Responsable" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "Utilisateur ou groupe responsable de cet ordre de construction" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Lien Externe" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "Priorité de fabrication" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "Priorité de cet ordre de fabrication" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "Code du projet" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "Code de projet pour cet ordre de construction" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "La commande de construction {build} a été effectuée" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "Une commande de construction a été effectuée" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Pas d'ordre de production défini" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "L'ordre de production a déjà été réalisé" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "L'ordre de production de correspond pas à l'ordre de commande" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "La quantité doit être supérieure à zéro" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" -msgstr "" +msgstr "La quantité ne peut pas être supérieure à la quantité de sortie" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "L'élément de construction doit spécifier une sortie de construction, la pièce maîtresse étant marquée comme objet traçable" +#: build/models.py:1266 +msgid "Build object" +msgstr "Création de l'objet" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "La quantité allouée ({q}) ne doit pas excéder la quantité disponible ({a})" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "L'article de stock est suralloué" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "La quantité allouée doit être supérieure à zéro" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "La quantité doit être de 1 pour stock sérialisé" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "L'article du stock sélectionné n'a pas été trouvé dans la BOM" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Assemblage" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "Construction à laquelle allouer des pièces" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Article en stock" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Stock d'origine de l'article" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Quantité" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "Quantité requise pour la commande de construction" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "L'élément de construction doit spécifier une sortie de construction, la pièce maîtresse étant marquée comme objet traçable" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "La quantité allouée ({q}) ne doit pas excéder la quantité disponible ({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "L'article de stock est suralloué" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "La quantité allouée doit être supérieure à zéro" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "La quantité doit être de 1 pour stock sérialisé" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "L'article de stock sélectionné ne correspond pas à la ligne BOM" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Article en stock" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Stock d'origine de l'article" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Quantité de stock à allouer à la construction" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Installer dans" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Stock de destination de l'article" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "Sortie d'assemblage" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "L'ordre de production ne correspond pas à l'ordre parent" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "La pièce en sortie ne correspond pas à la pièce de l'ordre de construction" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "Cet ordre de production a déjà été produit" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "Cet ordre de production n'est pas complètement attribué" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "Entrer la quantité désiré pour la fabrication" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "Quantité entière requise pour les pièces à suivre" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Quantité entière requise, car la facture de matériaux contient des pièces à puce" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Numéros de série" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "Entrer les numéros de séries pour la fabrication" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "Allouer automatiquement les numéros de série" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "Affecter automatiquement les éléments requis avec les numéros de série correspondants" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "Les numéros de série suivants existent déjà, ou sont invalides" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "Une liste d'ordre de production doit être fourni" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Emplacement" -#: build/serializers.py:416 -msgid "Stock location for scrapped outputs" -msgstr "" - #: build/serializers.py:422 -msgid "Discard Allocations" -msgstr "" - -#: build/serializers.py:423 -msgid "Discard any stock allocations for scrapped outputs" -msgstr "" +msgid "Stock location for scrapped outputs" +msgstr "Emplacement du stock pour les sorties épuisées" #: build/serializers.py:428 +msgid "Discard Allocations" +msgstr "Ignorer les allocations" + +#: build/serializers.py:429 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "Abandonner les allocations de stock pour les sorties abandonnées" + +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "Emplacement des ordres de production achevés" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "État" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "Accepter l'allocation incomplète" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "Compléter les sorties si le stock n'a pas été entièrement alloué" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "Supprimer le stock alloué" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "Soustraire tout stock qui a déjà été alloué à cette construction" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "Retirer les sorties incomplètes" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "Supprimer toutes les sorties de construction qui n'ont pas été complétées" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" -msgstr "" +msgstr "Non permis" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "Accepter comme consommé par cet ordre de construction" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "Désaffecter avant de terminer cette commande de fabrication" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "Stock suralloué" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Comment voulez-vous gérer les articles en stock supplémentaires assignés à l'ordre de construction" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "Certains articles de stock ont été suralloués" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "Accepter les non-alloués" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Accepter les articles de stock qui n'ont pas été complètement alloués à cette ordre de production" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "Le stock requis n'a pas encore été totalement alloué" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "Accepter les incomplèts" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "Accepter que tous les ordres de production n'aient pas encore été achevés" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "La quantité nécessaire n'a pas encore été complétée" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "L'ordre de production a des sorties incomplètes" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "Article du BOM" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "Chaîne d'assemblage" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "Sortie d'assemblage" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "La sortie de la construction doit pointer vers la même construction" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part doit pointer sur la même pièce que l'ordre de construction" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "L'article doit être en stock" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantité disponible ({q}) dépassée" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "La sortie de construction doit être spécifiée pour l'allocation des pièces suivies" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "La sortie de la construction ne peut pas être spécifiée pour l'allocation des pièces non suivies" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "Cet article de stock a déjà été alloué à cette sortie de construction" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "Les articles d'allocation doivent être fournis" @@ -1515,106 +1613,107 @@ msgstr "Objets Optionnels" msgid "Allocate optional BOM items to build order" msgstr "Affecter des éléments de nomenclature facultatifs à l'ordre de fabrication" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "Stock requis pour la commande de construction" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "Ordre de commande en retard" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "L'ordre de commande {bo} est maintenant en retard" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" -msgstr "" +msgstr "Image miniature de l'article" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "Actions de code-barres" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "Afficher le QR Code" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "Délier le code-barre" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "Lier le code-barre" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "Actions d'impression" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "Imprimer le rapport d'ordre de construction" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "Modifier construction/ordre de construction" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Modifier l'assemblage" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Annuler l'assemblage" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "Dupliquer la construction" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "Supprimer l'assemblage" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "Compléter l'assemblage" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "Description de la construction" @@ -1639,18 +1738,18 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Le stock n'a pas été entièrement alloué à cet ordre de construction" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "Date Cible" @@ -1661,47 +1760,46 @@ msgstr "Cette construction était due le %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "En retard" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Terminé" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "Sorties de Construction terminées" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "Commandes" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Émis par" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "Priorité" @@ -1711,11 +1809,11 @@ msgstr "Supprimer l'ordre de construction" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "" +msgstr "Génération du QR Code de commande" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "" +msgstr "Lier le code-barres à l'ordre de fabrication" #: build/templates/build/detail.html:15 msgid "Build Details" @@ -1729,8 +1827,8 @@ msgstr "Stock d'origine" msgid "Stock can be taken from any available location." msgstr "Le stock peut être pris à partir de n'importe quel endroit disponible." -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "Destination" @@ -1742,23 +1840,23 @@ msgstr "Stockage de destination non défini" msgid "Allocated Parts" msgstr "Pièces allouées" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "Lot" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "Créé le" @@ -1766,147 +1864,106 @@ msgstr "Créé le" msgid "No target date set" msgstr "Pas de date cible définie" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Terminé" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "Compilation incomplète" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "Commandes de constructions filles" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "Allouer le stock à la construction" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" msgstr "Désallouer le stock" +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "Désallouer le Stock" + #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "Désallouer le stock" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "Affecter automatiquement le stock à construire" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "Allouer automatiquement" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "Allouer manuellement le stock à construire" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "Allouer le stock" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "Commander les pièces requises" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "Commander des pièces" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "Le stock non suivi a été entièrement alloué pour cet ordre de construction" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "Du stock non suivi n'a pas été entièrement alloué pour cet ordre de construction" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "Allouer les éléments sélectionnés" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "Cet ordre de construction n'a aucun objet de BOM non suivi associé" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "Sorties de construction incomplètes" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "Créer une nouvelle sortie de construction" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "Nouvelle sortie de construction" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "Actions de sortie" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "Compléter les sorties de construction sélectionnées" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "Sortie complète" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "Supprimer les sorties de construction sélectionnées" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "Supprimer les sorties" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" -msgstr "" +msgstr "Stock Consommé" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "Sorties de Construction terminées" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Pieces jointes" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "Notes de construction" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "Allocation terminée" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" -msgstr "Tous les articles de stock non suivis ont été alloués" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "Toutes les lignes ont été entièrement attribuées" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "Nouvel ordre de construction" @@ -1914,18 +1971,14 @@ msgstr "Nouvel ordre de construction" msgid "Build Order Details" msgstr "Détails de la commande de construction" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "Sorties incomplètes" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "Sorties de Construction terminées" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" -msgstr "" +msgstr "Type de fichier non pris en charge {fmt}" #: common/files.py:65 msgid "Error reading file (invalid encoding)" @@ -1960,1494 +2013,1543 @@ msgstr "{name.title()} Fichier" msgid "Select {name} file to upload" msgstr "Sélectionner le fichier {name} à uploader" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "Mise à jour" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Date de la dernière mise à jour" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" -msgstr "" +msgstr "Code projet unique" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" -msgstr "" +msgstr "Description du projet" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "Clé du paramètre (doit être unique - insensible à la casse)" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "Valeur du paramètre" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "La valeur choisie n'est pas une option valide" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "La valeur doit être une valeur booléenne" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "La valeur doit être un nombre entier" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "La chaîne de caractères constituant la clé doit être unique" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "Pas de groupe" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "Un domaine vide n'est pas autorisé." -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Nom de domaine invalide : {domain}" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "Redémarrage nécessaire" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "Un paramètre a été modifié, ce qui nécessite un redémarrage du serveur" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "Nom de l'instance du serveur" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "Chaîne de caractères descriptive pour l'instance serveur" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "Utiliser le nom de l'instance" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "Utiliser le nom de l’instance dans la barre de titre" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "Limiter l'affichage de `about`" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "Afficher la modale `about` uniquement aux super-utilisateurs" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Nom de la société" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "Nom de société interne" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "URL de base" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "URL de base pour l'instance serveur" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Devise par défaut" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" +msgstr "Sélectionnez la devise de base pour les calculs de prix" + +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "Télécharger depuis l'URL" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "Autoriser le téléchargement d'images distantes et de fichiers à partir d'URLs externes" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "Limite du volume de téléchargement" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "Taille maximale autorisée pour le téléchargement de l'image distante" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "Agent utilisateur utilisé pour télécharger depuis l'URL" - -#: common/models.py:999 -msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" -msgstr "Permettre de remplacer l'agent utilisateur utilisé pour télécharger des images et des fichiers à partir d'URL externe (laisser vide pour la valeur par défaut)" - -#: common/models.py:1004 -msgid "Require confirm" -msgstr "Confirmation requise" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "Exiger une confirmation explicite de l’utilisateur pour certaines actions." - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "Profondeur de l'arborescence" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "Profondeur de l'arborescence par défaut. Les niveaux plus profonds peuvent être chargés au fur et à mesure qu'ils sont nécessaires." - -#: common/models.py:1021 -msgid "Update Check Interval" +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 msgid "days" msgstr "jours" -#: common/models.py:1032 +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Télécharger depuis l'URL" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Autoriser le téléchargement d'images distantes et de fichiers à partir d'URLs externes" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "Limite du volume de téléchargement" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "Taille maximale autorisée pour le téléchargement de l'image distante" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "Agent utilisateur utilisé pour télécharger depuis l'URL" + +#: common/models.py:1164 +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "Permettre de remplacer l'agent utilisateur utilisé pour télécharger des images et des fichiers à partir d'URL externe (laisser vide pour la valeur par défaut)" + +#: common/models.py:1169 +msgid "Require confirm" +msgstr "Confirmation requise" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "Exiger une confirmation explicite de l’utilisateur pour certaines actions." + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "Profondeur de l'arborescence" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "Profondeur de l'arborescence par défaut. Les niveaux plus profonds peuvent être chargés au fur et à mesure qu'ils sont nécessaires." + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "Intervalle de vérification des mises à jour" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "À quelle fréquence vérifier les mises à jour (définir à zéro pour désactiver)" + +#: common/models.py:1197 msgid "Automatic Backup" msgstr "Backup automatique" -#: common/models.py:1033 +#: common/models.py:1198 msgid "Enable automatic backup of database and media files" msgstr "Activer le backup automatique de la base de données et des fichiers médias" -#: common/models.py:1039 +#: common/models.py:1204 msgid "Auto Backup Interval" -msgstr "" +msgstr "Intervalle de sauvegarde automatique" -#: common/models.py:1040 +#: common/models.py:1205 msgid "Specify number of days between automated backup events" msgstr "Spécifiez le nombre de jours entre les sauvegardes automatique" -#: common/models.py:1050 +#: common/models.py:1215 msgid "Task Deletion Interval" -msgstr "" +msgstr "Intervalle de suppression des tâches" -#: common/models.py:1051 +#: common/models.py:1216 msgid "Background task results will be deleted after specified number of days" msgstr "Les résultats de la tâche en arrière-plan seront supprimés après le nombre de jours spécifié" -#: common/models.py:1061 +#: common/models.py:1226 msgid "Error Log Deletion Interval" -msgstr "" +msgstr "Intervalle de suppression du journal d'erreur" -#: common/models.py:1062 +#: common/models.py:1227 msgid "Error logs will be deleted after specified number of days" msgstr "Les logs d'erreur seront supprimés après le nombre de jours spécifié" -#: common/models.py:1072 +#: common/models.py:1237 msgid "Notification Deletion Interval" -msgstr "" +msgstr "Intervalle de suppression du journal de notification" -#: common/models.py:1073 +#: common/models.py:1238 msgid "User notifications will be deleted after specified number of days" msgstr "Les notifications de l'utilisateur seront supprimées après le nombre de jours spécifié" -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Support des code-barres" -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "Activer le support du scanner de code-barres" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" -#: common/models.py:1090 +#: common/models.py:1255 msgid "Barcode Input Delay" msgstr "Délai d'entrée du code-barres" -#: common/models.py:1091 +#: common/models.py:1256 msgid "Barcode input processing delay time" msgstr "Délai de traitement du code-barres" -#: common/models.py:1101 +#: common/models.py:1266 msgid "Barcode Webcam Support" msgstr "Prise en charge de la webcam code-barres" -#: common/models.py:1102 +#: common/models.py:1267 msgid "Allow barcode scanning via webcam in browser" msgstr "Autoriser la numérisation de codes-barres via la webcam dans le navigateur" -#: common/models.py:1108 +#: common/models.py:1273 msgid "Part Revisions" -msgstr "" +msgstr "Modifications de la pièce" -#: common/models.py:1109 +#: common/models.py:1274 msgid "Enable revision field for Part" -msgstr "" +msgstr "Activer le champ de modification de la pièce" -#: common/models.py:1115 +#: common/models.py:1280 msgid "IPN Regex" msgstr "Regex IPN" -#: common/models.py:1116 +#: common/models.py:1281 msgid "Regular expression pattern for matching Part IPN" msgstr "Expression régulière pour la correspondance avec l'IPN de la Pièce" -#: common/models.py:1120 +#: common/models.py:1285 msgid "Allow Duplicate IPN" msgstr "Autoriser les IPN dupliqués" -#: common/models.py:1121 +#: common/models.py:1286 msgid "Allow multiple parts to share the same IPN" msgstr "Permettre à plusieurs pièces de partager le même IPN" -#: common/models.py:1127 +#: common/models.py:1292 msgid "Allow Editing IPN" msgstr "Autoriser l'édition de l'IPN" -#: common/models.py:1128 +#: common/models.py:1293 msgid "Allow changing the IPN value while editing a part" msgstr "Permettre de modifier la valeur de l'IPN lors de l'édition d'une pièce" -#: common/models.py:1134 +#: common/models.py:1299 msgid "Copy Part BOM Data" msgstr "Copier les données de la pièce" -#: common/models.py:1135 +#: common/models.py:1300 msgid "Copy BOM data by default when duplicating a part" msgstr "Copier les données des paramètres par défaut lors de la duplication d'une pièce" -#: common/models.py:1141 +#: common/models.py:1306 msgid "Copy Part Parameter Data" msgstr "Copier les données des paramètres de la pièce" -#: common/models.py:1142 +#: common/models.py:1307 msgid "Copy parameter data by default when duplicating a part" msgstr "Copier les données des paramètres par défaut lors de la duplication d'une pièce" -#: common/models.py:1148 +#: common/models.py:1313 msgid "Copy Part Test Data" msgstr "Copier les données de test de la pièce" -#: common/models.py:1149 +#: common/models.py:1314 msgid "Copy test data by default when duplicating a part" msgstr "Copier les données de test par défaut lors de la duplication d'une pièce" -#: common/models.py:1155 +#: common/models.py:1320 msgid "Copy Category Parameter Templates" msgstr "Copier les templates de paramètres de catégorie" -#: common/models.py:1156 +#: common/models.py:1321 msgid "Copy category parameter templates when creating a part" msgstr "Copier les templates de paramètres de la catégorie lors de la création d'une pièce" -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Modèle" -#: common/models.py:1163 +#: common/models.py:1328 msgid "Parts are templates by default" msgstr "Les pièces sont des templates par défaut" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Assemblage" -#: common/models.py:1170 +#: common/models.py:1335 msgid "Parts can be assembled from other components by default" -msgstr "Les composantes peuvent être assemblées à partir d'autres composants par défaut" +msgstr "Les pièces peuvent être assemblées à partir d'autres composants par défaut" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Composant" -#: common/models.py:1177 +#: common/models.py:1342 msgid "Parts can be used as sub-components by default" -msgstr "Les composantes peuvent être utilisées comme sous-composants par défaut" +msgstr "Les pièces peuvent être utilisées comme sous-composants par défaut" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 +#: common/models.py:1348 part/admin.py:53 part/models.py:981 msgid "Purchaseable" msgstr "Achetable" -#: common/models.py:1184 +#: common/models.py:1349 msgid "Parts are purchaseable by default" msgstr "Les pièces sont achetables par défaut" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Vendable" -#: common/models.py:1191 +#: common/models.py:1356 msgid "Parts are salable by default" msgstr "Les pièces sont vendables par défaut" -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Traçable" -#: common/models.py:1198 +#: common/models.py:1363 msgid "Parts are trackable by default" msgstr "Les pièces sont traçables par défaut" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtuelle" -#: common/models.py:1205 +#: common/models.py:1370 msgid "Parts are virtual by default" msgstr "Les pièces sont virtuelles par défaut" -#: common/models.py:1211 +#: common/models.py:1376 msgid "Show Import in Views" msgstr "Afficher l'import dans les vues" -#: common/models.py:1212 +#: common/models.py:1377 msgid "Display the import wizard in some part views" msgstr "Afficher l'assistant d'importation pour certaine vues de produits" -#: common/models.py:1218 +#: common/models.py:1383 msgid "Show related parts" msgstr "Afficher les pièces connexes" -#: common/models.py:1219 +#: common/models.py:1384 msgid "Display related parts for a part" msgstr "Afficher les pièces connexes à une pièce" -#: common/models.py:1225 +#: common/models.py:1390 msgid "Initial Stock Data" msgstr "Stock initial" -#: common/models.py:1226 +#: common/models.py:1391 msgid "Allow creation of initial stock when adding a new part" msgstr "Permettre la création d'un stock initial lors de l'ajout d'une nouvelle pièce" -#: common/models.py:1232 templates/js/translated/part.js:108 +#: common/models.py:1397 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Données initiales du fournisseur" -#: common/models.py:1233 +#: common/models.py:1398 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Permettre la création des données initiales du fournisseur lors de l'ajout d'une nouvelle pièce" -#: common/models.py:1239 +#: common/models.py:1404 msgid "Part Name Display Format" msgstr "Format d'affichage du nom de la pièce" -#: common/models.py:1240 +#: common/models.py:1405 msgid "Format to display the part name" msgstr "Format pour afficher le nom de la pièce" -#: common/models.py:1247 +#: common/models.py:1412 msgid "Part Category Default Icon" msgstr "Icône de catégorie par défaut" -#: common/models.py:1248 +#: common/models.py:1413 msgid "Part category default icon (empty means no icon)" msgstr "Icône par défaut de la catégorie de la pièce (vide signifie aucune icône)" -#: common/models.py:1253 +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1425 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1254 +#: common/models.py:1426 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1264 +#: common/models.py:1436 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1265 +#: common/models.py:1437 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1275 +#: common/models.py:1447 msgid "Use Supplier Pricing" msgstr "Utiliser le prix fournisseur" -#: common/models.py:1276 +#: common/models.py:1448 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Inclure les réductions de prix dans le calcul du prix global" -#: common/models.py:1282 +#: common/models.py:1454 msgid "Purchase History Override" msgstr "Remplacer l'historique des achats" -#: common/models.py:1283 +#: common/models.py:1455 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "La tarification historique des bons de commande remplace les réductions de prix des fournisseurs" -#: common/models.py:1289 +#: common/models.py:1461 msgid "Use Stock Item Pricing" msgstr "Utiliser les prix des articles en stock" -#: common/models.py:1290 +#: common/models.py:1462 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Utiliser les prix des données de stock saisies manuellement pour calculer les prix" -#: common/models.py:1296 +#: common/models.py:1468 msgid "Stock Item Pricing Age" msgstr "Âge de tarification des articles de stock" -#: common/models.py:1297 +#: common/models.py:1469 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Exclure les articles en stock datant de plus de ce nombre de jours des calculs de prix" -#: common/models.py:1307 +#: common/models.py:1479 msgid "Use Variant Pricing" msgstr "Utiliser les prix variants" -#: common/models.py:1308 +#: common/models.py:1480 msgid "Include variant pricing in overall pricing calculations" msgstr "Inclure la tarification variante dans le calcul global des prix" -#: common/models.py:1314 +#: common/models.py:1486 msgid "Active Variants Only" msgstr "Variantes actives uniquement" -#: common/models.py:1315 +#: common/models.py:1487 msgid "Only use active variant parts for calculating variant pricing" msgstr "N'utiliser que des pièces de variante actives pour calculer le prix de la variante" -#: common/models.py:1321 +#: common/models.py:1493 msgid "Pricing Rebuild Interval" -msgstr "" +msgstr "Intervalle de regénération des prix" -#: common/models.py:1322 +#: common/models.py:1494 msgid "Number of days before part pricing is automatically updated" msgstr "Nombre de jours avant la mise à jour automatique du prix de la pièce" -#: common/models.py:1332 +#: common/models.py:1504 msgid "Internal Prices" msgstr "Prix internes" -#: common/models.py:1333 +#: common/models.py:1505 msgid "Enable internal prices for parts" msgstr "Activer les prix internes pour les pièces" -#: common/models.py:1339 +#: common/models.py:1511 msgid "Internal Price Override" msgstr "Substitution du prix interne" -#: common/models.py:1340 +#: common/models.py:1512 msgid "If available, internal prices override price range calculations" msgstr "Si disponible, les prix internes remplacent les calculs de la fourchette de prix" -#: common/models.py:1346 +#: common/models.py:1518 msgid "Enable label printing" msgstr "Activer l'impression d'étiquettes" -#: common/models.py:1347 +#: common/models.py:1519 msgid "Enable label printing from the web interface" msgstr "Activer l'impression d'étiquettes depuis l'interface Web" -#: common/models.py:1353 +#: common/models.py:1525 msgid "Label Image DPI" msgstr "Étiquette image DPI" -#: common/models.py:1354 +#: common/models.py:1526 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "Résolution DPI lors de la génération de fichiers image pour fournir aux plugins d'impression d'étiquettes" -#: common/models.py:1363 +#: common/models.py:1535 msgid "Enable Reports" msgstr "Activer les rapports" -#: common/models.py:1364 +#: common/models.py:1536 msgid "Enable generation of reports" msgstr "Activer la génération de rapports" -#: common/models.py:1370 templates/stats.html:25 +#: common/models.py:1542 templates/stats.html:25 msgid "Debug Mode" msgstr "Mode Débogage" -#: common/models.py:1371 +#: common/models.py:1543 msgid "Generate reports in debug mode (HTML output)" msgstr "Générer des rapports en mode debug (sortie HTML)" -#: common/models.py:1377 +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 msgid "Page Size" msgstr "Taille de la page" -#: common/models.py:1378 +#: common/models.py:1550 msgid "Default page size for PDF reports" msgstr "Taille de page par défaut pour les rapports PDF" -#: common/models.py:1388 +#: common/models.py:1556 msgid "Enable Test Reports" msgstr "Activer les rapports de test" -#: common/models.py:1389 +#: common/models.py:1557 msgid "Enable generation of test reports" msgstr "Activer la génération de rapports de test" -#: common/models.py:1395 +#: common/models.py:1563 msgid "Attach Test Reports" msgstr "Joindre des rapports de test" -#: common/models.py:1396 +#: common/models.py:1564 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Lors de l'impression d'un rapport de test, joignez une copie du rapport de test à l'article en stock associé" -#: common/models.py:1402 +#: common/models.py:1570 msgid "Globally Unique Serials" msgstr "Numéro de Série Universellement Unique" -#: common/models.py:1403 +#: common/models.py:1571 msgid "Serial numbers for stock items must be globally unique" msgstr "Les numéros de série pour les articles en stock doivent être uniques au niveau global" -#: common/models.py:1409 +#: common/models.py:1577 msgid "Autofill Serial Numbers" msgstr "Remplir automatiquement les Numéros de Série" -#: common/models.py:1410 +#: common/models.py:1578 msgid "Autofill serial numbers in forms" msgstr "Remplir automatiquement les numéros de série dans les formulaires" -#: common/models.py:1416 +#: common/models.py:1584 msgid "Delete Depleted Stock" msgstr "Supprimer le stock épuisé" -#: common/models.py:1417 +#: common/models.py:1585 msgid "Determines default behaviour when a stock item is depleted" msgstr "Détermine le comportement par défaut lorsqu'un article de stock est épuisé" -#: common/models.py:1423 +#: common/models.py:1591 msgid "Batch Code Template" msgstr "Modèle de code de lot" -#: common/models.py:1424 +#: common/models.py:1592 msgid "Template for generating default batch codes for stock items" msgstr "Modèle pour générer des codes par défaut pour les articles en stock" -#: common/models.py:1429 +#: common/models.py:1597 msgid "Stock Expiry" msgstr "Expiration du stock" -#: common/models.py:1430 +#: common/models.py:1598 msgid "Enable stock expiry functionality" msgstr "Activer la fonctionnalité d'expiration du stock" -#: common/models.py:1436 +#: common/models.py:1604 msgid "Sell Expired Stock" msgstr "Vendre le stock expiré" -#: common/models.py:1437 +#: common/models.py:1605 msgid "Allow sale of expired stock" msgstr "Autoriser la vente de stock expiré" -#: common/models.py:1443 +#: common/models.py:1611 msgid "Stock Stale Time" msgstr "Délai de péremption du stock" -#: common/models.py:1444 +#: common/models.py:1612 msgid "Number of days stock items are considered stale before expiring" msgstr "Nombre de jours pendant lesquels les articles en stock sont considérés comme périmés avant d'expirer" -#: common/models.py:1451 +#: common/models.py:1619 msgid "Build Expired Stock" msgstr "Construction de stock expirée" -#: common/models.py:1452 +#: common/models.py:1620 msgid "Allow building with expired stock" msgstr "Autoriser la construction avec un stock expiré" -#: common/models.py:1458 +#: common/models.py:1626 msgid "Stock Ownership Control" msgstr "Contrôle de la propriété des stocks" -#: common/models.py:1459 +#: common/models.py:1627 msgid "Enable ownership control over stock locations and items" msgstr "Activer le contrôle de la propriété sur les emplacements de stock et les articles" -#: common/models.py:1465 +#: common/models.py:1633 msgid "Stock Location Default Icon" msgstr "Icône par défaut de l'emplacement du stock" -#: common/models.py:1466 +#: common/models.py:1634 msgid "Stock location default icon (empty means no icon)" msgstr "Icône par défaut de l'emplacement du stock (vide signifie aucune icône)" -#: common/models.py:1471 +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "Afficher les pièces en stock installées" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1646 msgid "Build Order Reference Pattern" msgstr "Modèle de référence de commande de construction" -#: common/models.py:1472 +#: common/models.py:1647 msgid "Required pattern for generating Build Order reference field" msgstr "Modèle requis pour générer le champ de référence de l'ordre de construction" -#: common/models.py:1478 +#: common/models.py:1653 msgid "Enable Return Orders" -msgstr "" +msgstr "Activer les retours de commandes" -#: common/models.py:1479 +#: common/models.py:1654 msgid "Enable return order functionality in the user interface" -msgstr "" +msgstr "Activer la fonctionnalité de retour de commande dans l'interface utilisateur" -#: common/models.py:1485 +#: common/models.py:1660 msgid "Return Order Reference Pattern" -msgstr "" +msgstr "Modèle de référence de retour de commande" -#: common/models.py:1486 +#: common/models.py:1661 msgid "Required pattern for generating Return Order reference field" -msgstr "" +msgstr "Modèle requis pour générer le champ de référence du retour de commande" -#: common/models.py:1492 +#: common/models.py:1667 msgid "Edit Completed Return Orders" -msgstr "" +msgstr "Modifier les retours de commandes terminées" -#: common/models.py:1493 +#: common/models.py:1668 msgid "Allow editing of return orders after they have been completed" -msgstr "" +msgstr "Autoriser la modification des retours après leur enregistrement" -#: common/models.py:1499 +#: common/models.py:1674 msgid "Sales Order Reference Pattern" msgstr "Modèle de référence de bon de commande" -#: common/models.py:1500 +#: common/models.py:1675 msgid "Required pattern for generating Sales Order reference field" msgstr "Modèle requis pour générer le champ de référence du bon de commande" -#: common/models.py:1506 +#: common/models.py:1681 msgid "Sales Order Default Shipment" msgstr "Expédition par défaut du bon de commande" -#: common/models.py:1507 +#: common/models.py:1682 msgid "Enable creation of default shipment with sales orders" msgstr "Activer la création d'expédition par défaut avec les bons de commandes" -#: common/models.py:1513 +#: common/models.py:1688 msgid "Edit Completed Sales Orders" msgstr "Modifier les commandes de vente terminées" -#: common/models.py:1514 +#: common/models.py:1689 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Autoriser la modification des commandes de vente après avoir été expédiées ou complétées" -#: common/models.py:1520 +#: common/models.py:1695 msgid "Purchase Order Reference Pattern" msgstr "Modèle de référence de commande d'achat" -#: common/models.py:1521 +#: common/models.py:1696 msgid "Required pattern for generating Purchase Order reference field" msgstr "Modèle requis pour générer le champ de référence de bon de commande" -#: common/models.py:1527 +#: common/models.py:1702 msgid "Edit Completed Purchase Orders" msgstr "Modifier les bons de commande terminés" -#: common/models.py:1528 +#: common/models.py:1703 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Autoriser la modification des bons de commande après avoir été expédiés ou complétés" -#: common/models.py:1535 +#: common/models.py:1710 msgid "Enable password forgot" msgstr "Activer les mots de passe oubliés" -#: common/models.py:1536 +#: common/models.py:1711 msgid "Enable password forgot function on the login pages" msgstr "Activer la fonction \"Mot de passe oublié\" sur les pages de connexion" -#: common/models.py:1542 +#: common/models.py:1717 msgid "Enable registration" msgstr "Activer les inscriptions" -#: common/models.py:1543 +#: common/models.py:1718 msgid "Enable self-registration for users on the login pages" msgstr "Activer l'auto-inscription pour les utilisateurs sur les pages de connexion" -#: common/models.py:1549 +#: common/models.py:1724 msgid "Enable SSO" msgstr "Activer le SSO" -#: common/models.py:1550 +#: common/models.py:1725 msgid "Enable SSO on the login pages" msgstr "Activer le SSO sur les pages de connexion" -#: common/models.py:1556 +#: common/models.py:1731 msgid "Enable SSO registration" msgstr "Activer l'inscription SSO" -#: common/models.py:1557 +#: common/models.py:1732 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Activer l'auto-inscription via SSO pour les utilisateurs sur les pages de connexion" -#: common/models.py:1563 +#: common/models.py:1738 msgid "Email required" msgstr "Email requis" -#: common/models.py:1564 +#: common/models.py:1739 msgid "Require user to supply mail on signup" msgstr "Exiger que l'utilisateur fournisse un mail lors de l'inscription" -#: common/models.py:1570 +#: common/models.py:1745 msgid "Auto-fill SSO users" msgstr "Saisie automatique des utilisateurs SSO" -#: common/models.py:1571 +#: common/models.py:1746 msgid "Automatically fill out user-details from SSO account-data" msgstr "Remplir automatiquement les détails de l'utilisateur à partir des données de compte SSO" -#: common/models.py:1577 +#: common/models.py:1752 msgid "Mail twice" msgstr "Courriel en double" -#: common/models.py:1578 +#: common/models.py:1753 msgid "On signup ask users twice for their mail" msgstr "Lors de l'inscription, demandez deux fois aux utilisateurs leur mail" -#: common/models.py:1584 +#: common/models.py:1759 msgid "Password twice" msgstr "Mot de passe deux fois" -#: common/models.py:1585 +#: common/models.py:1760 msgid "On signup ask users twice for their password" msgstr "Lors de l'inscription, demandez deux fois aux utilisateurs leur mot de passe" -#: common/models.py:1591 +#: common/models.py:1766 msgid "Allowed domains" msgstr "Domaines autorisés" -#: common/models.py:1592 +#: common/models.py:1767 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1598 +#: common/models.py:1773 msgid "Group on signup" msgstr "Grouper sur inscription" -#: common/models.py:1599 +#: common/models.py:1774 msgid "Group to which new users are assigned on registration" msgstr "Groupe auquel les nouveaux utilisateurs sont assignés lors de l'inscription" -#: common/models.py:1605 +#: common/models.py:1780 msgid "Enforce MFA" msgstr "Forcer l'authentification multifacteurs" -#: common/models.py:1606 +#: common/models.py:1781 msgid "Users must use multifactor security." msgstr "Les utilisateurs doivent utiliser l'authentification multifacteurs." -#: common/models.py:1612 +#: common/models.py:1787 msgid "Check plugins on startup" msgstr "Vérifier les plugins au démarrage" -#: common/models.py:1613 +#: common/models.py:1788 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Vérifier que tous les plugins sont installés au démarrage - activer dans les environnements conteneurs" -#: common/models.py:1620 -msgid "Check plugin signatures" -msgstr "Vérifier les signatures du plugin" - -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "Vérifier et afficher les signatures des plugins" - -#: common/models.py:1628 +#: common/models.py:1796 msgid "Enable URL integration" msgstr "Activer l'intégration d'URL" -#: common/models.py:1629 +#: common/models.py:1797 msgid "Enable plugins to add URL routes" msgstr "Autoriser les plugins à ajouter des chemins URL" -#: common/models.py:1636 +#: common/models.py:1804 msgid "Enable navigation integration" msgstr "Activer l'intégration de navigation" -#: common/models.py:1637 +#: common/models.py:1805 msgid "Enable plugins to integrate into navigation" msgstr "Activer les plugins à s'intégrer dans la navigation" -#: common/models.py:1644 +#: common/models.py:1812 msgid "Enable app integration" msgstr "Activer l'intégration de plugins" -#: common/models.py:1645 +#: common/models.py:1813 msgid "Enable plugins to add apps" msgstr "Activer l'intégration de plugin pour ajouter des apps" -#: common/models.py:1652 +#: common/models.py:1820 msgid "Enable schedule integration" msgstr "Activer l'intégration du planning" -#: common/models.py:1653 +#: common/models.py:1821 msgid "Enable plugins to run scheduled tasks" msgstr "Autoriser les plugins à éxécuter des tâches planifiées" -#: common/models.py:1660 +#: common/models.py:1828 msgid "Enable event integration" msgstr "Activer l'intégration des évènements" -#: common/models.py:1661 +#: common/models.py:1829 msgid "Enable plugins to respond to internal events" msgstr "Autoriser les plugins à répondre aux évènements internes" -#: common/models.py:1668 +#: common/models.py:1836 msgid "Enable project codes" -msgstr "" +msgstr "Activer les codes projet" -#: common/models.py:1669 +#: common/models.py:1837 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1675 +#: common/models.py:1843 msgid "Stocktake Functionality" msgstr "Fonctionnalité d'inventaire" -#: common/models.py:1676 +#: common/models.py:1844 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Activer la fonctionnalité d'inventaire pour enregistrer les niveaux de stock et le calcul de la valeur du stock" -#: common/models.py:1682 +#: common/models.py:1850 +msgid "Exclude External Locations" +msgstr "" + +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "" + +#: common/models.py:1857 msgid "Automatic Stocktake Period" msgstr "Période de l'inventaire automatique" -#: common/models.py:1683 +#: common/models.py:1858 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Nombre de jours entre l'enregistrement automatique des stocks (définir à zéro pour désactiver)" -#: common/models.py:1692 +#: common/models.py:1867 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1693 +#: common/models.py:1868 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Les rapports d'inventaire seront supprimés après le nombre de jours spécifié" -#: common/models.py:1710 common/models.py:2147 +#: common/models.py:1885 common/models.py:2314 msgid "Settings key (must be unique - case insensitive" msgstr "Clé du paramètre (doit être unique - insensible à la casse)" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" -msgstr "Pas d'imprimante (Exporter vers PDF)" - -#: common/models.py:1751 +#: common/models.py:1925 msgid "Hide inactive parts" msgstr "" -#: common/models.py:1752 +#: common/models.py:1926 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1758 +#: common/models.py:1932 msgid "Show subscribed parts" msgstr "Afficher les composants suivis" -#: common/models.py:1759 +#: common/models.py:1933 msgid "Show subscribed parts on the homepage" msgstr "Afficher les composants suivis sur l'écran d'accueil" -#: common/models.py:1765 +#: common/models.py:1939 msgid "Show subscribed categories" msgstr "Afficher les catégories suivies" -#: common/models.py:1766 +#: common/models.py:1940 msgid "Show subscribed part categories on the homepage" msgstr "Afficher les catégories de pièces suivies sur la page d'accueil" -#: common/models.py:1772 +#: common/models.py:1946 msgid "Show latest parts" msgstr "Afficher les dernières pièces" -#: common/models.py:1773 +#: common/models.py:1947 msgid "Show latest parts on the homepage" msgstr "Afficher les derniers composants sur la page d'accueil" -#: common/models.py:1779 -msgid "Recent Part Count" -msgstr "Nombre de composants récents" - -#: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "Nombre de pièces récentes à afficher sur la page d'index" - -#: common/models.py:1786 +#: common/models.py:1953 msgid "Show unvalidated BOMs" msgstr "Afficher les listes de matériaux non validées" -#: common/models.py:1787 +#: common/models.py:1954 msgid "Show BOMs that await validation on the homepage" msgstr "Afficher les listes de matériaux en attente de validation sur la page d'accueil" -#: common/models.py:1793 +#: common/models.py:1960 msgid "Show recent stock changes" msgstr "Afficher les dernières modifications du stock" -#: common/models.py:1794 +#: common/models.py:1961 msgid "Show recently changed stock items on the homepage" msgstr "Afficher les articles de stock récemment modifiés sur la page d'accueil" -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "Compte de stock récent" - -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "Nombre d'éléments de stock récents à afficher sur la page d'index" - -#: common/models.py:1807 +#: common/models.py:1967 msgid "Show low stock" msgstr "Afficher le stock faible" -#: common/models.py:1808 +#: common/models.py:1968 msgid "Show low stock items on the homepage" msgstr "Afficher les articles en stock bas sur la page d'accueil" -#: common/models.py:1814 +#: common/models.py:1974 msgid "Show depleted stock" msgstr "Afficher le stock épuisé" -#: common/models.py:1815 +#: common/models.py:1975 msgid "Show depleted stock items on the homepage" msgstr "Afficher les stocks épuisés sur la page d'accueil" -#: common/models.py:1821 +#: common/models.py:1981 msgid "Show needed stock" msgstr "Afficher le stock nécessaire" -#: common/models.py:1822 +#: common/models.py:1982 msgid "Show stock items needed for builds on the homepage" msgstr "Afficher les pièces en stock nécessaires pour les assemblages sur la page d'accueil" -#: common/models.py:1828 +#: common/models.py:1988 msgid "Show expired stock" msgstr "Afficher le stock expiré" -#: common/models.py:1829 +#: common/models.py:1989 msgid "Show expired stock items on the homepage" msgstr "Afficher les pièces en stock expirées sur la page d'accueil" -#: common/models.py:1835 +#: common/models.py:1995 msgid "Show stale stock" msgstr "Afficher le stock périmé" -#: common/models.py:1836 +#: common/models.py:1996 msgid "Show stale stock items on the homepage" msgstr "Afficher les articles de stock périmés sur la page d'accueil" -#: common/models.py:1842 +#: common/models.py:2002 msgid "Show pending builds" msgstr "Afficher les constructions en attente" -#: common/models.py:1843 +#: common/models.py:2003 msgid "Show pending builds on the homepage" msgstr "Afficher les constructions en attente sur la page d'accueil" -#: common/models.py:1849 +#: common/models.py:2009 msgid "Show overdue builds" msgstr "Afficher les constructions en retard" -#: common/models.py:1850 +#: common/models.py:2010 msgid "Show overdue builds on the homepage" msgstr "Afficher les constructions en retard sur la page d'accueil" -#: common/models.py:1856 +#: common/models.py:2016 msgid "Show outstanding POs" msgstr "Afficher les commandes en suspens" -#: common/models.py:1857 +#: common/models.py:2017 msgid "Show outstanding POs on the homepage" msgstr "Afficher les commandes en suspens sur la page d'accueil" -#: common/models.py:1863 +#: common/models.py:2023 msgid "Show overdue POs" msgstr "Afficher les commandes en retard" -#: common/models.py:1864 +#: common/models.py:2024 msgid "Show overdue POs on the homepage" msgstr "Afficher les commandes en retard sur la page d'accueil" -#: common/models.py:1870 +#: common/models.py:2030 msgid "Show outstanding SOs" msgstr "Afficher les envois en suspens" -#: common/models.py:1871 +#: common/models.py:2031 msgid "Show outstanding SOs on the homepage" msgstr "Afficher les envois en suspens sur la page d'accueil" -#: common/models.py:1877 +#: common/models.py:2037 msgid "Show overdue SOs" msgstr "Afficher les envois en retard" -#: common/models.py:1878 +#: common/models.py:2038 msgid "Show overdue SOs on the homepage" msgstr "Afficher les envois en retard sur la page d'accueil" -#: common/models.py:1884 +#: common/models.py:2044 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:1885 +#: common/models.py:2045 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:1891 +#: common/models.py:2051 msgid "Show News" msgstr "Afficher les nouvelles" -#: common/models.py:1892 +#: common/models.py:2052 msgid "Show news on the homepage" msgstr "Afficher les nouvelles sur la page d'accueil" -#: common/models.py:1898 +#: common/models.py:2058 msgid "Inline label display" msgstr "Affichage du libellé en ligne" -#: common/models.py:1899 +#: common/models.py:2059 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Afficher les étiquettes PDF dans le navigateur, au lieu de les télécharger en tant que fichier" -#: common/models.py:1905 +#: common/models.py:2065 msgid "Default label printer" msgstr "Imprimante d'étiquettes par défaut" -#: common/models.py:1906 +#: common/models.py:2066 msgid "Configure which label printer should be selected by default" msgstr "Configurer quelle imprimante d'étiquette doit être sélectionnée par défaut" -#: common/models.py:1912 +#: common/models.py:2072 msgid "Inline report display" msgstr "Affichage du rapport en ligne" -#: common/models.py:1913 +#: common/models.py:2073 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Afficher les rapports PDF dans le navigateur, au lieu de les télécharger en tant que fichier" -#: common/models.py:1919 +#: common/models.py:2079 msgid "Search Parts" msgstr "Rechercher de pièces" -#: common/models.py:1920 +#: common/models.py:2080 msgid "Display parts in search preview window" msgstr "Afficher les pièces dans la fenêtre d'aperçu de la recherche" -#: common/models.py:1926 +#: common/models.py:2086 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:1927 +#: common/models.py:2087 msgid "Display supplier parts in search preview window" msgstr "Afficher les pièces du fournisseur dans la fenêtre de prévisualisation de la recherche" -#: common/models.py:1933 +#: common/models.py:2093 msgid "Search Manufacturer Parts" msgstr "Rechercher les pièces du fabricant" -#: common/models.py:1934 +#: common/models.py:2094 msgid "Display manufacturer parts in search preview window" msgstr "Afficher les pièces du fabricant dans la fenêtre de prévisualisation de recherche" -#: common/models.py:1940 +#: common/models.py:2100 msgid "Hide Inactive Parts" msgstr "Masquer les pièces inactives" -#: common/models.py:1941 +#: common/models.py:2101 msgid "Excluded inactive parts from search preview window" msgstr "Exclure les pièces inactives de la fenêtre de prévisualisation de recherche" -#: common/models.py:1947 +#: common/models.py:2107 msgid "Search Categories" msgstr "Rechercher des catégories" -#: common/models.py:1948 +#: common/models.py:2108 msgid "Display part categories in search preview window" msgstr "Afficher les catégories de pièces dans la fenêtre de prévisualisation de recherche" -#: common/models.py:1954 +#: common/models.py:2114 msgid "Search Stock" msgstr "Rechercher dans le stock" -#: common/models.py:1955 +#: common/models.py:2115 msgid "Display stock items in search preview window" msgstr "Afficher les pièces en stock dans la fenêtre d'aperçu de la recherche" -#: common/models.py:1961 +#: common/models.py:2121 msgid "Hide Unavailable Stock Items" msgstr "Cacher les pièces indisponibles" -#: common/models.py:1962 +#: common/models.py:2122 msgid "Exclude stock items which are not available from the search preview window" msgstr "Exclure les articles en stock qui ne sont pas disponibles de la fenêtre de prévisualisation de recherche" -#: common/models.py:1968 +#: common/models.py:2128 msgid "Search Locations" msgstr "Chercher des Emplacements" -#: common/models.py:1969 +#: common/models.py:2129 msgid "Display stock locations in search preview window" msgstr "Afficher les emplacements dans la fenêtre d'aperçu de la recherche" -#: common/models.py:1975 +#: common/models.py:2135 msgid "Search Companies" msgstr "Rechercher les entreprises" -#: common/models.py:1976 +#: common/models.py:2136 msgid "Display companies in search preview window" msgstr "Afficher les entreprises dans la fenêtre de prévisualisation de recherche" -#: common/models.py:1982 +#: common/models.py:2142 msgid "Search Build Orders" msgstr "Rechercher les commandes de construction" -#: common/models.py:1983 +#: common/models.py:2143 msgid "Display build orders in search preview window" msgstr "Afficher les commandes de construction dans la fenêtre de prévisualisation de recherche" -#: common/models.py:1989 +#: common/models.py:2149 msgid "Search Purchase Orders" msgstr "Rechercher des bons de commande" -#: common/models.py:1990 +#: common/models.py:2150 msgid "Display purchase orders in search preview window" msgstr "Afficher les bons de commande dans la fenêtre de prévisualisation de recherche" -#: common/models.py:1996 +#: common/models.py:2156 msgid "Exclude Inactive Purchase Orders" msgstr "Exclure les bons de commande inactifs" -#: common/models.py:1997 +#: common/models.py:2157 msgid "Exclude inactive purchase orders from search preview window" msgstr "Exclure les commandes d’achat inactives de la fenêtre de prévisualisation de recherche" -#: common/models.py:2003 +#: common/models.py:2163 msgid "Search Sales Orders" msgstr "Rechercher les bons de commande" -#: common/models.py:2004 +#: common/models.py:2164 msgid "Display sales orders in search preview window" msgstr "Afficher les bons de commande dans la fenêtre de prévisualisation de la recherche" -#: common/models.py:2010 +#: common/models.py:2170 msgid "Exclude Inactive Sales Orders" msgstr "Exclure les bons de commande inactives" -#: common/models.py:2011 +#: common/models.py:2171 msgid "Exclude inactive sales orders from search preview window" msgstr "Exclure les bons de commande inactifs de la fenêtre de prévisualisation de recherche" -#: common/models.py:2017 +#: common/models.py:2177 msgid "Search Return Orders" -msgstr "" +msgstr "Rechercher les commandes retournées" -#: common/models.py:2018 +#: common/models.py:2178 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2024 +#: common/models.py:2184 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2025 +#: common/models.py:2185 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2031 +#: common/models.py:2191 msgid "Search Preview Results" msgstr "Résultats de l'aperçu de la recherche" -#: common/models.py:2032 +#: common/models.py:2192 msgid "Number of results to show in each section of the search preview window" msgstr "Nombre de résultats à afficher dans chaque section de la fenêtre de prévisualisation de recherche" -#: common/models.py:2038 +#: common/models.py:2198 msgid "Regex Search" msgstr "Recherche Regex" -#: common/models.py:2039 +#: common/models.py:2199 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2045 +#: common/models.py:2205 msgid "Whole Word Search" msgstr "" -#: common/models.py:2046 +#: common/models.py:2206 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2052 +#: common/models.py:2212 msgid "Show Quantity in Forms" msgstr "Afficher la quantité dans les formulaires" -#: common/models.py:2053 +#: common/models.py:2213 msgid "Display available part quantity in some forms" msgstr "Afficher la quantité disponible dans certains formulaires" -#: common/models.py:2059 +#: common/models.py:2219 msgid "Escape Key Closes Forms" msgstr "La touche Echap ferme les formulaires" -#: common/models.py:2060 +#: common/models.py:2220 msgid "Use the escape key to close modal forms" msgstr "Utilisez la touche Echap pour fermer les formulaires modaux" -#: common/models.py:2066 +#: common/models.py:2226 msgid "Fixed Navbar" msgstr "Barre de navigation fixe" -#: common/models.py:2067 +#: common/models.py:2227 msgid "The navbar position is fixed to the top of the screen" msgstr "La position de la barre de navigation est fixée en haut de l'écran" -#: common/models.py:2073 +#: common/models.py:2233 msgid "Date Format" msgstr "Format de date" -#: common/models.py:2074 +#: common/models.py:2234 msgid "Preferred format for displaying dates" msgstr "Format préféré pour l'affichage des dates" -#: common/models.py:2088 part/templates/part/detail.html:41 +#: common/models.py:2248 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Planification des pièces" -#: common/models.py:2089 +#: common/models.py:2249 msgid "Display part scheduling information" msgstr "Afficher les informations de planification des pièces" -#: common/models.py:2095 part/templates/part/detail.html:62 +#: common/models.py:2255 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventaire des pièces" -#: common/models.py:2096 +#: common/models.py:2256 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2102 +#: common/models.py:2262 msgid "Table String Length" msgstr "Longueur de la chaîne dans les Tableau" -#: common/models.py:2103 +#: common/models.py:2263 msgid "Maximimum length limit for strings displayed in table views" msgstr "Limite de longueur maximale pour les chaînes affichées dans les vues de la table" -#: common/models.py:2112 +#: common/models.py:2272 msgid "Default part label template" msgstr "" -#: common/models.py:2113 +#: common/models.py:2273 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2121 +#: common/models.py:2281 msgid "Default stock item template" msgstr "" -#: common/models.py:2122 +#: common/models.py:2282 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2130 +#: common/models.py:2290 msgid "Default stock location label template" msgstr "" -#: common/models.py:2131 +#: common/models.py:2291 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2177 +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Prix" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "Actif" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "Ce webhook (lien de rappel HTTP) est-il actif" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "Jeton" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "Jeton d'accès" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "Confidentiel" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "ID message" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "Identifiant unique pour ce message" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "Hôte" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "Hôte à partir duquel ce message a été reçu" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "Entête" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "En-tête de ce message" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "Corps" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "Corps de ce message" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "Endpoint à partir duquel ce message a été reçu" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "Le travail sur ce message est-il terminé ?" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "Id" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "Titre" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "Publié" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "Auteur" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "Résumé" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "Lu" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "Cette nouvelle a-t-elle été lue ?" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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 "Image" -#: common/models.py:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "Nouveau {verbose_name}" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "Une nouvelle commande a été créée et vous a été assignée" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "Articles reçus" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "Des articles d'un bon de commande ont été reçus" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "Erreur déclenchée par le plugin" @@ -3456,7 +3558,7 @@ msgstr "Erreur déclenchée par le plugin" #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:108 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" -msgstr "Téléverser un fichier" +msgstr "Transférer un fichier" #: common/views.py:86 order/templates/order/order_wizard/match_fields.html:52 #: order/views.py:119 @@ -3476,9 +3578,9 @@ msgstr "Les champs correspondants ont échoué" #: common/views.py:481 msgid "Parts imported" -msgstr "Composantes importées" +msgstr "Pièces importées" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "Description de la société" msgid "Description of the company" msgstr "Description de la société" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "Site web" @@ -3507,331 +3609,395 @@ msgstr "Site web" msgid "Company website URL" msgstr "Site Web de la société" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Adresse" - -#: company/models.py:119 -msgid "Company address" -msgstr "Adresse de l'entreprise" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Numéro de téléphone" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "Numéro de téléphone de contact" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "E-mail" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "Adresse e-mail de contact" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Contact" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "Point de contact" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "Lien externe vers les informations de l'entreprise" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "est client" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "Vendez-vous des objets à cette entreprise?" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "est fournisseur" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "Est-ce que vous achetez des articles à cette entreprise?" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "est fabricant" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "Cette entreprise fabrique-t-elle des pièces?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "Devise par défaut utilisée pour cette entreprise" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Société" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "Sélectionner une entreprise" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "Ligne 1" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "Adresse" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "Ligne 2" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "Seconde ligne d'adresse" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "Code postal" + +#: company/models.py:361 +msgid "City/Region" +msgstr "Ville / Région" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "Code postal Ville / Région" + +#: company/models.py:366 +msgid "State/Province" +msgstr "État / Province" + +#: company/models.py:367 +msgid "State or province" +msgstr "État ou province" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "Pays" + +#: company/models.py:372 +msgid "Address country" +msgstr "Pays" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "Notes du livreur" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "Instructions pour le livreur" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "Notes pour la livraison interne" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "Notes internes pour la livraison" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Fabricant" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Sélectionner un fabricant" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Pièces du fabricant" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "Nom du paramètre" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Valeur" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "Valeur du paramètre" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "Unités" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "Unités du paramètre" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "La pièce du fabricant liée doit faire référence à la même pièce de base" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Fournisseur" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "Sélectionner un fournisseur" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "SKU" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "Unité de gestion des stocks des fournisseurs" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "Sélectionner un fabricant" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "Lien de la pièce du fournisseur externe" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "Description de la pièce du fournisseur" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "Note" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "coût de base" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "Frais minimums (par exemple frais de stock)" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Conditionnement" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "Conditionnement de l'article" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "Nombre de paquet" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "plusieurs" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "Commande multiple" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "Disponible" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "Quantité disponible auprès du fournisseur" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "Disponibilité mise à jour" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "Date de dernière mise à jour des données de disponibilité" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "Devise par défaut utilisée pour ce fournisseur" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "Créer une commande d'achat" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "Actions de l'entreprise" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "Éditer les informations sur la société" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "Editer la société" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "Supprimer la société" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "Supprimer la société" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "Supprimer la société" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Ajouter une nouvelle image" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Télécharger l'image depuis l'URL" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "Supprimer image" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Client" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "Utiliser la devise par défaut" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Adresse" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "Téléphone" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "Supprimer l'image" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "Supprimer l'image associée de cette entreprise" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "Supprimer" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "Charger une image" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "Télécharger une image" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "Pièce fournisseur" @@ -3916,156 +4089,144 @@ msgstr "Créer une nouvelle pièce fournisseur" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "Nouvelle pièce fournisseur" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "Commander des composants" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "Supprimer la pièce" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "Supprimer les pièces" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "Pièces du fabricant" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "Créer une nouvelle pièce de fabricant" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "Nouvelle pièce de fabricant" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "Stock fournisseur" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" -msgstr "Commandes d'achat" +msgstr "Bons de commande" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "Créer une commande d'achat" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "Nouvelle commande achat" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "Ventes" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "Créer un nouvel ordre de vente" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "Nouvelle commande de vente" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "Stock affecté" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "Notes de l'entreprise" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "Liste des Fournisseurs" +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "Ajouter une adresse" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "Fabricants" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "Article de la commande" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "Modifier la pièce du fabricant" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "Supprimer la pièce de fabricant" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "Pièces Internes" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "Aucune information sur le fabricant disponible" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "Fournisseurs" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "Supprimer les pièces du fournisseur" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "Supprimer" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Paramètres" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "Nouveau paramètre" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "Supprimer les paramètres" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "Ajouter un paramètre" @@ -4137,106 +4280,111 @@ msgstr "Articles en stock assignés" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "Adresses" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "Pièce fournisseur" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "Actions de la pièce du fournisseur" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "Commander un composant" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "Disponibilité de la mise à jour" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "Modifier la pièce du fournisseur" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "Dupliquer la pièce du fournisseur" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "Supprimer la pièce du fournisseur" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "Supprimer la pièce du fournisseur" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "Aucune information de fournisseur disponible" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "Stock de pièces du fournisseur" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "Créer un nouvel article de stock" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Nouvel article de stock" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "Commandes de pièces du fournisseur" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "Information sur les prix" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "Ajouter un prix de rupture" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "Lier le code-barres à la pièce du fournisseur" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "Mettre à jour la disponibilité des pièces" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "Éléments en stock" @@ -4244,102 +4392,95 @@ msgstr "Éléments en stock" msgid "Supplier Part Pricing" msgstr "Prix de la pièce du fournisseur" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "Nouveau Fournisseur" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "Nouveau Fabricant" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "Clients" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "Nouveaux Clients" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "Entreprises" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "Nouvelle Entreprise" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "Nom de l'étiquette" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "Description de l’étiquette" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "Étiquette" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "Fichier de modèle d'étiquette" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "Activé" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "Le modèle d'étiquette est activé" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "Largeur [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "Largeur de l'étiquette, spécifiée en mm" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "Hauteur [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "Hauteur de l'étiquette, spécifiée en mm" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "Modèle de nom de fichier" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "Modèle pour la génération des noms de fichiers d'étiquette" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," -msgstr "Filtres de requête (liste de paires clé=valeur séparées par des virgules)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "Filtres" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "Filtres de requête (liste de paires clé=valeur séparées par des virgules" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "Filtres de requêtes de pièces (valeurs de paires clé=valeur séparées par des virgules)" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "Aucun bon de commande correspondant n'a été trouvé" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "Commande d’achat" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "Inconnu" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" -msgstr "" +msgstr "Devise de la commande" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "Lien vers une page externe" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Date prévue pour la livraison de la commande. La commande sera en retard après cette date." -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "Créé par" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "Utilisateur ou groupe responsable de cette commande" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "Référence de la commande" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "Statut de la commande d'achat" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "Société de laquelle les articles sont commandés" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "Référence du fournisseur" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "Code de référence de la commande fournisseur" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "reçu par" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "Date d'émission" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "Date d'émission de la commande" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "Date à laquelle la commande a été complété" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "La quantité doit être un nombre positif" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "Société à laquelle les articles sont vendus" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "Nom de l’expédition" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "expédié par" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "La commande ne peut pas être terminée car aucune pièce n'a été assignée" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "La commande ne peut pas être terminée car il y a des envois incomplets" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "Nombre d'élement" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "Contexte" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "Prix unitaire" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "supprimé" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "Commande" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "Pièce fournisseur" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "Reçu" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "Nombre d'éléments reçus" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Prix d'achat" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "Prix d'achat unitaire" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "Où l'Acheteur veut-il stocker cet article ?" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "La pièce virtuelle ne peut pas être affectée à une commande" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "Seules les pièces vendues peuvent être attribuées à une commande" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Prix de vente" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "Prix de vente unitaire" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "Quantité expédiée" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "Date d'expédition" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "Vérifié par" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "Utilisateur qui a vérifié cet envoi" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Envoi" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "Numéro d'expédition" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "N° de suivi" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "Information de suivi des colis" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "N° de facture" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "Numéro de référence de la facture associée" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "Le colis a déjà été envoyé" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "L'expédition n'a pas d'articles en stock alloués" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "L'article de stock n'a pas été assigné" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "Impossible d'allouer le stock à une ligne sans pièce" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "La quantité d'allocation ne peut pas excéder la quantité en stock" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "Ligne" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "Article" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "La commande ne peut pas être annulée" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "La commande n'est pas ouverte" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "Devise du prix d'achat" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "Entrez les numéros de série pour les articles de stock entrants" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Code-barres" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "Le code-barres est déjà utilisé" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "Une quantité entière doit être fournie pour les pièces tracables" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "Entrez les numéros de série à allouer" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "Aucune correspondance trouvée pour les numéros de série suivants" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "Les numéros de série suivants sont déjà alloués" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "Modifier la commande" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "Annuler la commande" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "Recevoir objet" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "Réception d'articles" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "Marquer la commande comme complète" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "Finaliser la commande" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "Référence de commande" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "Description de la commande" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "Statut de la commande" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "Incomplet" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "Dupliquer la sélection" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Supprimer la ligne" @@ -5152,9 +5289,9 @@ msgstr "Articles de la commande d'achat" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "Notes de commande" @@ -5197,76 +5329,76 @@ msgstr "Notes de commande" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" #: order/templates/order/return_order_sidebar.html:5 msgid "Order Details" -msgstr "" +msgstr "Détails de la Commande" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,83 +5406,83 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "Expéditions en attente" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" -msgstr "" +msgstr "Nouvelle Expédition" #: order/views.py:120 msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "Prix introuvable" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "ID de composant" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" -msgstr "" +msgstr "Nom de l'article" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" -msgstr "" +msgstr "IPN" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "Révision" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" -msgstr "" +msgstr "Mots-clés" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" -msgstr "" +msgstr "Stock Minimum" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" -msgstr "" +msgstr "En Stock" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "En Commande" @@ -5383,115 +5515,108 @@ msgstr "En Commande" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" -msgstr "Composantes" +msgstr "Pièces" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" -msgstr "" +msgstr "Prix Minimum" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" -msgstr "" +msgstr "Prix Maximum" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Catégorie de composant" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "Catégories de composants" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "L'IPN doit correspondre au modèle de regex {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" -msgstr "" +msgstr "Nom de l'article" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "Catégorie" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "Catégorie de la pièce" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "Ventes multiples" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "Date" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" -msgstr "" +msgstr "Notes additionnelles" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "Nom de test" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Requis" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" -msgstr "" +msgstr "Valeur requise" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "Données" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "Valeur par Défaut" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "Article du BOM" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Surplus" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Validée" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "Devise d'achat de l'item" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "Copier l'image" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "Copier les paramètres" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "Copier l'image" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "Copier les paramètres" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "Supprimer l'élément" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "Modifier la catégorie" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "Modifier la catégorie" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "Supprimer la catégorie" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "Supprimer la catégorie" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" -msgstr "Composantes (incluant sous-catégories)" +msgstr "Pièces (incluant les sous-catégories)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "Nouvelle catégorie" @@ -6560,7 +6684,7 @@ msgstr "" #: part/templates/part/copy_part.html:14 #: part/templates/part/create_part.html:11 msgid "Possible Matching Parts" -msgstr "Composantes correspondantes possibles" +msgstr "Pièces pouvant correspondre" #: part/templates/part/copy_part.html:15 #: part/templates/part/create_part.html:12 @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "Actualiser" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "Prise d'inventaire" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "Fabricants de composants" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "Sélectionner un format de fichier" @@ -6747,158 +6871,158 @@ msgstr "Sélectionner un format de fichier" msgid "Part List" msgstr "Liste des composants" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "Impression étiquette" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "Modifier la pièce" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "La pièce en stock est tracée par un numéro de série" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "Dernier numéro de série" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "Rechercher un numéro de série" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "Calculer" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "Stock" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "Tarif" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "Base de données inconnue" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" -msgstr "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" +msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "Aucune action spécifiée" msgid "No matching action found" msgstr "Aucune action correspondante trouvée" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "Aucune correspondance trouvée pour les données du code-barres" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "Correspondance trouvée pour les données du code-barres" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "Contributeurs d'InvenTree" @@ -7222,242 +7397,413 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +#, fuzzy +#| msgid "Order" +msgid "Border" +msgstr "Commande" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +#, fuzzy +#| msgid "InvenTree Version" +msgid "InvenTree Label Sheet Printer" +msgstr "Version d'InvenTree" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "Non du Plugin" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "Extension Intégrée" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "Extension" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "Numérique" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "Aucun objet valide n'a été fourni au modèle" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "Nom du modèle" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "Filtres de composants" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "Extrait " -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "Elément" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7820,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,26 +7834,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Numéro de série" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7867,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "Résultat" @@ -7548,485 +7898,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Numéro de série" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Propriétaire" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "Sélectionner un propriétaire" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "La quantité doit être de 1 pour un article avec un numéro de série" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Le numéro de série ne peut pas être défini si la quantité est supérieure à 1" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "Numéro de série pour cet article" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "Les numéros de série doivent être une liste de nombres entiers" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "La quantité ne correspond pas au nombre de numéros de série" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "Les numéros de série existent déjà" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "Entrez le nombre d'articles en stock à sérialiser" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "Entrez les numéros de série pour les nouveaux articles" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "Les numéros de série ne peuvent pas être assignés à cette pièce" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8438,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Assemblage" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "page précédente" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "Accéder au numéro de série précédent" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "Accéder au numéro de série suivant" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "Code QR de l'article en stock" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "Lier le code-barres à l'article de stock" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8714,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "Sélectionner la quantité à sérialiser et les numéros de série uniques." -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8830,7 @@ msgid "You have been logged out from InvenTree." msgstr "Vous avez été déconnecté•e d'InvenTree." #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "Se connecter" @@ -8451,71 +8867,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "Nouvelles d'InvenTree" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8957,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8974,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9029,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "Paramètres" @@ -8651,7 +9067,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9075,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "Paramètres des Extensions" @@ -8672,30 +9097,30 @@ msgstr "Paramètres des Extensions" 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "Extensions" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "Les extensions tierces ne sont pas activées pour cette installation d'InvenTree" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9129,7 @@ msgid "Plugin information" msgstr "Informations sur le plugin" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9166,8 @@ msgid "Installation path" msgstr "Chemin d'installation" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9175,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "Auteur du commit" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "Date du commit" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "Hash du commit" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "Message du commit" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "Statut de la signature" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "Clé de signature" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9238,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9255,7 @@ msgstr "" msgid "No value set" msgstr "Aucune valeur définie" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9279,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "Modifier" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Supprimer" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 msgid "Edit Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9394,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "Rechercher" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "Rapports" @@ -8932,11 +9413,11 @@ msgstr "Paramètres Globaux" msgid "Server" msgstr "Serveur" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "Catégories" @@ -8948,6 +9429,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "Paramètres du Compte" @@ -8958,13 +9443,6 @@ msgstr "Paramètres du Compte" msgid "Change Password" msgstr "Changer le mot de passe" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "Modifier" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "Nom d'utilisateur" @@ -8990,6 +9468,7 @@ msgid "Unverified" msgstr "Non vérifiée" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "Principale" @@ -9204,44 +9683,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "Documentation d'InvenTree" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9259,7 +9742,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Confirmer" @@ -9435,30 +9918,30 @@ msgstr "Ajouter un lien" msgid "Add Attachment" msgstr "Ajouter une pièce jointe" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "Identifiant du code-barres" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "Redémarrage du serveur nécessaire" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "Une option de configuration a été modifiée, ce qui nécessite un redémarrage du serveur" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "Contactez votre administrateur système pour plus d'informations" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9970,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "Quantité requise" @@ -9501,15 +9984,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "Aucune réponse" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "Aucune réponse du serveur InvenTree" @@ -9521,27 +10004,27 @@ msgstr "Erreur 400: Mauvaise requête" msgid "API request returned error code 400" msgstr "La requête de l'API a retourné le code d'erreur 400" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "Erreur 401: non authentifié" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "Informations d’authentification non fournies" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "Erreur 403: Permission refusée" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "Vous n'avez pas les autorisations requises pour accéder à cette fonction" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "Erreur 404: Ressource introuvable" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "La ressource demandée n'a pas pu être trouvée sur le serveur" @@ -9553,19 +10036,27 @@ msgstr "Erreur 405: Méthode non autorisée" msgid "HTTP method not allowed at URL" msgstr "Méthode HTTP non autorisée à l'adresse URL" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "Erreur 408: Délai dépassé" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "Délai de connexion dépassé lors de la demande de données depuis le serveur" #: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 msgid "Unhandled Error Code" msgstr "Code d'erreur non géré" -#: templates/js/translated/api.js:262 +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "Code d’erreur" @@ -9573,23 +10064,35 @@ msgstr "Code d’erreur" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "Aucune pièce jointe trouvée" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "Modifier la pièce jointe" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "Date d'upload" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "Modifier la pièce jointe" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "Supprimer la pièce jointe" @@ -9622,7 +10125,7 @@ msgid "Unknown response from server" msgstr "Réponse inconnue du serveur" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "Réponse du serveur invalide" @@ -9646,7 +10149,7 @@ msgstr "" msgid "Unlink" msgstr "Délier" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "Supprimer l'article de stock" @@ -9704,743 +10207,839 @@ msgstr "Vérifier dans l'emplacement" msgid "Barcode does not match a valid location" msgstr "Le code-barres ne correspond pas à un emplacement valide" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "Données de la rangée" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "Télécharger le template de la BOM" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "Niveaux" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "Sélectionner le nombre maximum de niveaux de BOM à exporter (0 = tous les niveaux)" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "Inclure les données de paramètre" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "Inclure les données de stock" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "Êtes-vous sûr de vouloir annuler cette construction?" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "Prochain numéro de série disponible" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "Dernier numéro de série" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "La BOM contient des pièces traçables" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "Les pièces traçables peuvent avoir des numéros de série spécifiés" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "Sortie complète" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "Supprimer les sorties" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "Commander des stocks" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "Pas d'informations sur l'utilisateur" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "Pièce traçable" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "Commander des stocks" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" -msgstr "Composantes fournies" +msgstr "Pièces fournies" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "Composantes fabriquées" +msgstr "Pièces fabriquées" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "Commander des composants" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "Supprimer les pièces du fournisseur" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11047,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11149,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" -msgstr "Sélectionner imprimante" - -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "Annuler" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11269,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11319,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11335,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "Attributs de la pièce" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "Options de création de pièce" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "Options de duplication de pièces" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "Ajouter une catégorie de pièce" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "Composant créé avec succès" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "Modifier la pièce" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "Pièce modifiée" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "Créer une variante de pièce" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "Stock bas" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "Pièce traçable" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "Pièce virtuelle" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "Pièce vendable" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "Aucune variante trouvée" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "Aucune pièce trouvée" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "Aucune catégorie" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "Afficher sous forme de liste" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "Afficher sous forme de grille" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "Aucune catégorie" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "Afficher sous forme de liste" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "Afficher sous forme de grille" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "Afficher sous forme d'arborescence" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "Modifier le résultat du test" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "Supprimer le résultat du test" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11691,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "Le plugin a été installé" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11755,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "Référence de commande" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "Commande en retard" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12031,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "Livré au client" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "Allouer des numéros de série" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "Acheter du stock" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "Calculer le prix" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "Allouer des numéros de série" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12286,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Entrez les numéros de série pour le nouveau stock (ou laisser vide)" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "Trouver un numéro de série" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "Entrer le numéro de série" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "Entrer un numéro de série" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "Aucun numéro de série correspondant" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "Plus d'un résultat correspondant trouvé" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "Confirmer l'assignation de stock" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "Assigner le stock au client" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "Attention : l'opération de fusion est irréversible" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "Certaines informations seront perdues lors de la fusion des articles en stock" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "L'historique des transactions de stock sera supprimé pour les éléments fusionnés" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "Les informations sur la pièce du fournisseur seront supprimées pour les éléments fusionnés" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "Confirmer la fusion de l'article en stock" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "Fusionner les articles en stock" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "Transférer le stock" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "Transférer" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "Compter le stock" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "Compter" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "Supprimer du stock" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "Supprimer" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "Ajouter du stock" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "Ajouter" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "Supprimer le stock" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "La quantité ne peut pas être ajustée pour un stock sérialisé" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "Spécifiez la quantité du stock" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" -msgstr "Vous devez sélectionner au moins un article en stock disponible" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "RÉUSSI" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "ÉCHEC" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "AUCUN RÉSULTAT" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "Ajouter un résultat de test" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "Aucun résultat de test trouvé" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "Date du test" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "En production" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "Article en stock installé dans un autre article en stock" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "Assigné à une commande de vente" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "Aucun emplacement de stock défini" -#: templates/js/translated/stock.js:1746 +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "Fusionner le stock" + +#: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1850 +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 msgid "Stock item is in production" msgstr "L'article de stock est en production" -#: templates/js/translated/stock.js:1855 +#: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" msgstr "L'article en stock a été assigné à une commande de vente" -#: templates/js/translated/stock.js:1858 +#: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" msgstr "L'article en stock a été assigné à un client" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" msgstr "L'article de stock sérialisé a été alloué" -#: templates/js/translated/stock.js:1863 +#: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" msgstr "L'article de stock a été complètement alloué" -#: templates/js/translated/stock.js:1865 +#: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" msgstr "L'article de stock a été partiellement alloué" -#: templates/js/translated/stock.js:1868 +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "L'article en stock a été installé dans un autre article" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "L'article en stock a expiré" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "L'article en stock va bientôt expirer" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "L'article de stock a été rejeté" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "L'article de stock est perdu" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "L'article de stock est détruit" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "Epuisé" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "Pièce de fournisseur non précisée" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "Aucun article de stock ne correspond à la requête" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "Détails" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "L'emplacement n'existe plus" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" -msgstr "La commande d'achat n'existe plus" +msgstr "Le bon de commande n'existe plus" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "Le client n'existe plus" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "L'article de stock n'existe plus" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "Ajouté" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "Supprimé" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "État de la commande" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "En suspens" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "Assigné à moi" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "Pièce traçable" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "Inclure les sous-emplacements" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "Inclure les emplacements" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "Inclure les sous-catégories" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "A un numéro de série" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "Numéro de série PGE" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "Numéro de série supérieur ou égal à" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "Numéro de série PPE" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "Numéro de série inférieur ou égal à" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "Numéro de série" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "Code de lot" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "Pièces actives" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "Afficher le stock pour les pièces actives" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "La pièce est un assemblage" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "Est alloué" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "L'élément a été alloué" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "Le stock est disponible pour utilisation" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "Afficher les articles de stock qui sont installés dans un autre article" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "Afficher les articles qui ont été assignés à un client" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "État du stock" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "A un prix d'achat" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "Afficher les articles de stock qui ont un prix d'achat défini" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "Afficher les articles de stock qui ont expiré" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "Afficher le stock qui est proche de l'expiration" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "État de la construction" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "Inclure les pièces des sous-catégories" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "Afficher les pièces actives" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "A un IPN" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "La pièce a un numéro de pièce interne" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "Achetable" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13037,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "Chargement des données" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "résultats par page" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "Afficher toutes les lignes" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "Afficher" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "à" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "de" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "lignes" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "Aucun résultat correspondant n'a été trouvé" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "Masquer/Afficher la pagination" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "Colonnes" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "Tout" @@ -12454,11 +13101,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "Se déconnecter" @@ -12474,11 +13121,11 @@ msgstr "" msgid "QR data not provided" msgstr "Données QR non fournies" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "Vous avez été déconnecté avec succès." -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "Se reconnecter" @@ -12544,7 +13191,8 @@ msgstr "" #: templates/socialaccount/signup.html:10 #, python-format -msgid "You are about to use your %(provider_name)s account to login to\n" +msgid "" +"You are about to use your %(provider_name)s account to login to\n" "%(site_name)s.
As a final step, please complete the following form:" msgstr "" @@ -12616,50 +13264,6 @@ msgstr "Paramètres de Messagerie" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "Fusionner les éléments de stock sélectionnés" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "Fusionner le stock" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "Commander les éléments sélectionnés" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "Supprimer les éléments sélectionnés" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "Oui" @@ -12668,59 +13272,98 @@ msgstr "Oui" msgid "No" msgstr "Non" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "Utilisateurs" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "Sélectionner quels utilisateurs sont assignés à ce groupe" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" -msgstr "Les utilisateurs suivants sont membres de plusieurs groupes:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "Informations personnelles" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "Droits" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "Dates importantes" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "Droit défini" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "Groupe" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "Vue" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "Droit de voir des éléments" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "Droit d'ajouter des éléments" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "Modifier" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "Droit de modifier des élément" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "Droit de supprimer des éléments" - diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po index 59a6985d94..0071da26e3 100644 --- a/InvenTree/locale/he/LC_MESSAGES/django.po +++ b/InvenTree/locale/he/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:54\n" "Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "הזן תאריך סיום" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "" -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "הכנס סיסמה" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "הכנס סיסמה חדשה" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "אישור סיסמה" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "אשר סיסמה חדשה" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "אימייל (שנית)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "אישור כתובת אימייל" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "חובה לרשום את אותו אימייל בכל פעם." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" +msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" +msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "מספרים סידוריים לא נמצאו" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "קובץ חסר" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "חסר קישור חיצוני" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "קובץ מצורף" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "בחר קובץ לצירוף" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "קישור" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "קישור חיצוני" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "הערה" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "הערת קובץ" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "משתמש" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "תאריך העלאה" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "חובה למלא שם קובץ" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "תיקיית קובץ שגויה" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "שם הקובץ מכיל תו '{c}' שאינו חוקי" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "שגיאה בשינוי שם פריט" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "בחירה שגויה" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "שם" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "תיאור" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "תיאור (לא חובה)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "מקור" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "המספר חייב להיות תקין" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -484,143 +509,155 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "גרמנית" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "יוונית" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "אנגלית" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "ספרדית" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "ספרדית (מקסיקנית)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "צרפתית" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "עברית" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "איטלקית" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "יפנית" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "קוריאנית" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "הולנדית" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "נורווגית" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "פולנית" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "רוסית" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "שוודית" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "תאילנדית" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "טורקית" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "ווייטנאמית" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "סינית" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "בהמתנה" @@ -630,8 +667,8 @@ msgstr "מוקם" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "הושלם" @@ -654,10 +691,10 @@ msgstr "הוחזר" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "נשלח" @@ -689,7 +726,7 @@ msgstr "" msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "" @@ -745,7 +782,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "" @@ -765,7 +802,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "נשלח ללקוח" @@ -813,119 +850,165 @@ msgstr "" msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "קוד מטבע לא מאושר" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "ערוך מידע אודות המשתמש" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "הגדר סיסמא" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "הסיסמאות מוכרחות להיות תואמות" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "מידע אודות המערכת" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "מקט" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "מקור הבנייה" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "רכיב" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "בחר רכיב לבנייה" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "כמות בניה" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "כמות" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "מספרים סידוריים" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1766,147 +1864,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1914,14 +1971,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" +#: common/models.py:1197 +msgid "Automatic Backup" msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" +msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" +#: common/models.py:1204 +msgid "Auto Backup Interval" msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:1370 +msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1378 -msgid "Default page size for PDF reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1388 -msgid "Enable Test Reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" msgstr "" #: common/models.py:1550 -msgid "Enable SSO on the login pages" +msgid "Default page size for PDF reports" msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" +msgid "Attach Test Reports" msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" +msgid "Autofill Serial Numbers" msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3507,331 +3609,395 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" - -#: company/models.py:119 -msgid "Company address" -msgstr "" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3916,156 +4089,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4244,102 +4392,95 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "לא פורטה הפעולה" msgid "No matching action found" msgstr "פעולה מבוקשת לא נמצאה" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9259,7 +9738,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "אשר" @@ -9435,30 +9914,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11043,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12616,50 +13259,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12668,59 +13267,99 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/hi/LC_MESSAGES/django.po b/InvenTree/locale/hi/LC_MESSAGES/django.po new file mode 100644 index 0000000000..81a68e3f01 --- /dev/null +++ b/InvenTree/locale/hi/LC_MESSAGES/django.po @@ -0,0 +1,13365 @@ +msgid "" +msgstr "" +"Project-Id-Version: inventree\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" +"Last-Translator: \n" +"Language-Team: Hindi\n" +"Language: hi_IN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: inventree\n" +"X-Crowdin-Project-ID: 452300\n" +"X-Crowdin-Language: hi\n" +"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 154\n" + +#: InvenTree/api.py:160 +msgid "API endpoint not found" +msgstr "" + +#: InvenTree/api.py:425 +msgid "User does not have permission to view this model" +msgstr "" + +#: InvenTree/conversion.py:92 +msgid "No value provided" +msgstr "" + +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "" + +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "" + +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "" + +#: InvenTree/exceptions.py:89 +msgid "Error details can be found in the admin panel" +msgstr "" + +#: InvenTree/fields.py:127 +msgid "Enter date" +msgstr "तारीख दर्ज करें" + +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 +#: report/templates/report/inventree_build_order_base.html:172 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 +msgid "Notes" +msgstr "" + +#: InvenTree/format.py:154 +#, python-brace-format +msgid "Value '{name}' does not appear in pattern format" +msgstr "" + +#: InvenTree/format.py:164 +msgid "Provided value does not match required pattern: " +msgstr "" + +#: InvenTree/forms.py:147 +msgid "Enter password" +msgstr "पास वर्ड दर्ज करें" + +#: InvenTree/forms.py:148 +msgid "Enter new password" +msgstr "नया पासवर्ड दर्ज करें" + +#: InvenTree/forms.py:157 +msgid "Confirm password" +msgstr "पासवर्ड की पुष्टि करें" + +#: InvenTree/forms.py:158 +msgid "Confirm new password" +msgstr "नए पासवर्ड की पुष्टि करें" + +#: InvenTree/forms.py:162 +msgid "Old password" +msgstr "पुराना पासवर्ड" + +#: InvenTree/forms.py:199 +msgid "Email (again)" +msgstr "" + +#: InvenTree/forms.py:203 +msgid "Email address confirmation" +msgstr "" + +#: InvenTree/forms.py:224 +msgid "You must type the same email each time." +msgstr "" + +#: InvenTree/forms.py:255 InvenTree/forms.py:261 +msgid "The provided primary email address is not valid." +msgstr "" + +#: InvenTree/forms.py:267 +msgid "The provided email domain is not approved." +msgstr "" + +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 +msgid "Invalid quantity provided" +msgstr "" + +#: InvenTree/helpers.py:460 +msgid "Empty serial number string" +msgstr "" + +#: InvenTree/helpers.py:490 +msgid "Duplicate serial" +msgstr "" + +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 +#, python-brace-format +msgid "Invalid group range: {group}" +msgstr "" + +#: InvenTree/helpers.py:552 +#, python-brace-format +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 +#, python-brace-format +msgid "Invalid group sequence: {group}" +msgstr "" + +#: InvenTree/helpers.py:608 +msgid "No serial numbers found" +msgstr "" + +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:740 +msgid "Remove HTML tags from this value" +msgstr "" + +#: InvenTree/helpers_model.py:123 +msgid "Connection error" +msgstr "कनेक्शन त्रुटि" + +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 +msgid "Server responded with invalid status code" +msgstr "" + +#: InvenTree/helpers_model.py:129 +msgid "Exception occurred" +msgstr "" + +#: InvenTree/helpers_model.py:137 +msgid "Server responded with invalid Content-Length value" +msgstr "" + +#: InvenTree/helpers_model.py:140 +msgid "Image size is too large" +msgstr "" + +#: InvenTree/helpers_model.py:152 +msgid "Image download exceeded maximum size" +msgstr "" + +#: InvenTree/helpers_model.py:157 +msgid "Remote server returned empty response" +msgstr "" + +#: InvenTree/helpers_model.py:165 +msgid "Supplied URL is not a valid image file" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "ई-मेल" + +#: InvenTree/models.py:81 +msgid "Metadata must be a python dict object" +msgstr "" + +#: InvenTree/models.py:85 +msgid "Plugin Metadata" +msgstr "" + +#: InvenTree/models.py:86 +msgid "JSON metadata field, for use by external plugins" +msgstr "" + +#: InvenTree/models.py:312 +msgid "Improperly formatted pattern" +msgstr "" + +#: InvenTree/models.py:319 +msgid "Unknown format key specified" +msgstr "" + +#: InvenTree/models.py:325 +msgid "Missing required format key" +msgstr "" + +#: InvenTree/models.py:336 +msgid "Reference field cannot be empty" +msgstr "" + +#: InvenTree/models.py:343 +msgid "Reference must match required pattern" +msgstr "" + +#: InvenTree/models.py:373 +msgid "Reference number is too large" +msgstr "" + +#: InvenTree/models.py:455 +msgid "Missing file" +msgstr "" + +#: InvenTree/models.py:456 +msgid "Missing external link" +msgstr "" + +#: InvenTree/models.py:475 stock/models.py:2319 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:326 +msgid "Attachment" +msgstr "" + +#: InvenTree/models.py:476 +msgid "Select file to attach" +msgstr "" + +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_base.html:164 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 +msgid "Link" +msgstr "" + +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 +msgid "Link to external URL" +msgstr "" + +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 +msgid "Comment" +msgstr "" + +#: InvenTree/models.py:486 +msgid "File comment" +msgstr "" + +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 +#: report/templates/report/inventree_test_report_base.html:105 +#: templates/js/translated/stock.js:3007 users/models.py:85 +msgid "User" +msgstr "" + +#: InvenTree/models.py:496 +msgid "upload date" +msgstr "" + +#: InvenTree/models.py:517 +msgid "Filename must not be empty" +msgstr "" + +#: InvenTree/models.py:526 +msgid "Invalid attachment directory" +msgstr "" + +#: InvenTree/models.py:536 +#, python-brace-format +msgid "Filename contains illegal character '{c}'" +msgstr "" + +#: InvenTree/models.py:539 +msgid "Filename missing extension" +msgstr "" + +#: InvenTree/models.py:546 +msgid "Attachment with this filename already exists" +msgstr "" + +#: InvenTree/models.py:553 +msgid "Error renaming file" +msgstr "" + +#: InvenTree/models.py:728 +msgid "Duplicate names cannot exist under the same parent" +msgstr "" + +#: InvenTree/models.py:752 +msgid "Invalid choice" +msgstr "" + +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 +#: templates/InvenTree/settings/mixins/urls.html:13 +#: templates/InvenTree/settings/notifications.html:17 +#: templates/InvenTree/settings/plugin.html:74 +#: templates/InvenTree/settings/plugin_settings.html:22 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 +msgid "Name" +msgstr "" + +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 +#: company/templates/company/manufacturer_part.html:75 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 +#: report/templates/report/inventree_build_order_base.html:117 +#: stock/admin.py:42 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:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 +msgid "Description" +msgstr "" + +#: InvenTree/models.py:794 stock/models.py:79 +msgid "Description (optional)" +msgstr "" + +#: InvenTree/models.py:802 +msgid "parent" +msgstr "" + +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 +msgid "Path" +msgstr "" + +#: InvenTree/models.py:921 +msgid "Markdown notes (optional)" +msgstr "" + +#: InvenTree/models.py:948 +msgid "Barcode Data" +msgstr "" + +#: InvenTree/models.py:949 +msgid "Third party barcode data" +msgstr "" + +#: InvenTree/models.py:954 +msgid "Barcode Hash" +msgstr "" + +#: InvenTree/models.py:955 +msgid "Unique hash of barcode data" +msgstr "" + +#: InvenTree/models.py:995 +msgid "Existing barcode found" +msgstr "" + +#: InvenTree/models.py:1036 +msgid "Server Error" +msgstr "" + +#: InvenTree/models.py:1037 +msgid "An error has been logged by the server." +msgstr "" + +#: InvenTree/serializers.py:59 part/models.py:3904 +msgid "Must be a valid number" +msgstr "" + +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 +#: templates/InvenTree/settings/settings_staff_js.html:44 +#: templates/currency_data.html:5 +msgid "Currency" +msgstr "" + +#: InvenTree/serializers.py:91 +msgid "Select currency from available options" +msgstr "" + +#: InvenTree/serializers.py:364 +msgid "Filename" +msgstr "" + +#: InvenTree/serializers.py:401 +msgid "Invalid value" +msgstr "" + +#: InvenTree/serializers.py:423 +msgid "Data File" +msgstr "" + +#: InvenTree/serializers.py:424 +msgid "Select data file for upload" +msgstr "" + +#: InvenTree/serializers.py:445 +msgid "Unsupported file type" +msgstr "" + +#: InvenTree/serializers.py:451 +msgid "File is too large" +msgstr "" + +#: InvenTree/serializers.py:472 +msgid "No columns found in file" +msgstr "" + +#: InvenTree/serializers.py:475 +msgid "No data rows found in file" +msgstr "" + +#: InvenTree/serializers.py:598 +msgid "No data rows provided" +msgstr "" + +#: InvenTree/serializers.py:601 +msgid "No data columns supplied" +msgstr "" + +#: InvenTree/serializers.py:678 +#, python-brace-format +msgid "Missing required column: '{name}'" +msgstr "" + +#: InvenTree/serializers.py:687 +#, python-brace-format +msgid "Duplicate column: '{col}'" +msgstr "" + +#: InvenTree/serializers.py:712 +#: templates/InvenTree/settings/mixins/urls.html:14 +msgid "URL" +msgstr "" + +#: InvenTree/serializers.py:713 +msgid "URL of remote image file" +msgstr "" + +#: InvenTree/serializers.py:726 +msgid "Downloading images from remote URL is not enabled" +msgstr "" + +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 +msgid "Czech" +msgstr "" + +#: InvenTree/settings.py:821 +msgid "Danish" +msgstr "" + +#: InvenTree/settings.py:822 +msgid "German" +msgstr "" + +#: InvenTree/settings.py:823 +msgid "Greek" +msgstr "" + +#: InvenTree/settings.py:824 +msgid "English" +msgstr "" + +#: InvenTree/settings.py:825 +msgid "Spanish" +msgstr "" + +#: InvenTree/settings.py:826 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/settings.py:827 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/settings.py:828 +msgid "Finnish" +msgstr "" + +#: InvenTree/settings.py:829 +msgid "French" +msgstr "" + +#: InvenTree/settings.py:830 +msgid "Hebrew" +msgstr "" + +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 +msgid "Hungarian" +msgstr "" + +#: InvenTree/settings.py:833 +msgid "Italian" +msgstr "" + +#: InvenTree/settings.py:834 +msgid "Japanese" +msgstr "" + +#: InvenTree/settings.py:835 +msgid "Korean" +msgstr "" + +#: InvenTree/settings.py:836 +msgid "Dutch" +msgstr "" + +#: InvenTree/settings.py:837 +msgid "Norwegian" +msgstr "" + +#: InvenTree/settings.py:838 +msgid "Polish" +msgstr "" + +#: InvenTree/settings.py:839 +msgid "Portuguese" +msgstr "" + +#: InvenTree/settings.py:840 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:841 +msgid "Russian" +msgstr "" + +#: InvenTree/settings.py:842 +msgid "Slovenian" +msgstr "" + +#: InvenTree/settings.py:843 +msgid "Swedish" +msgstr "" + +#: InvenTree/settings.py:844 +msgid "Thai" +msgstr "" + +#: InvenTree/settings.py:845 +msgid "Turkish" +msgstr "" + +#: InvenTree/settings.py:846 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 +msgid "Background worker check failed" +msgstr "" + +#: InvenTree/status.py:72 +msgid "Email backend not configured" +msgstr "" + +#: InvenTree/status.py:75 +msgid "InvenTree system health checks failed" +msgstr "" + +#: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 +#: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 +#: InvenTree/status_codes.py:188 generic/states/tests.py:16 +#: templates/js/translated/table_filters.js:594 +msgid "Pending" +msgstr "" + +#: InvenTree/status_codes.py:13 generic/states/tests.py:17 +msgid "Placed" +msgstr "" + +#: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 +#: InvenTree/status_codes.py:172 generic/states/tests.py:18 +#: 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:43 +#: InvenTree/status_codes.py:150 InvenTree/status_codes.py:173 +msgid "Cancelled" +msgstr "" + +#: InvenTree/status_codes.py:16 InvenTree/status_codes.py:44 +#: InvenTree/status_codes.py:71 +msgid "Lost" +msgstr "" + +#: InvenTree/status_codes.py:17 InvenTree/status_codes.py:45 +#: InvenTree/status_codes.py:73 +msgid "Returned" +msgstr "" + +#: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 +msgid "In Progress" +msgstr "" + +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 +msgid "Shipped" +msgstr "" + +#: InvenTree/status_codes.py:66 +msgid "OK" +msgstr "" + +#: InvenTree/status_codes.py:67 +msgid "Attention needed" +msgstr "" + +#: InvenTree/status_codes.py:68 +msgid "Damaged" +msgstr "" + +#: InvenTree/status_codes.py:69 +msgid "Destroyed" +msgstr "" + +#: InvenTree/status_codes.py:70 +msgid "Rejected" +msgstr "" + +#: InvenTree/status_codes.py:72 +msgid "Quarantined" +msgstr "" + +#: InvenTree/status_codes.py:91 +msgid "Legacy stock tracking entry" +msgstr "" + +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 +msgid "Stock item created" +msgstr "" + +#: InvenTree/status_codes.py:96 +msgid "Edited stock item" +msgstr "" + +#: InvenTree/status_codes.py:97 +msgid "Assigned serial number" +msgstr "" + +#: InvenTree/status_codes.py:100 +msgid "Stock counted" +msgstr "" + +#: InvenTree/status_codes.py:101 +msgid "Stock manually added" +msgstr "" + +#: InvenTree/status_codes.py:102 +msgid "Stock manually removed" +msgstr "" + +#: InvenTree/status_codes.py:105 +msgid "Location changed" +msgstr "" + +#: InvenTree/status_codes.py:106 +msgid "Stock updated" +msgstr "" + +#: InvenTree/status_codes.py:109 +msgid "Installed into assembly" +msgstr "" + +#: InvenTree/status_codes.py:110 +msgid "Removed from assembly" +msgstr "" + +#: InvenTree/status_codes.py:112 +msgid "Installed component item" +msgstr "" + +#: InvenTree/status_codes.py:113 +msgid "Removed component item" +msgstr "" + +#: InvenTree/status_codes.py:116 +msgid "Split from parent item" +msgstr "" + +#: InvenTree/status_codes.py:117 +msgid "Split child item" +msgstr "" + +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 +msgid "Merged stock items" +msgstr "" + +#: InvenTree/status_codes.py:123 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:126 +msgid "Build order output created" +msgstr "" + +#: InvenTree/status_codes.py:127 +msgid "Build order output completed" +msgstr "" + +#: InvenTree/status_codes.py:128 +msgid "Build order output rejected" +msgstr "" + +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 +msgid "Consumed by build order" +msgstr "" + +#: InvenTree/status_codes.py:132 +msgid "Shipped against Sales Order" +msgstr "" + +#: InvenTree/status_codes.py:135 +msgid "Received against Purchase Order" +msgstr "" + +#: InvenTree/status_codes.py:138 +msgid "Returned against Return Order" +msgstr "" + +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 +msgid "Sent to customer" +msgstr "" + +#: InvenTree/status_codes.py:142 +msgid "Returned from customer" +msgstr "" + +#: InvenTree/status_codes.py:149 +msgid "Production" +msgstr "" + +#: InvenTree/status_codes.py:191 +msgid "Return" +msgstr "" + +#: InvenTree/status_codes.py:194 +msgid "Repair" +msgstr "" + +#: InvenTree/status_codes.py:197 +msgid "Replace" +msgstr "" + +#: InvenTree/status_codes.py:200 +msgid "Refund" +msgstr "" + +#: InvenTree/status_codes.py:203 +msgid "Reject" +msgstr "" + +#: InvenTree/validators.py:31 InvenTree/validators.py:33 +msgid "Invalid physical unit" +msgstr "" + +#: InvenTree/validators.py:39 +msgid "Not a valid currency code" +msgstr "" + +#: InvenTree/validators.py:106 InvenTree/validators.py:122 +msgid "Overage value must not be negative" +msgstr "" + +#: InvenTree/validators.py:124 +msgid "Overage must not exceed 100%" +msgstr "" + +#: InvenTree/validators.py:131 +msgid "Invalid value for overage" +msgstr "" + +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 +msgid "Edit User Information" +msgstr "" + +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 +msgid "Set Password" +msgstr "" + +#: InvenTree/views.py:437 +msgid "Password fields must match" +msgstr "" + +#: InvenTree/views.py:445 +msgid "Wrong password provided" +msgstr "" + +#: InvenTree/views.py:642 templates/navbar.html:160 +msgid "System Information" +msgstr "" + +#: InvenTree/views.py:649 templates/navbar.html:171 +msgid "About InvenTree" +msgstr "" + +#: build/api.py:237 +msgid "Build must be cancelled before it can be deleted" +msgstr "" + +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/templates/build/build_base.html:27 +#: report/templates/report/inventree_build_order_base.html:105 +#: templates/email/build_order_completed.html:16 +#: templates/email/overdue_build_order.html:15 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 +msgid "Build Order" +msgstr "" + +#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/templates/build/index.html:8 build/templates/build/index.html:12 +#: order/templates/order/sales_order_detail.html:111 +#: order/templates/order/so_sidebar.html:13 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 +#: templates/InvenTree/search.html:141 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 +msgid "Build Orders" +msgstr "" + +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 +msgid "Invalid choice for parent build" +msgstr "" + +#: build/models.py:166 +msgid "Build Order Reference" +msgstr "" + +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 +#: report/templates/report/inventree_bill_of_materials_report.html:139 +#: report/templates/report/inventree_po_report_base.html:28 +#: report/templates/report/inventree_return_order_report_base.html:26 +#: report/templates/report/inventree_so_report_base.html:28 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 +#: templates/js/translated/pricing.js:386 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 +msgid "Reference" +msgstr "" + +#: build/models.py:178 +msgid "Brief description of the build (optional)" +msgstr "" + +#: build/models.py:186 build/templates/build/build_base.html:183 +#: build/templates/build/detail.html:87 +msgid "Parent Build" +msgstr "" + +#: build/models.py:187 +msgid "BuildOrder to which this build is allocated" +msgstr "" + +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 +#: 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:206 stock/serializers.py:614 +#: 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:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 +msgid "Part" +msgstr "" + +#: build/models.py:200 +msgid "Select part to build" +msgstr "" + +#: build/models.py:205 +msgid "Sales Order Reference" +msgstr "" + +#: build/models.py:209 +msgid "SalesOrder to which this build is allocated" +msgstr "" + +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 +msgid "Source Location" +msgstr "" + +#: build/models.py:218 +msgid "Select location to take stock from for this build (leave blank to take from any stock location)" +msgstr "" + +#: build/models.py:223 +msgid "Destination Location" +msgstr "" + +#: build/models.py:227 +msgid "Select location where the completed items will be stored" +msgstr "" + +#: build/models.py:231 +msgid "Build Quantity" +msgstr "" + +#: build/models.py:234 +msgid "Number of stock items to build" +msgstr "" + +#: build/models.py:238 +msgid "Completed items" +msgstr "" + +#: build/models.py:240 +msgid "Number of stock items which have been completed" +msgstr "" + +#: build/models.py:244 +msgid "Build Status" +msgstr "" + +#: build/models.py:248 +msgid "Build status code" +msgstr "" + +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 +msgid "Batch Code" +msgstr "" + +#: build/models.py:261 build/serializers.py:276 +msgid "Batch code for this build output" +msgstr "" + +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 +msgid "Creation Date" +msgstr "" + +#: build/models.py:268 +msgid "Target completion date" +msgstr "" + +#: build/models.py:269 +msgid "Target date for build completion. Build will be overdue after this date." +msgstr "" + +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 +msgid "Completion Date" +msgstr "" + +#: build/models.py:278 +msgid "completed by" +msgstr "" + +#: build/models.py:286 templates/js/translated/build.js:2192 +msgid "Issued by" +msgstr "" + +#: build/models.py:287 +msgid "User who issued this build order" +msgstr "" + +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 +#: report/templates/report/inventree_build_order_base.html:158 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 +msgid "Responsible" +msgstr "" + +#: build/models.py:296 +msgid "User or group responsible for this build order" +msgstr "" + +#: build/models.py:301 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 +msgid "External Link" +msgstr "" + +#: build/models.py:306 +msgid "Build Priority" +msgstr "" + +#: build/models.py:309 +msgid "Priority of this build order" +msgstr "" + +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 +#, python-brace-format +msgid "Build order {build} has been completed" +msgstr "" + +#: build/models.py:558 +msgid "A build order has been completed" +msgstr "" + +#: build/models.py:768 build/models.py:843 +msgid "No build output specified" +msgstr "" + +#: build/models.py:771 +msgid "Build output is already completed" +msgstr "" + +#: build/models.py:774 +msgid "Build output does not match Build Order" +msgstr "" + +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 +msgid "Quantity must be greater than zero" +msgstr "" + +#: build/models.py:852 build/serializers.py:223 +msgid "Quantity cannot be greater than the output quantity" +msgstr "" + +#: build/models.py:1266 +msgid "Build object" +msgstr "" + +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 +#: 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:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 +#: 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:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 +msgid "Quantity" +msgstr "" + +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 +msgid "Stock quantity to allocate to build" +msgstr "" + +#: build/models.py:1547 +msgid "Install into" +msgstr "" + +#: build/models.py:1548 +msgid "Destination stock item" +msgstr "" + +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 +msgid "Build Output" +msgstr "" + +#: build/serializers.py:167 +msgid "Build output does not match the parent build" +msgstr "" + +#: build/serializers.py:171 +msgid "Output part does not match BuildOrder part" +msgstr "" + +#: build/serializers.py:175 +msgid "This build output has already been completed" +msgstr "" + +#: build/serializers.py:186 +msgid "This build output is not fully allocated" +msgstr "" + +#: build/serializers.py:206 build/serializers.py:243 +msgid "Enter quantity for build output" +msgstr "" + +#: build/serializers.py:264 +msgid "Integer quantity required for trackable parts" +msgstr "" + +#: build/serializers.py:267 +msgid "Integer quantity required, as the bill of materials contains trackable parts" +msgstr "" + +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 +msgid "Serial Numbers" +msgstr "" + +#: build/serializers.py:283 +msgid "Enter serial numbers for build outputs" +msgstr "" + +#: build/serializers.py:296 +msgid "Auto Allocate Serial Numbers" +msgstr "" + +#: build/serializers.py:297 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "" + +#: build/serializers.py:332 stock/api.py:788 +msgid "The following serial numbers already exist or are invalid" +msgstr "" + +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +msgid "A list of build outputs must be provided" +msgstr "" + +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 +#: templates/js/translated/barcode.js:530 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 +msgid "Location" +msgstr "" + +#: build/serializers.py:422 +msgid "Stock location for scrapped outputs" +msgstr "" + +#: build/serializers.py:428 +msgid "Discard Allocations" +msgstr "" + +#: build/serializers.py:429 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "" + +#: build/serializers.py:434 +msgid "Reason for scrapping build output(s)" +msgstr "" + +#: build/serializers.py:494 +msgid "Location for completed build outputs" +msgstr "" + +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 +msgid "Status" +msgstr "" + +#: build/serializers.py:506 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:507 +msgid "Complete outputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:576 +msgid "Remove Allocated Stock" +msgstr "" + +#: build/serializers.py:577 +msgid "Subtract any stock which has already been allocated to this build" +msgstr "" + +#: build/serializers.py:583 +msgid "Remove Incomplete Outputs" +msgstr "" + +#: build/serializers.py:584 +msgid "Delete any build outputs which have not been completed" +msgstr "" + +#: build/serializers.py:611 +msgid "Not permitted" +msgstr "" + +#: build/serializers.py:612 +msgid "Accept as consumed by this build order" +msgstr "" + +#: build/serializers.py:613 +msgid "Deallocate before completing this build order" +msgstr "" + +#: build/serializers.py:635 +msgid "Overallocated Stock" +msgstr "" + +#: build/serializers.py:637 +msgid "How do you want to handle extra stock items assigned to the build order" +msgstr "" + +#: build/serializers.py:647 +msgid "Some stock items have been overallocated" +msgstr "" + +#: build/serializers.py:652 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:653 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:663 templates/js/translated/build.js:307 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:669 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:679 templates/js/translated/build.js:311 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:688 templates/js/translated/build.js:295 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:718 +msgid "Build Line" +msgstr "" + +#: build/serializers.py:728 +msgid "Build output" +msgstr "" + +#: build/serializers.py:736 +msgid "Build output must point to the same build" +msgstr "" + +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 +msgid "bom_item.part must point to the same part as the build order" +msgstr "" + +#: build/serializers.py:801 stock/serializers.py:1002 +msgid "Item must be in stock" +msgstr "" + +#: build/serializers.py:849 order/serializers.py:1153 +#, python-brace-format +msgid "Available quantity ({q}) exceeded" +msgstr "" + +#: build/serializers.py:855 +msgid "Build output must be specified for allocation of tracked parts" +msgstr "" + +#: build/serializers.py:862 +msgid "Build output cannot be specified for allocation of untracked parts" +msgstr "" + +#: build/serializers.py:886 order/serializers.py:1435 +msgid "Allocation items must be provided" +msgstr "" + +#: build/serializers.py:943 +msgid "Stock location where parts are to be sourced (leave blank to take from any location)" +msgstr "" + +#: build/serializers.py:951 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:952 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:957 +msgid "Interchangeable Stock" +msgstr "" + +#: build/serializers.py:958 +msgid "Stock items in multiple locations can be used interchangeably" +msgstr "" + +#: build/serializers.py:963 +msgid "Substitute Stock" +msgstr "" + +#: build/serializers.py:964 +msgid "Allow allocation of substitute parts" +msgstr "" + +#: build/serializers.py:969 +msgid "Optional Items" +msgstr "" + +#: build/serializers.py:970 +msgid "Allocate optional BOM items to build order" +msgstr "" + +#: build/tasks.py:149 +msgid "Stock required for build order" +msgstr "" + +#: build/tasks.py:166 +msgid "Overdue Build Order" +msgstr "" + +#: build/tasks.py:171 +#, python-brace-format +msgid "Build order {bo} is now overdue" +msgstr "" + +#: build/templates/build/build_base.html:18 +msgid "Part thumbnail" +msgstr "" + +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 +#: order/templates/order/order_base.html:29 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 +msgid "Barcode actions" +msgstr "" + +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 +#: order/templates/order/order_base.html:33 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 +msgid "Show QR Code" +msgstr "" + +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 +#: order/templates/order/order_base.html:36 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 +#: templates/js/translated/barcode.js:479 +#: templates/js/translated/barcode.js:484 +msgid "Unlink Barcode" +msgstr "" + +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 +#: order/templates/order/order_base.html:38 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 +msgid "Link Barcode" +msgstr "" + +#: build/templates/build/build_base.html:56 +#: order/templates/order/order_base.html:46 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 +msgid "Print actions" +msgstr "" + +#: build/templates/build/build_base.html:60 +msgid "Print build order report" +msgstr "" + +#: build/templates/build/build_base.html:67 +msgid "Build actions" +msgstr "" + +#: build/templates/build/build_base.html:71 +msgid "Edit Build" +msgstr "" + +#: build/templates/build/build_base.html:73 +msgid "Cancel Build" +msgstr "" + +#: build/templates/build/build_base.html:76 +msgid "Duplicate Build" +msgstr "" + +#: build/templates/build/build_base.html:79 +msgid "Delete Build" +msgstr "" + +#: build/templates/build/build_base.html:84 +#: build/templates/build/build_base.html:85 +msgid "Complete Build" +msgstr "" + +#: build/templates/build/build_base.html:107 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:117 +msgid "No build outputs have been created for this build order" +msgstr "" + +#: build/templates/build/build_base.html:124 +msgid "Build Order is ready to mark as completed" +msgstr "" + +#: build/templates/build/build_base.html:129 +msgid "Build Order cannot be completed as outstanding outputs remain" +msgstr "" + +#: build/templates/build/build_base.html:134 +msgid "Required build quantity has not yet been completed" +msgstr "" + +#: build/templates/build/build_base.html:139 +msgid "Stock has not been fully allocated to this Build Order" +msgstr "" + +#: build/templates/build/build_base.html:160 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 +msgid "Target Date" +msgstr "" + +#: build/templates/build/build_base.html:165 +#, python-format +msgid "This build was due on %(target)s" +msgstr "" + +#: build/templates/build/build_base.html:165 +#: build/templates/build/build_base.html:222 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 +msgid "Overdue" +msgstr "" + +#: build/templates/build/build_base.html:177 +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "" + +#: build/templates/build/build_base.html:190 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 +#: order/templates/order/sales_order_base.html:9 +#: order/templates/order/sales_order_base.html:28 +#: report/templates/report/inventree_build_order_base.html:135 +#: report/templates/report/inventree_so_report_base.html:14 +#: stock/templates/stock/item_base.html:369 +#: templates/email/overdue_sales_order.html:15 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 +msgid "Sales Order" +msgstr "" + +#: build/templates/build/build_base.html:197 +#: build/templates/build/detail.html:115 +#: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 +msgid "Issued By" +msgstr "" + +#: build/templates/build/build_base.html:211 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 +msgid "Priority" +msgstr "" + +#: build/templates/build/build_base.html:273 +msgid "Delete Build Order" +msgstr "" + +#: build/templates/build/build_base.html:283 +msgid "Build Order QR Code" +msgstr "" + +#: build/templates/build/build_base.html:295 +msgid "Link Barcode to Build Order" +msgstr "" + +#: build/templates/build/detail.html:15 +msgid "Build Details" +msgstr "" + +#: build/templates/build/detail.html:38 +msgid "Stock Source" +msgstr "" + +#: build/templates/build/detail.html:43 +msgid "Stock can be taken from any available location." +msgstr "" + +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 +msgid "Destination" +msgstr "" + +#: build/templates/build/detail.html:56 +msgid "Destination location not specified" +msgstr "" + +#: build/templates/build/detail.html:73 +msgid "Allocated Parts" +msgstr "" + +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 +msgid "Batch" +msgstr "" + +#: build/templates/build/detail.html:133 +#: order/templates/order/order_base.html:173 +#: order/templates/order/return_order_base.html:151 +#: order/templates/order/sales_order_base.html:186 +#: templates/js/translated/build.js:2184 +msgid "Created" +msgstr "" + +#: build/templates/build/detail.html:144 +msgid "No target date set" +msgstr "" + +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + +#: build/templates/build/detail.html:153 +msgid "Build not complete" +msgstr "" + +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 +msgid "Child Build Orders" +msgstr "" + +#: build/templates/build/detail.html:177 +msgid "Allocate Stock to Build" +msgstr "" + +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "" + +#: build/templates/build/detail.html:184 +msgid "Automatically allocate stock to build" +msgstr "" + +#: build/templates/build/detail.html:185 +msgid "Auto Allocate" +msgstr "" + +#: build/templates/build/detail.html:187 +msgid "Manually allocate stock to build" +msgstr "" + +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 +msgid "Allocate Stock" +msgstr "" + +#: build/templates/build/detail.html:191 +msgid "Order required parts" +msgstr "" + +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 +msgid "Order Parts" +msgstr "" + +#: build/templates/build/detail.html:210 +msgid "Incomplete Build Outputs" +msgstr "" + +#: build/templates/build/detail.html:214 +msgid "Create new build output" +msgstr "" + +#: build/templates/build/detail.html:215 +msgid "New Build Output" +msgstr "" + +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +msgid "Consumed Stock" +msgstr "" + +#: build/templates/build/detail.html:244 +msgid "Completed Build Outputs" +msgstr "" + +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 +#: company/templates/company/manufacturer_part_sidebar.html:9 +#: company/templates/company/sidebar.html:39 +#: order/templates/order/po_sidebar.html:9 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 +#: order/templates/order/return_order_sidebar.html:7 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 +#: stock/templates/stock/stock_sidebar.html:23 +msgid "Attachments" +msgstr "" + +#: build/templates/build/detail.html:271 +msgid "Build Notes" +msgstr "" + +#: build/templates/build/detail.html:422 +msgid "Allocation Complete" +msgstr "" + +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "" + +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 +msgid "New Build Order" +msgstr "" + +#: build/templates/build/sidebar.html:5 +msgid "Build Order Details" +msgstr "" + +#: build/templates/build/sidebar.html:10 +msgid "Incomplete Outputs" +msgstr "" + +#: common/files.py:63 +#, python-brace-format +msgid "Unsupported file format: {fmt}" +msgstr "" + +#: common/files.py:65 +msgid "Error reading file (invalid encoding)" +msgstr "" + +#: common/files.py:70 +msgid "Error reading file (invalid format)" +msgstr "" + +#: common/files.py:72 +msgid "Error reading file (incorrect dimension)" +msgstr "" + +#: common/files.py:74 +msgid "Error reading file (data could be corrupted)" +msgstr "" + +#: common/forms.py:13 +msgid "File" +msgstr "" + +#: common/forms.py:14 +msgid "Select file to upload" +msgstr "" + +#: common/forms.py:28 +msgid "{name.title()} File" +msgstr "" + +#: common/forms.py:29 +#, python-brace-format +msgid "Select {name} file to upload" +msgstr "" + +#: common/models.py:71 +msgid "Updated" +msgstr "" + +#: common/models.py:72 +msgid "Timestamp of last update" +msgstr "" + +#: common/models.py:119 +msgid "Unique project code" +msgstr "" + +#: common/models.py:126 +msgid "Project description" +msgstr "" + +#: common/models.py:648 +msgid "Settings key (must be unique - case insensitive)" +msgstr "" + +#: common/models.py:650 +msgid "Settings value" +msgstr "" + +#: common/models.py:691 +msgid "Chosen value is not a valid option" +msgstr "" + +#: common/models.py:708 +msgid "Value must be a boolean value" +msgstr "" + +#: common/models.py:719 +msgid "Value must be an integer value" +msgstr "" + +#: common/models.py:758 +msgid "Key string must be unique" +msgstr "" + +#: common/models.py:963 +msgid "No group" +msgstr "" + +#: common/models.py:988 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/models.py:990 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "" + +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 +msgid "Restart required" +msgstr "" + +#: common/models.py:1069 +msgid "A setting has been changed which requires a server restart" +msgstr "" + +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 +msgid "Server Instance Name" +msgstr "" + +#: common/models.py:1085 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:1090 +msgid "Use instance name" +msgstr "" + +#: common/models.py:1091 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:1097 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:1098 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:1104 company/models.py:101 company/models.py:102 +msgid "Company name" +msgstr "" + +#: common/models.py:1105 +msgid "Internal company name" +msgstr "" + +#: common/models.py:1110 +msgid "Base URL" +msgstr "" + +#: common/models.py:1111 +msgid "Base URL for server instance" +msgstr "" + +#: common/models.py:1118 +msgid "Default Currency" +msgstr "" + +#: common/models.py:1119 +msgid "Select base currency for pricing calculations" +msgstr "" + +#: common/models.py:1126 +msgid "Currency Update Interval" +msgstr "" + +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" + +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" +msgstr "" + +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "" + +#: common/models.py:1164 +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:1169 +msgid "Require confirm" +msgstr "" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "" + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "" + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" + +#: common/models.py:1197 +msgid "Automatic Backup" +msgstr "" + +#: common/models.py:1198 +msgid "Enable automatic backup of database and media files" +msgstr "" + +#: common/models.py:1204 +msgid "Auto Backup Interval" +msgstr "" + +#: common/models.py:1205 +msgid "Specify number of days between automated backup events" +msgstr "" + +#: common/models.py:1215 +msgid "Task Deletion Interval" +msgstr "" + +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1226 +msgid "Error Log Deletion Interval" +msgstr "" + +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1237 +msgid "Notification Deletion Interval" +msgstr "" + +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "" + +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" + +#: common/models.py:1255 +msgid "Barcode Input Delay" +msgstr "" + +#: common/models.py:1256 +msgid "Barcode input processing delay time" +msgstr "" + +#: common/models.py:1266 +msgid "Barcode Webcam Support" +msgstr "" + +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" +msgstr "" + +#: common/models.py:1273 +msgid "Part Revisions" +msgstr "" + +#: common/models.py:1274 +msgid "Enable revision field for Part" +msgstr "" + +#: common/models.py:1280 +msgid "IPN Regex" +msgstr "" + +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" +msgstr "" + +#: common/models.py:1285 +msgid "Allow Duplicate IPN" +msgstr "" + +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" +msgstr "" + +#: common/models.py:1292 +msgid "Allow Editing IPN" +msgstr "" + +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" +msgstr "" + +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" +msgstr "" + +#: common/models.py:1307 +msgid "Copy parameter data by default when duplicating a part" +msgstr "" + +#: common/models.py:1313 +msgid "Copy Part Test Data" +msgstr "" + +#: common/models.py:1314 +msgid "Copy test data by default when duplicating a part" +msgstr "" + +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" +msgstr "" + +#: common/models.py:1321 +msgid "Copy category parameter templates when creating a part" +msgstr "" + +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" +msgstr "" + +#: common/models.py:1328 +msgid "Parts are templates by default" +msgstr "" + +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" +msgstr "" + +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" +msgstr "" + +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" +msgstr "" + +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" +msgstr "" + +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" +msgstr "" + +#: common/models.py:1349 +msgid "Parts are purchaseable by default" +msgstr "" + +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" +msgstr "" + +#: common/models.py:1363 +msgid "Parts are trackable by default" +msgstr "" + +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" +msgstr "" + +#: common/models.py:1370 +msgid "Parts are virtual by default" +msgstr "" + +#: common/models.py:1376 +msgid "Show Import in Views" +msgstr "" + +#: common/models.py:1377 +msgid "Display the import wizard in some part views" +msgstr "" + +#: common/models.py:1383 +msgid "Show related parts" +msgstr "" + +#: common/models.py:1384 +msgid "Display related parts for a part" +msgstr "" + +#: common/models.py:1390 +msgid "Initial Stock Data" +msgstr "" + +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" +msgstr "" + +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" +msgstr "" + +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" +msgstr "" + +#: common/models.py:1404 +msgid "Part Name Display Format" +msgstr "" + +#: common/models.py:1405 +msgid "Format to display the part name" +msgstr "" + +#: common/models.py:1412 +msgid "Part Category Default Icon" +msgstr "" + +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1436 +msgid "Maximum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1437 +msgid "Maximum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1447 +msgid "Use Supplier Pricing" +msgstr "" + +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" +msgstr "" + +#: common/models.py:1454 +msgid "Purchase History Override" +msgstr "" + +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" +msgstr "" + +#: common/models.py:1461 +msgid "Use Stock Item Pricing" +msgstr "" + +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" +msgstr "" + +#: common/models.py:1468 +msgid "Stock Item Pricing Age" +msgstr "" + +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" +msgstr "" + +#: common/models.py:1479 +msgid "Use Variant Pricing" +msgstr "" + +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" +msgstr "" + +#: common/models.py:1486 +msgid "Active Variants Only" +msgstr "" + +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" +msgstr "" + +#: common/models.py:1493 +msgid "Pricing Rebuild Interval" +msgstr "" + +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" +msgstr "" + +#: common/models.py:1504 +msgid "Internal Prices" +msgstr "" + +#: common/models.py:1505 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:1511 +msgid "Internal Price Override" +msgstr "" + +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" +msgstr "" + +#: common/models.py:1518 +msgid "Enable label printing" +msgstr "" + +#: common/models.py:1519 +msgid "Enable label printing from the web interface" +msgstr "" + +#: common/models.py:1525 +msgid "Label Image DPI" +msgstr "" + +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" +msgstr "" + +#: common/models.py:1535 +msgid "Enable Reports" +msgstr "" + +#: common/models.py:1536 +msgid "Enable generation of reports" +msgstr "" + +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:1543 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" +msgstr "" + +#: common/models.py:1550 +msgid "Default page size for PDF reports" +msgstr "" + +#: common/models.py:1556 +msgid "Enable Test Reports" +msgstr "" + +#: common/models.py:1557 +msgid "Enable generation of test reports" +msgstr "" + +#: common/models.py:1563 +msgid "Attach Test Reports" +msgstr "" + +#: common/models.py:1564 +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +msgstr "" + +#: common/models.py:1570 +msgid "Globally Unique Serials" +msgstr "" + +#: common/models.py:1571 +msgid "Serial numbers for stock items must be globally unique" +msgstr "" + +#: common/models.py:1577 +msgid "Autofill Serial Numbers" +msgstr "" + +#: common/models.py:1578 +msgid "Autofill serial numbers in forms" +msgstr "" + +#: common/models.py:1584 +msgid "Delete Depleted Stock" +msgstr "" + +#: common/models.py:1585 +msgid "Determines default behaviour when a stock item is depleted" +msgstr "" + +#: common/models.py:1591 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:1592 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" +msgstr "" + +#: common/models.py:1598 +msgid "Enable stock expiry functionality" +msgstr "" + +#: common/models.py:1604 +msgid "Sell Expired Stock" +msgstr "" + +#: common/models.py:1605 +msgid "Allow sale of expired stock" +msgstr "" + +#: common/models.py:1611 +msgid "Stock Stale Time" +msgstr "" + +#: common/models.py:1612 +msgid "Number of days stock items are considered stale before expiring" +msgstr "" + +#: common/models.py:1619 +msgid "Build Expired Stock" +msgstr "" + +#: common/models.py:1620 +msgid "Allow building with expired stock" +msgstr "" + +#: common/models.py:1626 +msgid "Stock Ownership Control" +msgstr "" + +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" +msgstr "" + +#: common/models.py:1633 +msgid "Stock Location Default Icon" +msgstr "" + +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1646 +msgid "Build Order Reference Pattern" +msgstr "" + +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" +msgstr "" + +#: common/models.py:1653 +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" +msgstr "" + +#: common/models.py:1660 +msgid "Return Order Reference Pattern" +msgstr "" + +#: common/models.py:1661 +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" +msgstr "" + +#: common/models.py:1668 +msgid "Allow editing of return orders after they have been completed" +msgstr "" + +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" +msgstr "" + +#: common/models.py:1675 +msgid "Required pattern for generating Sales Order reference field" +msgstr "" + +#: common/models.py:1681 +msgid "Sales Order Default Shipment" +msgstr "" + +#: common/models.py:1682 +msgid "Enable creation of default shipment with sales orders" +msgstr "" + +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" +msgstr "" + +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" +msgstr "" + +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" +msgstr "" + +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" +msgstr "" + +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" +msgstr "" + +#: common/models.py:1752 +msgid "Mail twice" +msgstr "" + +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" +msgstr "" + +#: common/models.py:1759 +msgid "Password twice" +msgstr "" + +#: common/models.py:1760 +msgid "On signup ask users twice for their password" +msgstr "" + +#: common/models.py:1766 +msgid "Allowed domains" +msgstr "" + +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgstr "" + +#: common/models.py:1773 +msgid "Group on signup" +msgstr "" + +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" +msgstr "" + +#: common/models.py:1780 +msgid "Enforce MFA" +msgstr "" + +#: common/models.py:1781 +msgid "Users must use multifactor security." +msgstr "" + +#: common/models.py:1787 +msgid "Check plugins on startup" +msgstr "" + +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" +msgstr "" + +#: common/models.py:1796 +msgid "Enable URL integration" +msgstr "" + +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" +msgstr "" + +#: common/models.py:1804 +msgid "Enable navigation integration" +msgstr "" + +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" +msgstr "" + +#: common/models.py:1812 +msgid "Enable app integration" +msgstr "" + +#: common/models.py:1813 +msgid "Enable plugins to add apps" +msgstr "" + +#: common/models.py:1820 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:1821 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1828 +msgid "Enable event integration" +msgstr "" + +#: common/models.py:1829 +msgid "Enable plugins to respond to internal events" +msgstr "" + +#: common/models.py:1836 +msgid "Enable project codes" +msgstr "" + +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" +msgstr "" + +#: common/models.py:1843 +msgid "Stocktake Functionality" +msgstr "" + +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgstr "" + +#: common/models.py:1850 +msgid "Exclude External Locations" +msgstr "" + +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "" + +#: common/models.py:1857 +msgid "Automatic Stocktake Period" +msgstr "" + +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" +msgstr "" + +#: common/models.py:1867 +msgid "Report Deletion Interval" +msgstr "" + +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" +msgstr "" + +#: common/models.py:1925 +msgid "Hide inactive parts" +msgstr "" + +#: common/models.py:1926 +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "" + +#: common/models.py:1932 +msgid "Show subscribed parts" +msgstr "" + +#: common/models.py:1933 +msgid "Show subscribed parts on the homepage" +msgstr "" + +#: common/models.py:1939 +msgid "Show subscribed categories" +msgstr "" + +#: common/models.py:1940 +msgid "Show subscribed part categories on the homepage" +msgstr "" + +#: common/models.py:1946 +msgid "Show latest parts" +msgstr "" + +#: common/models.py:1947 +msgid "Show latest parts on the homepage" +msgstr "" + +#: common/models.py:1953 +msgid "Show unvalidated BOMs" +msgstr "" + +#: common/models.py:1954 +msgid "Show BOMs that await validation on the homepage" +msgstr "" + +#: common/models.py:1960 +msgid "Show recent stock changes" +msgstr "" + +#: common/models.py:1961 +msgid "Show recently changed stock items on the homepage" +msgstr "" + +#: common/models.py:1967 +msgid "Show low stock" +msgstr "" + +#: common/models.py:1968 +msgid "Show low stock items on the homepage" +msgstr "" + +#: common/models.py:1974 +msgid "Show depleted stock" +msgstr "" + +#: common/models.py:1975 +msgid "Show depleted stock items on the homepage" +msgstr "" + +#: common/models.py:1981 +msgid "Show needed stock" +msgstr "" + +#: common/models.py:1982 +msgid "Show stock items needed for builds on the homepage" +msgstr "" + +#: common/models.py:1988 +msgid "Show expired stock" +msgstr "" + +#: common/models.py:1989 +msgid "Show expired stock items on the homepage" +msgstr "" + +#: common/models.py:1995 +msgid "Show stale stock" +msgstr "" + +#: common/models.py:1996 +msgid "Show stale stock items on the homepage" +msgstr "" + +#: common/models.py:2002 +msgid "Show pending builds" +msgstr "" + +#: common/models.py:2003 +msgid "Show pending builds on the homepage" +msgstr "" + +#: common/models.py:2009 +msgid "Show overdue builds" +msgstr "" + +#: common/models.py:2010 +msgid "Show overdue builds on the homepage" +msgstr "" + +#: common/models.py:2016 +msgid "Show outstanding POs" +msgstr "" + +#: common/models.py:2017 +msgid "Show outstanding POs on the homepage" +msgstr "" + +#: common/models.py:2023 +msgid "Show overdue POs" +msgstr "" + +#: common/models.py:2024 +msgid "Show overdue POs on the homepage" +msgstr "" + +#: common/models.py:2030 +msgid "Show outstanding SOs" +msgstr "" + +#: common/models.py:2031 +msgid "Show outstanding SOs on the homepage" +msgstr "" + +#: common/models.py:2037 +msgid "Show overdue SOs" +msgstr "" + +#: common/models.py:2038 +msgid "Show overdue SOs on the homepage" +msgstr "" + +#: common/models.py:2044 +msgid "Show pending SO shipments" +msgstr "" + +#: common/models.py:2045 +msgid "Show pending SO shipments on the homepage" +msgstr "" + +#: common/models.py:2051 +msgid "Show News" +msgstr "" + +#: common/models.py:2052 +msgid "Show news on the homepage" +msgstr "" + +#: common/models.py:2058 +msgid "Inline label display" +msgstr "" + +#: common/models.py:2059 +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2065 +msgid "Default label printer" +msgstr "" + +#: common/models.py:2066 +msgid "Configure which label printer should be selected by default" +msgstr "" + +#: common/models.py:2072 +msgid "Inline report display" +msgstr "" + +#: common/models.py:2073 +msgid "Display PDF reports in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2079 +msgid "Search Parts" +msgstr "" + +#: common/models.py:2080 +msgid "Display parts in search preview window" +msgstr "" + +#: common/models.py:2086 +msgid "Search Supplier Parts" +msgstr "" + +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" +msgstr "" + +#: common/models.py:2093 +msgid "Search Manufacturer Parts" +msgstr "" + +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" +msgstr "" + +#: common/models.py:2100 +msgid "Hide Inactive Parts" +msgstr "" + +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" +msgstr "" + +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" +msgstr "" + +#: common/models.py:2121 +msgid "Hide Unavailable Stock Items" +msgstr "" + +#: common/models.py:2122 +msgid "Exclude stock items which are not available from the search preview window" +msgstr "" + +#: common/models.py:2128 +msgid "Search Locations" +msgstr "" + +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" +msgstr "" + +#: common/models.py:2177 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 +msgid "Unit price at specified quantity" +msgstr "" + +#: common/models.py:2511 common/models.py:2689 +msgid "Endpoint" +msgstr "" + +#: common/models.py:2512 +msgid "Endpoint at which this webhook is received" +msgstr "" + +#: common/models.py:2521 +msgid "Name for this webhook" +msgstr "" + +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 +msgid "Active" +msgstr "" + +#: common/models.py:2527 +msgid "Is this webhook active" +msgstr "" + +#: common/models.py:2541 users/models.py:132 +msgid "Token" +msgstr "" + +#: common/models.py:2542 +msgid "Token for access" +msgstr "" + +#: common/models.py:2549 +msgid "Secret" +msgstr "" + +#: common/models.py:2550 +msgid "Shared secret for HMAC" +msgstr "" + +#: common/models.py:2656 +msgid "Message ID" +msgstr "" + +#: common/models.py:2657 +msgid "Unique identifier for this message" +msgstr "" + +#: common/models.py:2665 +msgid "Host" +msgstr "" + +#: common/models.py:2666 +msgid "Host from which this message was received" +msgstr "" + +#: common/models.py:2673 +msgid "Header" +msgstr "" + +#: common/models.py:2674 +msgid "Header of this message" +msgstr "" + +#: common/models.py:2680 +msgid "Body" +msgstr "" + +#: common/models.py:2681 +msgid "Body of this message" +msgstr "" + +#: common/models.py:2690 +msgid "Endpoint on which this message was received" +msgstr "" + +#: common/models.py:2695 +msgid "Worked on" +msgstr "" + +#: common/models.py:2696 +msgid "Was the work on this message finished?" +msgstr "" + +#: common/models.py:2850 +msgid "Id" +msgstr "" + +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 +msgid "Title" +msgstr "" + +#: common/models.py:2866 templates/js/translated/news.js:60 +msgid "Published" +msgstr "" + +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 +msgid "Author" +msgstr "" + +#: common/models.py:2876 templates/js/translated/news.js:52 +msgid "Summary" +msgstr "" + +#: common/models.py:2881 +msgid "Read" +msgstr "" + +#: common/models.py:2882 +msgid "Was this news item read?" +msgstr "" + +#: common/models.py:2901 company/models.py:139 part/models.py:881 +#: report/templates/report/inventree_bill_of_materials_report.html:126 +#: report/templates/report/inventree_bill_of_materials_report.html:148 +#: report/templates/report/inventree_return_order_report_base.html:35 +#: stock/templates/stock/item_base.html:133 templates/503.html:31 +#: templates/hover_image.html:7 templates/hover_image.html:9 +#: templates/modals.html:6 +msgid "Image" +msgstr "" + +#: common/models.py:2902 +msgid "Image file" +msgstr "" + +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 +#, python-brace-format +msgid "New {verbose_name}" +msgstr "" + +#: common/notifications.py:292 +msgid "A new order has been created and assigned to you" +msgstr "" + +#: common/notifications.py:298 common/notifications.py:305 +msgid "Items Received" +msgstr "" + +#: common/notifications.py:300 +msgid "Items have been received against a purchase order" +msgstr "" + +#: common/notifications.py:307 +msgid "Items have been received against a return order" +msgstr "" + +#: common/notifications.py:419 +msgid "Error raised by plugin" +msgstr "" + +#: common/views.py:85 order/templates/order/order_wizard/po_upload.html:51 +#: order/templates/order/purchase_order_detail.html:24 order/views.py:118 +#: part/templates/part/import_wizard/part_upload.html:58 part/views.py:108 +#: templates/patterns/wizard/upload.html:37 +msgid "Upload File" +msgstr "" + +#: common/views.py:86 order/templates/order/order_wizard/match_fields.html:52 +#: order/views.py:119 +#: part/templates/part/import_wizard/ajax_match_fields.html:45 +#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:109 +#: templates/patterns/wizard/match_fields.html:51 +msgid "Match Fields" +msgstr "" + +#: common/views.py:87 +msgid "Match Items" +msgstr "" + +#: common/views.py:420 +msgid "Fields matching failed" +msgstr "" + +#: common/views.py:481 +msgid "Parts imported" +msgstr "" + +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 +#: order/templates/order/order_wizard/match_parts.html:19 +#: order/templates/order/order_wizard/po_upload.html:49 +#: part/templates/part/import_wizard/match_fields.html:27 +#: part/templates/part/import_wizard/match_references.html:19 +#: part/templates/part/import_wizard/part_upload.html:56 +#: templates/patterns/wizard/match_fields.html:26 +#: templates/patterns/wizard/upload.html:35 +msgid "Previous Step" +msgstr "" + +#: company/models.py:106 +msgid "Company description" +msgstr "" + +#: company/models.py:107 +msgid "Description of the company" +msgstr "" + +#: company/models.py:113 company/templates/company/company_base.html:100 +#: templates/InvenTree/settings/plugin_settings.html:54 +#: templates/js/translated/company.js:522 +msgid "Website" +msgstr "" + +#: company/models.py:114 +msgid "Company website URL" +msgstr "" + +#: company/models.py:118 +msgid "Phone number" +msgstr "" + +#: company/models.py:119 +msgid "Contact phone number" +msgstr "" + +#: company/models.py:122 +msgid "Contact email address" +msgstr "" + +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 +msgid "Contact" +msgstr "" + +#: company/models.py:126 +msgid "Point of contact" +msgstr "" + +#: company/models.py:128 +msgid "Link to external company information" +msgstr "" + +#: company/models.py:142 +msgid "is customer" +msgstr "" + +#: company/models.py:142 +msgid "Do you sell items to this company?" +msgstr "" + +#: company/models.py:144 +msgid "is supplier" +msgstr "" + +#: company/models.py:144 +msgid "Do you purchase items from this company?" +msgstr "" + +#: company/models.py:146 +msgid "is manufacturer" +msgstr "" + +#: company/models.py:146 +msgid "Does this company manufacture parts?" +msgstr "" + +#: company/models.py:153 +msgid "Default currency used for this company" +msgstr "" + +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 +msgid "Company" +msgstr "" + +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 +msgid "Base Part" +msgstr "" + +#: company/models.py:416 company/models.py:692 +msgid "Select part" +msgstr "" + +#: company/models.py:427 company/templates/company/company_base.html:76 +#: company/templates/company/manufacturer_part.html:90 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 +msgid "Manufacturer" +msgstr "" + +#: company/models.py:428 +msgid "Select manufacturer" +msgstr "" + +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 +msgid "MPN" +msgstr "" + +#: company/models.py:435 +msgid "Manufacturer Part Number" +msgstr "" + +#: company/models.py:441 +msgid "URL for external manufacturer part link" +msgstr "" + +#: company/models.py:447 +msgid "Manufacturer part description" +msgstr "" + +#: company/models.py:494 company/models.py:518 company/models.py:713 +#: 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:525 +msgid "Parameter name" +msgstr "" + +#: company/models.py:531 +#: report/templates/report/inventree_test_report_base.html:104 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 +msgid "Value" +msgstr "" + +#: company/models.py:532 +msgid "Parameter value" +msgstr "" + +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 +msgid "Units" +msgstr "" + +#: company/models.py:539 +msgid "Parameter units" +msgstr "" + +#: company/models.py:633 +msgid "Pack units must be compatible with the base part units" +msgstr "" + +#: company/models.py:639 +msgid "Pack units must be greater than zero" +msgstr "" + +#: company/models.py:655 +msgid "Linked manufacturer part must reference the same base part" +msgstr "" + +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 +#: templates/email/overdue_purchase_order.html:16 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 +#: templates/js/translated/pricing.js:498 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 +msgid "Supplier" +msgstr "" + +#: company/models.py:700 +msgid "Select supplier" +msgstr "" + +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 +#: templates/js/translated/pricing.js:510 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 +msgid "SKU" +msgstr "" + +#: company/models.py:706 part/serializers.py:436 +msgid "Supplier stock keeping unit" +msgstr "" + +#: company/models.py:714 +msgid "Select manufacturer part" +msgstr "" + +#: company/models.py:720 +msgid "URL for external supplier part link" +msgstr "" + +#: company/models.py:726 +msgid "Supplier part description" +msgstr "" + +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_bill_of_materials_report.html:140 +#: report/templates/report/inventree_po_report_base.html:32 +#: report/templates/report/inventree_return_order_report_base.html:27 +#: report/templates/report/inventree_slr_report.html:105 +#: report/templates/report/inventree_so_report_base.html:32 +#: stock/serializers.py:501 +msgid "Note" +msgstr "" + +#: company/models.py:735 part/models.py:1889 +msgid "base cost" +msgstr "" + +#: company/models.py:735 part/models.py:1889 +msgid "Minimum charge (e.g. stocking fee)" +msgstr "" + +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 +msgid "Packaging" +msgstr "" + +#: company/models.py:737 +msgid "Part packaging" +msgstr "" + +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 +msgid "Pack Quantity" +msgstr "" + +#: company/models.py:742 +msgid "Total quantity supplied in a single pack. Leave empty for single items." +msgstr "" + +#: company/models.py:758 part/models.py:1891 +msgid "multiple" +msgstr "" + +#: company/models.py:758 +msgid "Order multiple" +msgstr "" + +#: company/models.py:767 +msgid "Quantity available from supplier" +msgstr "" + +#: company/models.py:771 +msgid "Availability Updated" +msgstr "" + +#: company/models.py:772 +msgid "Date of last update of availability data" +msgstr "" + +#: company/serializers.py:153 +msgid "Default currency used for this supplier" +msgstr "" + +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 +msgid "Create Purchase Order" +msgstr "" + +#: company/templates/company/company_base.html:27 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:32 +msgid "Edit company information" +msgstr "" + +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:37 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 +msgid "Delete Company" +msgstr "" + +#: company/templates/company/company_base.html:47 +#: company/templates/company/manufacturer_part.html:51 +#: company/templates/company/supplier_part.html:83 +#: part/templates/part/part_thumb.html:20 +#: report/templates/report/inventree_build_order_base.html:98 +#: report/templates/report/inventree_po_report_base.html:40 +#: report/templates/report/inventree_so_report_base.html:40 +#: report/templates/report/inventree_test_report_base.html:84 +#: report/templates/report/inventree_test_report_base.html:163 +msgid "Part image" +msgstr "" + +#: company/templates/company/company_base.html:55 +#: part/templates/part/part_thumb.html:12 +msgid "Upload new image" +msgstr "" + +#: company/templates/company/company_base.html:58 +#: part/templates/part/part_thumb.html:14 +msgid "Download image from URL" +msgstr "" + +#: company/templates/company/company_base.html:60 +#: part/templates/part/part_thumb.html:16 +msgid "Delete image" +msgstr "" + +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 +#: templates/email/overdue_sales_order.html:16 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 +msgid "Customer" +msgstr "" + +#: company/templates/company/company_base.html:111 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 +msgid "Remove Image" +msgstr "" + +#: company/templates/company/company_base.html:206 +msgid "Remove associated image from this company" +msgstr "" + +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 +#: templates/InvenTree/settings/user.html:88 +#: templates/InvenTree/settings/user_sso.html:43 +msgid "Remove" +msgstr "" + +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 +msgid "Upload Image" +msgstr "" + +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 +msgid "Download Image" +msgstr "" + +#: company/templates/company/detail.html:15 +#: company/templates/company/manufacturer_part_sidebar.html:7 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 +msgid "Supplier Parts" +msgstr "" + +#: company/templates/company/detail.html:19 +msgid "Create new supplier part" +msgstr "" + +#: company/templates/company/detail.html:20 +#: company/templates/company/manufacturer_part.html:123 +#: part/templates/part/detail.html:356 +msgid "New Supplier Part" +msgstr "" + +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 +msgid "Manufacturer Parts" +msgstr "" + +#: company/templates/company/detail.html:45 +msgid "Create new manufacturer part" +msgstr "" + +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 +msgid "New Manufacturer Part" +msgstr "" + +#: company/templates/company/detail.html:65 +msgid "Supplier Stock" +msgstr "" + +#: company/templates/company/detail.html:75 +#: company/templates/company/sidebar.html:12 +#: company/templates/company/supplier_part_sidebar.html:7 +#: order/templates/order/order_base.html:13 +#: order/templates/order/purchase_orders.html:8 +#: order/templates/order/purchase_orders.html:12 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 +msgid "Purchase Orders" +msgstr "" + +#: company/templates/company/detail.html:79 +#: order/templates/order/purchase_orders.html:17 +msgid "Create new purchase order" +msgstr "" + +#: company/templates/company/detail.html:80 +#: order/templates/order/purchase_orders.html:18 +msgid "New Purchase Order" +msgstr "" + +#: company/templates/company/detail.html:101 +#: company/templates/company/sidebar.html:21 +#: order/templates/order/sales_order_base.html:13 +#: order/templates/order/sales_orders.html:8 +#: order/templates/order/sales_orders.html:15 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 +msgid "Sales Orders" +msgstr "" + +#: company/templates/company/detail.html:105 +#: order/templates/order/sales_orders.html:20 +msgid "Create new sales order" +msgstr "" + +#: company/templates/company/detail.html:106 +#: order/templates/order/sales_orders.html:21 +msgid "New Sales Order" +msgstr "" + +#: company/templates/company/detail.html:126 +msgid "Assigned Stock" +msgstr "" + +#: company/templates/company/detail.html:142 +#: company/templates/company/sidebar.html:29 +#: order/templates/order/return_order_base.html:13 +#: order/templates/order/return_orders.html:8 +#: order/templates/order/return_orders.html:15 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 +msgid "Return Orders" +msgstr "" + +#: company/templates/company/detail.html:146 +#: order/templates/order/return_orders.html:20 +msgid "Create new return order" +msgstr "" + +#: company/templates/company/detail.html:147 +#: order/templates/order/return_orders.html:21 +msgid "New Return Order" +msgstr "" + +#: company/templates/company/detail.html:168 +msgid "Company Notes" +msgstr "" + +#: company/templates/company/detail.html:183 +msgid "Company Contacts" +msgstr "" + +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 +msgid "Add Contact" +msgstr "" + +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "" + +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 +#: templates/InvenTree/search.html:180 templates/navbar.html:49 +msgid "Manufacturers" +msgstr "" + +#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 +msgid "Order part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:39 +#: templates/js/translated/company.js:1333 +msgid "Edit manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:43 +#: templates/js/translated/company.js:1334 +msgid "Delete manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:65 +#: company/templates/company/supplier_part.html:97 +msgid "Internal Part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:95 +msgid "No manufacturer information available" +msgstr "" + +#: company/templates/company/manufacturer_part.html:119 +#: company/templates/company/supplier_part.html:15 company/views.py:31 +#: part/admin.py:60 part/templates/part/part_sidebar.html:33 +#: templates/InvenTree/search.html:190 templates/navbar.html:48 +msgid "Suppliers" +msgstr "" + +#: company/templates/company/manufacturer_part.html:156 +#: company/templates/company/manufacturer_part_sidebar.html:5 +#: part/templates/part/category_sidebar.html:20 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 +#: templates/InvenTree/settings/category.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 +msgid "Add Parameter" +msgstr "" + +#: company/templates/company/sidebar.html:6 +msgid "Manufactured Parts" +msgstr "" + +#: company/templates/company/sidebar.html:10 +msgid "Supplied Parts" +msgstr "" + +#: company/templates/company/sidebar.html:16 +msgid "Supplied Stock Items" +msgstr "" + +#: company/templates/company/sidebar.html:25 +msgid "Assigned Stock Items" +msgstr "" + +#: company/templates/company/sidebar.html:33 +msgid "Contacts" +msgstr "" + +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + +#: company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 +msgid "Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 +msgid "Supplier part actions" +msgstr "" + +#: company/templates/company/supplier_part.html:55 +#: company/templates/company/supplier_part.html:56 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 +msgid "Order Part" +msgstr "" + +#: company/templates/company/supplier_part.html:60 +#: company/templates/company/supplier_part.html:61 +msgid "Update Availability" +msgstr "" + +#: company/templates/company/supplier_part.html:63 +#: company/templates/company/supplier_part.html:64 +#: templates/js/translated/company.js:294 +msgid "Edit Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:68 +#: company/templates/company/supplier_part.html:69 +#: templates/js/translated/company.js:269 +msgid "Duplicate Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:73 +msgid "Delete Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:74 +msgid "Delete Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:133 +msgid "No supplier information available" +msgstr "" + +#: company/templates/company/supplier_part.html:206 +msgid "Supplier Part Stock" +msgstr "" + +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 +msgid "Create new stock item" +msgstr "" + +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 +msgid "New Stock Item" +msgstr "" + +#: company/templates/company/supplier_part.html:223 +msgid "Supplier Part Orders" +msgstr "" + +#: company/templates/company/supplier_part.html:246 +msgid "Pricing Information" +msgstr "" + +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 +#: templates/js/translated/pricing.js:684 +msgid "Add Price Break" +msgstr "" + +#: company/templates/company/supplier_part.html:276 +msgid "Supplier Part QR Code" +msgstr "" + +#: company/templates/company/supplier_part.html:287 +msgid "Link Barcode to Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:359 +msgid "Update Part Availability" +msgstr "" + +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 +#: stock/templates/stock/location_sidebar.html:7 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 +msgid "Stock Items" +msgstr "" + +#: company/templates/company/supplier_part_sidebar.html:9 +msgid "Supplier Part Pricing" +msgstr "" + +#: company/views.py:32 +msgid "New Supplier" +msgstr "" + +#: company/views.py:38 +msgid "New Manufacturer" +msgstr "" + +#: company/views.py:43 templates/InvenTree/search.html:210 +#: templates/navbar.html:60 +msgid "Customers" +msgstr "" + +#: company/views.py:44 +msgid "New Customer" +msgstr "" + +#: company/views.py:51 templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/views.py:52 +msgid "New Company" +msgstr "" + +#: label/models.py:117 +msgid "Label name" +msgstr "" + +#: label/models.py:124 +msgid "Label description" +msgstr "" + +#: label/models.py:131 +msgid "Label" +msgstr "" + +#: label/models.py:132 +msgid "Label template file" +msgstr "" + +#: label/models.py:138 report/models.py:311 +msgid "Enabled" +msgstr "" + +#: label/models.py:139 +msgid "Label template is enabled" +msgstr "" + +#: label/models.py:144 +msgid "Width [mm]" +msgstr "" + +#: label/models.py:145 +msgid "Label width, specified in mm" +msgstr "" + +#: label/models.py:151 +msgid "Height [mm]" +msgstr "" + +#: label/models.py:152 +msgid "Label height, specified in mm" +msgstr "" + +#: label/models.py:158 report/models.py:304 +msgid "Filename Pattern" +msgstr "" + +#: label/models.py:159 +msgid "Pattern for generating label filenames" +msgstr "" + +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 +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 "" + +#: order/admin.py:29 order/models.py:72 +#: report/templates/report/inventree_po_report_base.html:31 +#: report/templates/report/inventree_so_report_base.html:31 +#: templates/js/translated/order.js:327 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 +msgid "Total Price" +msgstr "" + +#: order/api.py:231 +msgid "No matching purchase order found" +msgstr "" + +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 +#: order/templates/order/order_base.html:9 +#: order/templates/order/order_base.html:18 +#: report/templates/report/inventree_po_report_base.html:14 +#: stock/templates/stock/item_base.html:176 +#: templates/email/overdue_purchase_order.html:15 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 +msgid "Purchase Order" +msgstr "" + +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 +#: 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:278 +#: templates/js/translated/stock.js:2912 +msgid "Return Order" +msgstr "" + +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 +msgid "Unknown" +msgstr "" + +#: order/models.py:73 +msgid "Total price for this order" +msgstr "" + +#: order/models.py:78 order/serializers.py:50 +msgid "Order Currency" +msgstr "" + +#: order/models.py:80 order/serializers.py:51 +msgid "Currency for this order (leave blank to use company default)" +msgstr "" + +#: order/models.py:206 +msgid "Contact does not match selected company" +msgstr "" + +#: order/models.py:226 +msgid "Order description (optional)" +msgstr "" + +#: order/models.py:231 +msgid "Select project code for this order" +msgstr "" + +#: order/models.py:234 order/models.py:1093 order/models.py:1451 +msgid "Link to external page" +msgstr "" + +#: order/models.py:239 +msgid "Expected date for order delivery. Order will be overdue after this date." +msgstr "" + +#: order/models.py:248 +msgid "Created By" +msgstr "" + +#: order/models.py:255 +msgid "User or group responsible for this order" +msgstr "" + +#: order/models.py:265 +msgid "Point of contact for this order" +msgstr "" + +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 +msgid "Order reference" +msgstr "" + +#: order/models.py:372 order/models.py:794 +msgid "Purchase order status" +msgstr "" + +#: order/models.py:387 +msgid "Company from which the items are being ordered" +msgstr "" + +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 +msgid "Supplier Reference" +msgstr "" + +#: order/models.py:395 +msgid "Supplier order reference code" +msgstr "" + +#: order/models.py:402 +msgid "received by" +msgstr "" + +#: order/models.py:407 order/models.py:1759 +msgid "Issue Date" +msgstr "" + +#: order/models.py:408 order/models.py:1760 +msgid "Date order was issued" +msgstr "" + +#: order/models.py:414 order/models.py:1766 +msgid "Date order was completed" +msgstr "" + +#: order/models.py:449 +msgid "Part supplier must match PO supplier" +msgstr "" + +#: order/models.py:610 +msgid "Quantity must be a positive number" +msgstr "" + +#: order/models.py:783 +msgid "Company to which the items are being sold" +msgstr "" + +#: order/models.py:802 order/models.py:1753 +msgid "Customer Reference " +msgstr "" + +#: order/models.py:802 order/models.py:1754 +msgid "Customer order reference code" +msgstr "" + +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 +msgid "Shipment Date" +msgstr "" + +#: order/models.py:811 +msgid "shipped by" +msgstr "" + +#: order/models.py:860 +msgid "Order cannot be completed as no parts have been assigned" +msgstr "" + +#: order/models.py:864 +msgid "Only an open order can be marked as complete" +msgstr "" + +#: order/models.py:867 templates/js/translated/sales_order.js:503 +msgid "Order cannot be completed as there are incomplete shipments" +msgstr "" + +#: order/models.py:870 +msgid "Order cannot be completed as there are incomplete line items" +msgstr "" + +#: order/models.py:1074 +msgid "Item quantity" +msgstr "" + +#: order/models.py:1086 +msgid "Line item reference" +msgstr "" + +#: order/models.py:1088 +msgid "Line item notes" +msgstr "" + +#: order/models.py:1099 +msgid "Target date for this line item (leave blank to use the target date from the order)" +msgstr "" + +#: order/models.py:1117 +msgid "Line item description (optional)" +msgstr "" + +#: order/models.py:1122 +msgid "Context" +msgstr "" + +#: order/models.py:1123 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:1132 +msgid "Unit price" +msgstr "" + +#: order/models.py:1162 +msgid "Supplier part must match supplier" +msgstr "" + +#: order/models.py:1170 +msgid "deleted" +msgstr "" + +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 +msgid "Order" +msgstr "" + +#: order/models.py:1194 +msgid "Supplier part" +msgstr "" + +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 +msgid "Received" +msgstr "" + +#: order/models.py:1202 +msgid "Number of items received" +msgstr "" + +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 +msgid "Purchase Price" +msgstr "" + +#: order/models.py:1210 +msgid "Unit purchase price" +msgstr "" + +#: order/models.py:1223 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:1288 +msgid "Virtual part cannot be assigned to a sales order" +msgstr "" + +#: order/models.py:1293 +msgid "Only salable parts can be assigned to a sales order" +msgstr "" + +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 +msgid "Sale Price" +msgstr "" + +#: order/models.py:1320 +msgid "Unit sale price" +msgstr "" + +#: order/models.py:1330 +msgid "Shipped quantity" +msgstr "" + +#: order/models.py:1406 +msgid "Date of shipment" +msgstr "" + +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 +msgid "Delivery Date" +msgstr "" + +#: order/models.py:1412 +msgid "Date of delivery of shipment" +msgstr "" + +#: order/models.py:1419 +msgid "Checked By" +msgstr "" + +#: order/models.py:1420 +msgid "User who checked this shipment" +msgstr "" + +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 +msgid "Shipment" +msgstr "" + +#: order/models.py:1428 +msgid "Shipment number" +msgstr "" + +#: order/models.py:1436 +msgid "Tracking Number" +msgstr "" + +#: order/models.py:1437 +msgid "Shipment tracking information" +msgstr "" + +#: order/models.py:1444 +msgid "Invoice Number" +msgstr "" + +#: order/models.py:1445 +msgid "Reference number for associated invoice" +msgstr "" + +#: order/models.py:1467 +msgid "Shipment has already been sent" +msgstr "" + +#: order/models.py:1470 +msgid "Shipment has no allocated stock items" +msgstr "" + +#: order/models.py:1583 order/models.py:1585 +msgid "Stock item has not been assigned" +msgstr "" + +#: order/models.py:1591 +msgid "Cannot allocate stock item to a line with a different part" +msgstr "" + +#: order/models.py:1593 +msgid "Cannot allocate stock to a line without a part" +msgstr "" + +#: order/models.py:1596 +msgid "Allocation quantity cannot exceed stock quantity" +msgstr "" + +#: order/models.py:1606 order/serializers.py:1146 +msgid "Quantity must be 1 for serialized stock item" +msgstr "" + +#: order/models.py:1609 +msgid "Sales order does not match shipment" +msgstr "" + +#: order/models.py:1610 +msgid "Shipment does not match sales order" +msgstr "" + +#: order/models.py:1618 +msgid "Line" +msgstr "" + +#: order/models.py:1627 +msgid "Sales order shipment reference" +msgstr "" + +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 +msgid "Item" +msgstr "" + +#: order/models.py:1641 +msgid "Select stock item to allocate" +msgstr "" + +#: order/models.py:1644 +msgid "Enter stock allocation quantity" +msgstr "" + +#: order/models.py:1723 +msgid "Return Order reference" +msgstr "" + +#: order/models.py:1737 +msgid "Company from which items are being returned" +msgstr "" + +#: order/models.py:1748 +msgid "Return order status" +msgstr "" + +#: order/models.py:1895 +msgid "Only serialized items can be assigned to a Return Order" +msgstr "" + +#: order/models.py:1911 +msgid "Select item to return from customer" +msgstr "" + +#: order/models.py:1916 +msgid "Received Date" +msgstr "" + +#: order/models.py:1917 +msgid "The date this this return item was received" +msgstr "" + +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 +msgid "Outcome" +msgstr "" + +#: order/models.py:1928 +msgid "Outcome for this line item" +msgstr "" + +#: order/models.py:1934 +msgid "Cost associated with return or repair for this line item" +msgstr "" + +#: order/serializers.py:258 +msgid "Order cannot be cancelled" +msgstr "" + +#: order/serializers.py:273 order/serializers.py:1164 +msgid "Allow order to be closed with incomplete line items" +msgstr "" + +#: order/serializers.py:283 order/serializers.py:1174 +msgid "Order has incomplete line items" +msgstr "" + +#: order/serializers.py:396 +msgid "Order is not open" +msgstr "" + +#: order/serializers.py:414 +msgid "Purchase price currency" +msgstr "" + +#: order/serializers.py:432 +msgid "Supplier part must be specified" +msgstr "" + +#: order/serializers.py:437 +msgid "Purchase order must be specified" +msgstr "" + +#: order/serializers.py:443 +msgid "Supplier must match purchase order" +msgstr "" + +#: order/serializers.py:444 +msgid "Purchase order must match supplier" +msgstr "" + +#: order/serializers.py:482 order/serializers.py:1250 +msgid "Line Item" +msgstr "" + +#: order/serializers.py:488 +msgid "Line item does not match purchase order" +msgstr "" + +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 +msgid "Select destination location for received items" +msgstr "" + +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 +msgid "Enter batch code for incoming stock items" +msgstr "" + +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 +msgid "Enter serial numbers for incoming stock items" +msgstr "" + +#: order/serializers.py:538 templates/js/translated/barcode.js:52 +msgid "Barcode" +msgstr "" + +#: order/serializers.py:539 +msgid "Scanned barcode" +msgstr "" + +#: order/serializers.py:555 +msgid "Barcode is already in use" +msgstr "" + +#: order/serializers.py:579 +msgid "An integer quantity must be provided for trackable parts" +msgstr "" + +#: order/serializers.py:633 order/serializers.py:1638 +msgid "Line items must be provided" +msgstr "" + +#: order/serializers.py:650 +msgid "Destination location must be specified" +msgstr "" + +#: order/serializers.py:661 +msgid "Supplied barcode values must be unique" +msgstr "" + +#: order/serializers.py:986 +msgid "Sale price currency" +msgstr "" + +#: order/serializers.py:1043 +msgid "No shipment details provided" +msgstr "" + +#: order/serializers.py:1107 order/serializers.py:1259 +msgid "Line item is not associated with this order" +msgstr "" + +#: order/serializers.py:1129 +msgid "Quantity must be positive" +msgstr "" + +#: order/serializers.py:1272 +msgid "Enter serial numbers to allocate" +msgstr "" + +#: order/serializers.py:1294 order/serializers.py:1418 +msgid "Shipment has already been shipped" +msgstr "" + +#: order/serializers.py:1297 order/serializers.py:1421 +msgid "Shipment is not associated with this order" +msgstr "" + +#: order/serializers.py:1351 +msgid "No match found for the following serial numbers" +msgstr "" + +#: order/serializers.py:1361 +msgid "The following serial numbers are already allocated" +msgstr "" + +#: order/serializers.py:1591 +msgid "Return order line item" +msgstr "" + +#: order/serializers.py:1597 +msgid "Line item does not match return order" +msgstr "" + +#: order/serializers.py:1600 +msgid "Line item has already been received" +msgstr "" + +#: order/serializers.py:1631 +msgid "Items can only be received against orders which are in progress" +msgstr "" + +#: order/serializers.py:1710 +msgid "Line price currency" +msgstr "" + +#: order/tasks.py:26 +msgid "Overdue Purchase Order" +msgstr "" + +#: order/tasks.py:31 +#, python-brace-format +msgid "Purchase order {po} is now overdue" +msgstr "" + +#: order/tasks.py:87 +msgid "Overdue Sales Order" +msgstr "" + +#: order/tasks.py:92 +#, python-brace-format +msgid "Sales order {so} is now overdue" +msgstr "" + +#: order/templates/order/order_base.html:51 +msgid "Print purchase order report" +msgstr "" + +#: order/templates/order/order_base.html:53 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 +msgid "Export order to file" +msgstr "" + +#: order/templates/order/order_base.html:59 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 +msgid "Order actions" +msgstr "" + +#: order/templates/order/order_base.html:64 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 +msgid "Edit order" +msgstr "" + +#: order/templates/order/order_base.html:68 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 +msgid "Cancel order" +msgstr "" + +#: order/templates/order/order_base.html:73 +msgid "Duplicate order" +msgstr "" + +#: order/templates/order/order_base.html:79 +#: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 +#: order/templates/order/return_order_base.html:83 +#: order/templates/order/sales_order_base.html:83 +#: order/templates/order/sales_order_base.html:84 +msgid "Issue Order" +msgstr "" + +#: order/templates/order/order_base.html:83 +#: order/templates/order/return_order_base.html:86 +msgid "Mark order as complete" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:91 +msgid "Supplier part thumbnail" +msgstr "" + +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 +msgid "Order Reference" +msgstr "" + +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 +msgid "Order Status" +msgstr "" + +#: order/templates/order/order_base.html:141 +msgid "No suppplier information available" +msgstr "" + +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 +msgid "Completed Line Items" +msgstr "" + +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 +msgid "Incomplete" +msgstr "" + +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 +#: report/templates/report/inventree_build_order_base.html:121 +msgid "Issued" +msgstr "" + +#: order/templates/order/order_base.html:224 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 +msgid "Total cost could not be calculated" +msgstr "" + +#: order/templates/order/order_base.html:318 +msgid "Purchase Order QR Code" +msgstr "" + +#: order/templates/order/order_base.html:330 +msgid "Link Barcode to Purchase Order" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:9 +#: part/templates/part/import_wizard/ajax_match_fields.html:9 +#: part/templates/part/import_wizard/match_fields.html:9 +#: templates/patterns/wizard/match_fields.html:8 +msgid "Missing selections for the following required columns" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:20 +#: part/templates/part/import_wizard/ajax_match_fields.html:20 +#: part/templates/part/import_wizard/match_fields.html:20 +#: templates/patterns/wizard/match_fields.html:19 +msgid "Duplicate selections found, see below. Fix them then retry submitting." +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:29 +#: order/templates/order/order_wizard/match_parts.html:21 +#: part/templates/part/import_wizard/match_fields.html:29 +#: part/templates/part/import_wizard/match_references.html:21 +#: templates/patterns/wizard/match_fields.html:28 +msgid "Submit Selections" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:35 +#: part/templates/part/import_wizard/ajax_match_fields.html:28 +#: part/templates/part/import_wizard/match_fields.html:35 +#: templates/patterns/wizard/match_fields.html:34 +msgid "File Fields" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:42 +#: part/templates/part/import_wizard/ajax_match_fields.html:35 +#: part/templates/part/import_wizard/match_fields.html:42 +#: templates/patterns/wizard/match_fields.html:41 +msgid "Remove column" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:60 +#: part/templates/part/import_wizard/ajax_match_fields.html:53 +#: part/templates/part/import_wizard/match_fields.html:60 +#: templates/patterns/wizard/match_fields.html:59 +msgid "Duplicate selection" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:71 +#: order/templates/order/order_wizard/match_parts.html:52 +#: part/templates/part/import_wizard/ajax_match_fields.html:64 +#: part/templates/part/import_wizard/ajax_match_references.html:42 +#: part/templates/part/import_wizard/match_fields.html:71 +#: part/templates/part/import_wizard/match_references.html:49 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 +#: templates/patterns/wizard/match_fields.html:70 +msgid "Remove row" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:12 +#: part/templates/part/import_wizard/ajax_match_references.html:12 +#: part/templates/part/import_wizard/match_references.html:12 +msgid "Errors exist in the submitted data" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:28 +#: part/templates/part/import_wizard/ajax_match_references.html:21 +#: part/templates/part/import_wizard/match_references.html:28 +msgid "Row" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:29 +msgid "Select Supplier Part" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:8 +msgid "Return to Orders" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:13 +msgid "Upload File for Purchase Order" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:14 +msgid "Order is already processed. Files cannot be uploaded." +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:27 +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: part/templates/part/import_wizard/part_upload.html:26 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + +#: order/templates/order/po_sidebar.html:5 +#: order/templates/order/return_order_detail.html:18 +#: order/templates/order/so_sidebar.html:5 +#: report/templates/report/inventree_po_report_base.html:22 +#: report/templates/report/inventree_return_order_report_base.html:19 +#: report/templates/report/inventree_so_report_base.html:22 +msgid "Line Items" +msgstr "" + +#: order/templates/order/po_sidebar.html:7 +msgid "Received Stock" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:18 +msgid "Purchase Order Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:27 +#: order/templates/order/return_order_detail.html:24 +#: order/templates/order/sales_order_detail.html:24 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 +msgid "Add Line Item" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:31 +#: order/templates/order/purchase_order_detail.html:32 +#: order/templates/order/return_order_detail.html:28 +#: order/templates/order/return_order_detail.html:29 +msgid "Receive Line Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:50 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:74 +msgid "Received Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 +msgid "Order Notes" +msgstr "" + +#: order/templates/order/return_order_base.html:18 +#: order/templates/order/sales_order_base.html:18 +msgid "Customer logo thumbnail" +msgstr "" + +#: order/templates/order/return_order_base.html:60 +msgid "Print return order report" +msgstr "" + +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 +msgid "Print packing list" +msgstr "" + +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 +msgid "Customer Reference" +msgstr "" + +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:99 +#: part/templates/part/part_pricing.html:114 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 +msgid "Total Cost" +msgstr "" + +#: order/templates/order/return_order_base.html:263 +msgid "Return Order QR Code" +msgstr "" + +#: order/templates/order/return_order_base.html:275 +msgid "Link Barcode to Return Order" +msgstr "" + +#: order/templates/order/return_order_sidebar.html:5 +msgid "Order Details" +msgstr "" + +#: order/templates/order/sales_order_base.html:60 +msgid "Print sales order report" +msgstr "" + +#: order/templates/order/sales_order_base.html:88 +#: order/templates/order/sales_order_base.html:89 +msgid "Ship Items" +msgstr "" + +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 +msgid "Complete Sales Order" +msgstr "" + +#: order/templates/order/sales_order_base.html:131 +msgid "This Sales Order has not been fully allocated" +msgstr "" + +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 +#: order/templates/order/so_sidebar.html:11 +msgid "Completed Shipments" +msgstr "" + +#: order/templates/order/sales_order_base.html:312 +msgid "Sales Order QR Code" +msgstr "" + +#: order/templates/order/sales_order_base.html:324 +msgid "Link Barcode to Sales Order" +msgstr "" + +#: order/templates/order/sales_order_detail.html:18 +msgid "Sales Order Items" +msgstr "" + +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 +msgid "Pending Shipments" +msgstr "" + +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +msgid "Actions" +msgstr "" + +#: order/templates/order/sales_order_detail.html:80 +msgid "New Shipment" +msgstr "" + +#: order/views.py:120 +msgid "Match Supplier Parts" +msgstr "" + +#: order/views.py:389 +msgid "Sales order not found" +msgstr "" + +#: order/views.py:395 +msgid "Price not found" +msgstr "" + +#: order/views.py:398 +#, python-brace-format +msgid "Updated {part} unit-price to {price}" +msgstr "" + +#: order/views.py:403 +#, python-brace-format +msgid "Updated {part} unit-price to {price} and quantity to {qty}" +msgstr "" + +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 +msgid "Part ID" +msgstr "" + +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 +msgid "Part Name" +msgstr "" + +#: part/admin.py:35 part/stocktake.py:219 +msgid "Part Description" +msgstr "" + +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 +msgid "IPN" +msgstr "" + +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 +msgid "Revision" +msgstr "" + +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 +msgid "Keywords" +msgstr "" + +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 +msgid "Category ID" +msgstr "" + +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 +msgid "Category Name" +msgstr "" + +#: part/admin.py:44 part/admin.py:194 +msgid "Default Location ID" +msgstr "" + +#: part/admin.py:45 +msgid "Default Supplier ID" +msgstr "" + +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 +msgid "Variant Of" +msgstr "" + +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 +msgid "Minimum Stock" +msgstr "" + +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 +msgid "In Stock" +msgstr "" + +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: part/admin.py:63 part/templates/part/part_sidebar.html:27 +msgid "Used In" +msgstr "" + +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 +msgid "Building" +msgstr "" + +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 +msgid "Minimum Cost" +msgstr "" + +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 +msgid "Maximum Cost" +msgstr "" + +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 +msgid "Parent ID" +msgstr "" + +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 +msgid "Parent Name" +msgstr "" + +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 +msgid "Category Path" +msgstr "" + +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 +msgid "Parts" +msgstr "" + +#: part/admin.py:261 +msgid "BOM Level" +msgstr "" + +#: part/admin.py:263 +msgid "BOM Item ID" +msgstr "" + +#: part/admin.py:267 +msgid "Parent IPN" +msgstr "" + +#: part/admin.py:270 part/models.py:3679 +msgid "Part IPN" +msgstr "" + +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 +msgid "Minimum Price" +msgstr "" + +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 +msgid "Maximum Price" +msgstr "" + +#: part/api.py:505 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:525 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:543 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:629 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:774 +msgid "Valid" +msgstr "" + +#: part/api.py:775 +msgid "Validate entire Bill of Materials" +msgstr "" + +#: part/api.py:781 +msgid "This option must be selected" +msgstr "" + +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 +msgid "Default Location" +msgstr "" + +#: part/bom.py:175 templates/email/low_stock_notification.html:16 +msgid "Total Stock" +msgstr "" + +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 +msgid "Available Stock" +msgstr "" + +#: part/forms.py:48 +msgid "Input quantity for price calculation" +msgstr "" + +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 +#: part/templates/part/part_app_base.html:10 +msgid "Part Category" +msgstr "" + +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 +msgid "Part Categories" +msgstr "" + +#: part/models.py:98 +msgid "Default location for parts in this category" +msgstr "" + +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 +msgid "Structural" +msgstr "" + +#: part/models.py:105 +msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." +msgstr "" + +#: part/models.py:109 +msgid "Default keywords" +msgstr "" + +#: part/models.py:109 +msgid "Default keywords for parts in this category" +msgstr "" + +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 +msgid "Icon" +msgstr "" + +#: part/models.py:115 stock/models.py:143 +msgid "Icon (optional)" +msgstr "" + +#: part/models.py:134 +msgid "You cannot make this part category structural because some parts are already assigned to it!" +msgstr "" + +#: part/models.py:451 +msgid "Invalid choice for parent part" +msgstr "" + +#: part/models.py:494 part/models.py:497 +#, python-brace-format +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" + +#: part/models.py:506 +#, python-brace-format +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" + +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 +msgid "Stock item with this serial number already exists" +msgstr "" + +#: part/models.py:770 +msgid "Duplicate IPN not allowed in part settings" +msgstr "" + +#: part/models.py:775 +msgid "Part with this Name, IPN and Revision already exists." +msgstr "" + +#: part/models.py:789 +msgid "Parts cannot be assigned to structural part categories!" +msgstr "" + +#: part/models.py:813 part/models.py:3676 +msgid "Part name" +msgstr "" + +#: part/models.py:819 +msgid "Is Template" +msgstr "" + +#: part/models.py:820 +msgid "Is this part a template part?" +msgstr "" + +#: part/models.py:830 +msgid "Is this part a variant of another part?" +msgstr "" + +#: part/models.py:837 +msgid "Part description (optional)" +msgstr "" + +#: part/models.py:843 +msgid "Part keywords to improve visibility in search results" +msgstr "" + +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 +msgid "Category" +msgstr "" + +#: part/models.py:851 +msgid "Part category" +msgstr "" + +#: part/models.py:857 +msgid "Internal Part Number" +msgstr "" + +#: part/models.py:862 +msgid "Part revision or version number" +msgstr "" + +#: part/models.py:888 +msgid "Where is this item normally stored?" +msgstr "" + +#: part/models.py:933 part/templates/part/part_base.html:376 +msgid "Default Supplier" +msgstr "" + +#: part/models.py:934 +msgid "Default supplier part" +msgstr "" + +#: part/models.py:941 +msgid "Default Expiry" +msgstr "" + +#: part/models.py:942 +msgid "Expiry time (in days) for stock items of this part" +msgstr "" + +#: part/models.py:949 +msgid "Minimum allowed stock level" +msgstr "" + +#: part/models.py:956 +msgid "Units of measure for this part" +msgstr "" + +#: part/models.py:965 +msgid "Can this part be built from other parts?" +msgstr "" + +#: part/models.py:971 +msgid "Can this part be used to build other parts?" +msgstr "" + +#: part/models.py:977 +msgid "Does this part have tracking for unique items?" +msgstr "" + +#: part/models.py:982 +msgid "Can this part be purchased from external suppliers?" +msgstr "" + +#: part/models.py:987 +msgid "Can this part be sold to customers?" +msgstr "" + +#: part/models.py:992 +msgid "Is this part active?" +msgstr "" + +#: part/models.py:997 +msgid "Is this a virtual part, such as a software product or license?" +msgstr "" + +#: part/models.py:999 +msgid "BOM checksum" +msgstr "" + +#: part/models.py:999 +msgid "Stored BOM checksum" +msgstr "" + +#: part/models.py:1002 +msgid "BOM checked by" +msgstr "" + +#: part/models.py:1004 +msgid "BOM checked date" +msgstr "" + +#: part/models.py:1008 +msgid "Creation User" +msgstr "" + +#: part/models.py:1014 +msgid "Owner responsible for this part" +msgstr "" + +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 +msgid "Last Stocktake" +msgstr "" + +#: part/models.py:1891 +msgid "Sell multiple" +msgstr "" + +#: part/models.py:2857 +msgid "Currency used to cache pricing calculations" +msgstr "" + +#: part/models.py:2874 +msgid "Minimum BOM Cost" +msgstr "" + +#: part/models.py:2875 +msgid "Minimum cost of component parts" +msgstr "" + +#: part/models.py:2880 +msgid "Maximum BOM Cost" +msgstr "" + +#: part/models.py:2881 +msgid "Maximum cost of component parts" +msgstr "" + +#: part/models.py:2886 +msgid "Minimum Purchase Cost" +msgstr "" + +#: part/models.py:2887 +msgid "Minimum historical purchase cost" +msgstr "" + +#: part/models.py:2892 +msgid "Maximum Purchase Cost" +msgstr "" + +#: part/models.py:2893 +msgid "Maximum historical purchase cost" +msgstr "" + +#: part/models.py:2898 +msgid "Minimum Internal Price" +msgstr "" + +#: part/models.py:2899 +msgid "Minimum cost based on internal price breaks" +msgstr "" + +#: part/models.py:2904 +msgid "Maximum Internal Price" +msgstr "" + +#: part/models.py:2905 +msgid "Maximum cost based on internal price breaks" +msgstr "" + +#: part/models.py:2910 +msgid "Minimum Supplier Price" +msgstr "" + +#: part/models.py:2911 +msgid "Minimum price of part from external suppliers" +msgstr "" + +#: part/models.py:2916 +msgid "Maximum Supplier Price" +msgstr "" + +#: part/models.py:2917 +msgid "Maximum price of part from external suppliers" +msgstr "" + +#: part/models.py:2922 +msgid "Minimum Variant Cost" +msgstr "" + +#: part/models.py:2923 +msgid "Calculated minimum cost of variant parts" +msgstr "" + +#: part/models.py:2928 +msgid "Maximum Variant Cost" +msgstr "" + +#: part/models.py:2929 +msgid "Calculated maximum cost of variant parts" +msgstr "" + +#: part/models.py:2935 +msgid "Calculated overall minimum cost" +msgstr "" + +#: part/models.py:2941 +msgid "Calculated overall maximum cost" +msgstr "" + +#: part/models.py:2946 +msgid "Minimum Sale Price" +msgstr "" + +#: part/models.py:2947 +msgid "Minimum sale price based on price breaks" +msgstr "" + +#: part/models.py:2952 +msgid "Maximum Sale Price" +msgstr "" + +#: part/models.py:2953 +msgid "Maximum sale price based on price breaks" +msgstr "" + +#: part/models.py:2958 +msgid "Minimum Sale Cost" +msgstr "" + +#: part/models.py:2959 +msgid "Minimum historical sale price" +msgstr "" + +#: part/models.py:2964 +msgid "Maximum Sale Cost" +msgstr "" + +#: part/models.py:2965 +msgid "Maximum historical sale price" +msgstr "" + +#: part/models.py:2984 +msgid "Part for stocktake" +msgstr "" + +#: part/models.py:2989 +msgid "Item Count" +msgstr "" + +#: part/models.py:2990 +msgid "Number of individual stock entries at time of stocktake" +msgstr "" + +#: part/models.py:2997 +msgid "Total available stock at time of stocktake" +msgstr "" + +#: part/models.py:3001 part/models.py:3081 +#: part/templates/part/part_scheduling.html:13 +#: report/templates/report/inventree_test_report_base.html:106 +#: templates/InvenTree/settings/plugin_settings.html:37 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 +msgid "Date" +msgstr "" + +#: part/models.py:3002 +msgid "Date stocktake was performed" +msgstr "" + +#: part/models.py:3010 +msgid "Additional notes" +msgstr "" + +#: part/models.py:3018 +msgid "User who performed this stocktake" +msgstr "" + +#: part/models.py:3023 +msgid "Minimum Stock Cost" +msgstr "" + +#: part/models.py:3024 +msgid "Estimated minimum cost of stock on hand" +msgstr "" + +#: part/models.py:3029 +msgid "Maximum Stock Cost" +msgstr "" + +#: part/models.py:3030 +msgid "Estimated maximum cost of stock on hand" +msgstr "" + +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 +msgid "Report" +msgstr "" + +#: part/models.py:3089 +msgid "Stocktake report file (generated internally)" +msgstr "" + +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 +msgid "Part Count" +msgstr "" + +#: part/models.py:3095 +msgid "Number of parts covered by stocktake" +msgstr "" + +#: part/models.py:3103 +msgid "User who requested this stocktake report" +msgstr "" + +#: part/models.py:3239 +msgid "Test templates can only be created for trackable parts" +msgstr "" + +#: part/models.py:3256 +msgid "Test with this name already exists for this part" +msgstr "" + +#: part/models.py:3276 templates/js/translated/part.js:2863 +msgid "Test Name" +msgstr "" + +#: part/models.py:3277 +msgid "Enter a name for the test" +msgstr "" + +#: part/models.py:3282 +msgid "Test Description" +msgstr "" + +#: part/models.py:3283 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 +msgid "Required" +msgstr "" + +#: part/models.py:3289 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:3294 templates/js/translated/part.js:2880 +msgid "Requires Value" +msgstr "" + +#: part/models.py:3295 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:3300 templates/js/translated/part.js:2887 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:3301 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:3346 +msgid "Checkbox parameters cannot have units" +msgstr "" + +#: part/models.py:3351 +msgid "Checkbox parameters cannot have choices" +msgstr "" + +#: part/models.py:3369 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3385 +msgid "Parameter template name must be unique" +msgstr "" + +#: part/models.py:3400 +msgid "Parameter Name" +msgstr "" + +#: part/models.py:3406 +msgid "Physical units for this parameter" +msgstr "" + +#: part/models.py:3416 +msgid "Parameter description" +msgstr "" + +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 +msgid "Checkbox" +msgstr "" + +#: part/models.py:3423 +msgid "Is this parameter a checkbox?" +msgstr "" + +#: part/models.py:3428 templates/js/translated/part.js:1633 +msgid "Choices" +msgstr "" + +#: part/models.py:3429 +msgid "Valid choices for this parameter (comma-separated)" +msgstr "" + +#: part/models.py:3503 +msgid "Invalid choice for parameter value" +msgstr "" + +#: part/models.py:3545 +msgid "Parent Part" +msgstr "" + +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 +msgid "Parameter Template" +msgstr "" + +#: part/models.py:3555 +msgid "Data" +msgstr "" + +#: part/models.py:3555 +msgid "Parameter Value" +msgstr "" + +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 +msgid "Default Value" +msgstr "" + +#: part/models.py:3631 +msgid "Default Parameter Value" +msgstr "" + +#: part/models.py:3668 +msgid "Part ID or part name" +msgstr "" + +#: part/models.py:3672 +msgid "Unique part ID value" +msgstr "" + +#: part/models.py:3680 +msgid "Part IPN value" +msgstr "" + +#: part/models.py:3683 +msgid "Level" +msgstr "" + +#: part/models.py:3684 +msgid "BOM level" +msgstr "" + +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 +msgid "Select parent part" +msgstr "" + +#: part/models.py:3779 +msgid "Sub part" +msgstr "" + +#: part/models.py:3780 +msgid "Select part to be used in BOM" +msgstr "" + +#: part/models.py:3786 +msgid "BOM quantity for this BOM item" +msgstr "" + +#: part/models.py:3791 +msgid "This BOM item is optional" +msgstr "" + +#: part/models.py:3797 +msgid "This BOM item is consumable (it is not tracked in build orders)" +msgstr "" + +#: part/models.py:3801 part/templates/part/upload_bom.html:55 +msgid "Overage" +msgstr "" + +#: part/models.py:3802 +msgid "Estimated build wastage quantity (absolute or percentage)" +msgstr "" + +#: part/models.py:3805 +msgid "BOM item reference" +msgstr "" + +#: part/models.py:3808 +msgid "BOM item notes" +msgstr "" + +#: part/models.py:3812 +msgid "Checksum" +msgstr "" + +#: part/models.py:3812 +msgid "BOM line checksum" +msgstr "" + +#: part/models.py:3817 templates/js/translated/table_filters.js:174 +msgid "Validated" +msgstr "" + +#: part/models.py:3818 +msgid "This BOM item has been validated" +msgstr "" + +#: part/models.py:3823 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:3824 +msgid "This BOM item is inherited by BOMs for variant parts" +msgstr "" + +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 +msgid "Allow Variants" +msgstr "" + +#: part/models.py:3830 +msgid "Stock items for variant parts can be used for this BOM item" +msgstr "" + +#: part/models.py:3916 stock/models.py:613 +msgid "Quantity must be integer value for trackable parts" +msgstr "" + +#: part/models.py:3925 part/models.py:3927 +msgid "Sub part must be specified" +msgstr "" + +#: part/models.py:4052 +msgid "BOM Item Substitute" +msgstr "" + +#: part/models.py:4073 +msgid "Substitute part cannot be the same as the master part" +msgstr "" + +#: part/models.py:4086 +msgid "Parent BOM item" +msgstr "" + +#: part/models.py:4094 +msgid "Substitute part" +msgstr "" + +#: part/models.py:4109 +msgid "Part 1" +msgstr "" + +#: part/models.py:4113 +msgid "Part 2" +msgstr "" + +#: part/models.py:4113 +msgid "Select Related Part" +msgstr "" + +#: part/models.py:4130 +msgid "Part relationship cannot be created between a part and itself" +msgstr "" + +#: part/models.py:4134 +msgid "Duplicate relationship already exists" +msgstr "" + +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:346 +msgid "No parts selected" +msgstr "" + +#: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 +msgid "Select manufacturer (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:447 +msgid "Manufacturer part number" +msgstr "" + +#: part/serializers.py:453 +msgid "Selected company is not a valid supplier" +msgstr "" + +#: part/serializers.py:460 +msgid "Selected company is not a valid manufacturer" +msgstr "" + +#: part/serializers.py:471 +msgid "Manufacturer part matching this MPN already exists" +msgstr "" + +#: part/serializers.py:479 +msgid "Supplier part matching this SKU already exists" +msgstr "" + +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 +msgid "Duplicate Part" +msgstr "" + +#: part/serializers.py:738 +msgid "Copy initial data from another Part" +msgstr "" + +#: part/serializers.py:743 templates/js/translated/part.js:102 +msgid "Initial Stock" +msgstr "" + +#: part/serializers.py:743 +msgid "Create Part with initial stock quantity" +msgstr "" + +#: part/serializers.py:748 +msgid "Supplier Information" +msgstr "" + +#: part/serializers.py:748 +msgid "Add initial supplier information for this part" +msgstr "" + +#: part/serializers.py:754 +msgid "Copy Category Parameters" +msgstr "" + +#: part/serializers.py:755 +msgid "Copy parameter templates from selected part category" +msgstr "" + +#: part/serializers.py:961 +msgid "Limit stocktake report to a particular part, and any variant parts" +msgstr "" + +#: part/serializers.py:967 +msgid "Limit stocktake report to a particular part category, and any child categories" +msgstr "" + +#: part/serializers.py:973 +msgid "Limit stocktake report to a particular stock location, and any child locations" +msgstr "" + +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 +msgid "Generate Report" +msgstr "" + +#: part/serializers.py:985 +msgid "Generate report file containing calculated stocktake data" +msgstr "" + +#: part/serializers.py:990 +msgid "Update Parts" +msgstr "" + +#: part/serializers.py:991 +msgid "Update specified parts with calculated stocktake data" +msgstr "" + +#: part/serializers.py:998 +msgid "Stocktake functionality is not enabled" +msgstr "" + +#: part/serializers.py:1087 +msgid "Update" +msgstr "" + +#: part/serializers.py:1088 +msgid "Update pricing for this part" +msgstr "" + +#: part/serializers.py:1395 +msgid "Select part to copy BOM from" +msgstr "" + +#: part/serializers.py:1403 +msgid "Remove Existing Data" +msgstr "" + +#: part/serializers.py:1404 +msgid "Remove existing BOM items before copying" +msgstr "" + +#: part/serializers.py:1409 +msgid "Include Inherited" +msgstr "" + +#: part/serializers.py:1410 +msgid "Include BOM items which are inherited from templated parts" +msgstr "" + +#: part/serializers.py:1415 +msgid "Skip Invalid Rows" +msgstr "" + +#: part/serializers.py:1416 +msgid "Enable this option to skip invalid rows" +msgstr "" + +#: part/serializers.py:1421 +msgid "Copy Substitute Parts" +msgstr "" + +#: part/serializers.py:1422 +msgid "Copy substitute parts when duplicate BOM items" +msgstr "" + +#: part/serializers.py:1462 +msgid "Clear Existing BOM" +msgstr "" + +#: part/serializers.py:1463 +msgid "Delete existing BOM items before uploading" +msgstr "" + +#: part/serializers.py:1493 +msgid "No part column specified" +msgstr "" + +#: part/serializers.py:1537 +msgid "Multiple matching parts found" +msgstr "" + +#: part/serializers.py:1540 +msgid "No matching part found" +msgstr "" + +#: part/serializers.py:1543 +msgid "Part is not designated as a component" +msgstr "" + +#: part/serializers.py:1552 +msgid "Quantity not provided" +msgstr "" + +#: part/serializers.py:1560 +msgid "Invalid quantity" +msgstr "" + +#: part/serializers.py:1581 +msgid "At least one BOM item is required" +msgstr "" + +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 +msgid "Total Quantity" +msgstr "" + +#: part/stocktake.py:224 +msgid "Total Cost Min" +msgstr "" + +#: part/stocktake.py:225 +msgid "Total Cost Max" +msgstr "" + +#: part/stocktake.py:289 +msgid "Stocktake Report Available" +msgstr "" + +#: part/stocktake.py:290 +msgid "A new stocktake report is available for download" +msgstr "" + +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + +#: part/templates/part/bom.html:6 +msgid "You do not have permission to edit the BOM." +msgstr "" + +#: part/templates/part/bom.html:15 +msgid "The BOM this part has been changed, and must be validated" +msgstr "" + +#: part/templates/part/bom.html:17 +#, python-format +msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s" +msgstr "" + +#: part/templates/part/bom.html:21 +#, python-format +msgid "The BOM for %(part)s has not been validated." +msgstr "" + +#: part/templates/part/category.html:35 +msgid "Perform stocktake for this part category" +msgstr "" + +#: part/templates/part/category.html:41 part/templates/part/category.html:45 +msgid "You are subscribed to notifications for this category" +msgstr "" + +#: part/templates/part/category.html:49 +msgid "Subscribe to notifications for this category" +msgstr "" + +#: part/templates/part/category.html:55 +msgid "Category Actions" +msgstr "" + +#: part/templates/part/category.html:60 +msgid "Edit category" +msgstr "" + +#: part/templates/part/category.html:61 +msgid "Edit Category" +msgstr "" + +#: part/templates/part/category.html:65 +msgid "Delete category" +msgstr "" + +#: part/templates/part/category.html:66 +msgid "Delete Category" +msgstr "" + +#: part/templates/part/category.html:102 +msgid "Top level part category" +msgstr "" + +#: part/templates/part/category.html:122 part/templates/part/category.html:207 +#: part/templates/part/category_sidebar.html:7 +msgid "Subcategories" +msgstr "" + +#: part/templates/part/category.html:127 +msgid "Parts (Including subcategories)" +msgstr "" + +#: part/templates/part/category.html:165 +msgid "Create new part" +msgstr "" + +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 +msgid "New Part" +msgstr "" + +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 +msgid "Part Parameters" +msgstr "" + +#: part/templates/part/category.html:211 +msgid "Create new part category" +msgstr "" + +#: part/templates/part/category.html:212 +msgid "New Category" +msgstr "" + +#: part/templates/part/category_sidebar.html:13 +msgid "Import Parts" +msgstr "" + +#: part/templates/part/copy_part.html:10 +#, python-format +msgid "Make a copy of part '%(full_name)s'." +msgstr "" + +#: part/templates/part/copy_part.html:14 +#: part/templates/part/create_part.html:11 +msgid "Possible Matching Parts" +msgstr "" + +#: part/templates/part/copy_part.html:15 +#: part/templates/part/create_part.html:12 +msgid "The new part may be a duplicate of these existing parts" +msgstr "" + +#: part/templates/part/create_part.html:17 +#, python-format +msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" +msgstr "" + +#: part/templates/part/detail.html:20 +msgid "Part Stock" +msgstr "" + +#: part/templates/part/detail.html:44 +msgid "Refresh scheduling data" +msgstr "" + +#: part/templates/part/detail.html:45 part/templates/part/prices.html:15 +#: templates/js/translated/tables.js:552 +msgid "Refresh" +msgstr "" + +#: part/templates/part/detail.html:66 +msgid "Add stocktake information" +msgstr "" + +#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 +msgid "Stocktake" +msgstr "" + +#: part/templates/part/detail.html:83 +msgid "Part Test Templates" +msgstr "" + +#: part/templates/part/detail.html:88 +msgid "Add Test Template" +msgstr "" + +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 +msgid "Sales Order Allocations" +msgstr "" + +#: part/templates/part/detail.html:156 +msgid "Part Notes" +msgstr "" + +#: part/templates/part/detail.html:171 +msgid "Part Variants" +msgstr "" + +#: part/templates/part/detail.html:175 +msgid "Create new variant" +msgstr "" + +#: part/templates/part/detail.html:176 +msgid "New Variant" +msgstr "" + +#: part/templates/part/detail.html:199 +msgid "Add new parameter" +msgstr "" + +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 +msgid "Related Parts" +msgstr "" + +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +msgid "Add Related" +msgstr "" + +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 +#: report/templates/report/inventree_bill_of_materials_report.html:100 +msgid "Bill of Materials" +msgstr "" + +#: part/templates/part/detail.html:260 +msgid "Export actions" +msgstr "" + +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 +msgid "Export BOM" +msgstr "" + +#: part/templates/part/detail.html:266 +msgid "Print BOM Report" +msgstr "" + +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 +msgid "Upload BOM" +msgstr "" + +#: part/templates/part/detail.html:278 +msgid "Validate BOM" +msgstr "" + +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +msgid "Add BOM Item" +msgstr "" + +#: part/templates/part/detail.html:297 +msgid "Assemblies" +msgstr "" + +#: part/templates/part/detail.html:313 +msgid "Part Builds" +msgstr "" + +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/detail.html:352 +msgid "Part Suppliers" +msgstr "" + +#: part/templates/part/detail.html:372 +msgid "Part Manufacturers" +msgstr "" + +#: part/templates/part/detail.html:659 +msgid "Related Part" +msgstr "" + +#: part/templates/part/detail.html:667 +msgid "Add Related Part" +msgstr "" + +#: part/templates/part/detail.html:752 +msgid "Add Test Result Template" +msgstr "" + +#: part/templates/part/import_wizard/ajax_part_upload.html:29 +#: part/templates/part/import_wizard/part_upload.html:14 +msgid "Insufficient privileges." +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:8 +msgid "Return to Parts" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:13 +msgid "Import Parts from File" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:31 +msgid "Requirements for part import" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:33 +msgid "The part import file must contain the required named columns as provided in the " +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:33 +msgid "Part Import Template" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:89 +msgid "Download Part Import Template" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:92 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 +msgid "Format" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:93 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 +#: templates/js/translated/order.js:130 +msgid "Select file format" +msgstr "" + +#: part/templates/part/part_app_base.html:12 +msgid "Part List" +msgstr "" + +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 +msgid "You are subscribed to notifications for this part" +msgstr "" + +#: part/templates/part/part_base.html:33 +msgid "Subscribe to notifications for this part" +msgstr "" + +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 +msgid "Print Label" +msgstr "" + +#: part/templates/part/part_base.html:58 +msgid "Show pricing information" +msgstr "" + +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 +msgid "Stock actions" +msgstr "" + +#: part/templates/part/part_base.html:70 +msgid "Count part stock" +msgstr "" + +#: part/templates/part/part_base.html:76 +msgid "Transfer part stock" +msgstr "" + +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 +msgid "Part actions" +msgstr "" + +#: part/templates/part/part_base.html:94 +msgid "Duplicate part" +msgstr "" + +#: part/templates/part/part_base.html:97 +msgid "Edit part" +msgstr "" + +#: part/templates/part/part_base.html:100 +msgid "Delete part" +msgstr "" + +#: part/templates/part/part_base.html:119 +msgid "Part is a template part (variants can be made from this part)" +msgstr "" + +#: part/templates/part/part_base.html:123 +msgid "Part can be assembled from other parts" +msgstr "" + +#: part/templates/part/part_base.html:127 +msgid "Part can be used in assemblies" +msgstr "" + +#: part/templates/part/part_base.html:131 +msgid "Part stock is tracked by serial number" +msgstr "" + +#: part/templates/part/part_base.html:135 +msgid "Part can be purchased from external suppliers" +msgstr "" + +#: part/templates/part/part_base.html:139 +msgid "Part can be sold to customers" +msgstr "" + +#: part/templates/part/part_base.html:145 +msgid "Part is not active" +msgstr "" + +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 +msgid "Inactive" +msgstr "" + +#: part/templates/part/part_base.html:153 +msgid "Part is virtual (not a physical part)" +msgstr "" + +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 +msgid "Allocated to Build Orders" +msgstr "" + +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 +msgid "Allocated to Sales Orders" +msgstr "" + +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +msgid "Can Build" +msgstr "" + +#: part/templates/part/part_base.html:291 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 +#: templates/js/translated/pricing.js:391 +#: templates/js/translated/pricing.js:1054 +msgid "Price Range" +msgstr "" + +#: part/templates/part/part_base.html:352 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:444 +msgid "Part QR Code" +msgstr "" + +#: part/templates/part/part_base.html:461 +msgid "Link Barcode to Part" +msgstr "" + +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 +msgid "part" +msgstr "" + +#: part/templates/part/part_base.html:512 +msgid "Calculate" +msgstr "" + +#: part/templates/part/part_base.html:529 +msgid "Remove associated image from this part" +msgstr "" + +#: part/templates/part/part_base.html:580 +msgid "No matching images found" +msgstr "" + +#: part/templates/part/part_base.html:676 +msgid "Hide Part Details" +msgstr "" + +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:73 +#: part/templates/part/prices.html:216 templates/js/translated/pricing.js:485 +msgid "Supplier Pricing" +msgstr "" + +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:95 +#: part/templates/part/part_pricing.html:110 +msgid "Unit Cost" +msgstr "" + +#: part/templates/part/part_pricing.html:40 +msgid "No supplier pricing available" +msgstr "" + +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:87 +#: part/templates/part/prices.html:239 +msgid "BOM Pricing" +msgstr "" + +#: part/templates/part/part_pricing.html:66 +msgid "Unit Purchase Price" +msgstr "" + +#: part/templates/part/part_pricing.html:72 +msgid "Total Purchase Price" +msgstr "" + +#: part/templates/part/part_pricing.html:83 +msgid "No BOM pricing available" +msgstr "" + +#: part/templates/part/part_pricing.html:92 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/part_pricing.html:123 +msgid "No pricing information is available for this part." +msgstr "" + +#: part/templates/part/part_scheduling.html:14 +msgid "Scheduled Quantity" +msgstr "" + +#: part/templates/part/part_sidebar.html:11 +msgid "Variants" +msgstr "" + +#: part/templates/part/part_sidebar.html:14 +#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 +#: stock/templates/stock/stock_app_base.html:10 +#: templates/InvenTree/search.html:153 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 +msgid "Stock" +msgstr "" + +#: part/templates/part/part_sidebar.html:30 +#: templates/InvenTree/settings/sidebar.html:39 +msgid "Pricing" +msgstr "" + +#: part/templates/part/part_sidebar.html:44 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:54 +msgid "Test Templates" +msgstr "" + +#: part/templates/part/part_thumb.html:11 +msgid "Select from existing images" +msgstr "" + +#: part/templates/part/prices.html:11 +msgid "Pricing Overview" +msgstr "" + +#: part/templates/part/prices.html:14 +msgid "Refresh Part Pricing" +msgstr "" + +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 +msgid "Last Updated" +msgstr "" + +#: part/templates/part/prices.html:34 part/templates/part/prices.html:116 +msgid "Price Category" +msgstr "" + +#: part/templates/part/prices.html:35 part/templates/part/prices.html:117 +msgid "Minimum" +msgstr "" + +#: part/templates/part/prices.html:36 part/templates/part/prices.html:118 +msgid "Maximum" +msgstr "" + +#: part/templates/part/prices.html:48 part/templates/part/prices.html:163 +msgid "Internal Pricing" +msgstr "" + +#: part/templates/part/prices.html:61 part/templates/part/prices.html:195 +msgid "Purchase History" +msgstr "" + +#: part/templates/part/prices.html:95 part/templates/part/prices.html:263 +msgid "Variant Pricing" +msgstr "" + +#: part/templates/part/prices.html:102 +msgid "Overall Pricing" +msgstr "" + +#: part/templates/part/prices.html:138 part/templates/part/prices.html:315 +msgid "Sale History" +msgstr "" + +#: part/templates/part/prices.html:146 +msgid "Sale price data is not available for this part" +msgstr "" + +#: part/templates/part/prices.html:153 +msgid "Price range data is not available for this part." +msgstr "" + +#: part/templates/part/prices.html:164 part/templates/part/prices.html:196 +#: part/templates/part/prices.html:217 part/templates/part/prices.html:240 +#: part/templates/part/prices.html:264 part/templates/part/prices.html:287 +#: part/templates/part/prices.html:316 +msgid "Jump to overview" +msgstr "" + +#: part/templates/part/prices.html:169 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/prices.html:286 +msgid "Sale Pricing" +msgstr "" + +#: part/templates/part/prices.html:292 +msgid "Add Sell Price Break" +msgstr "" + +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 +msgid "No Stock" +msgstr "" + +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 +msgid "Low Stock" +msgstr "" + +#: part/templates/part/upload_bom.html:8 +msgid "Return to BOM" +msgstr "" + +#: part/templates/part/upload_bom.html:13 +msgid "Upload Bill of Materials" +msgstr "" + +#: part/templates/part/upload_bom.html:19 +msgid "BOM upload requirements" +msgstr "" + +#: part/templates/part/upload_bom.html:23 +#: part/templates/part/upload_bom.html:90 +msgid "Upload BOM File" +msgstr "" + +#: part/templates/part/upload_bom.html:29 +msgid "Submit BOM Data" +msgstr "" + +#: part/templates/part/upload_bom.html:37 +msgid "Requirements for BOM upload" +msgstr "" + +#: part/templates/part/upload_bom.html:39 +msgid "The BOM file must contain the required named columns as provided in the " +msgstr "" + +#: part/templates/part/upload_bom.html:39 +msgid "BOM Upload Template" +msgstr "" + +#: part/templates/part/upload_bom.html:40 +msgid "Each part must already exist in the database" +msgstr "" + +#: part/templates/part/variant_part.html:9 +msgid "Create new part variant" +msgstr "" + +#: part/templates/part/variant_part.html:10 +msgid "Create a new variant part from this template" +msgstr "" + +#: part/templatetags/inventree_extras.py:185 +msgid "Unknown database" +msgstr "" + +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" +msgstr "" + +#: part/views.py:110 +msgid "Match References" +msgstr "" + +#: part/views.py:242 +#, python-brace-format +msgid "Can't import part {new_part.name} because there is no category assigned" +msgstr "" + +#: part/views.py:383 +msgid "Select Part Image" +msgstr "" + +#: part/views.py:409 +msgid "Updated part image" +msgstr "" + +#: part/views.py:412 +msgid "Part image not found" +msgstr "" + +#: part/views.py:507 +msgid "Part Pricing" +msgstr "" + +#: plugin/base/action/api.py:27 +msgid "No action specified" +msgstr "" + +#: plugin/base/action/api.py:38 +msgid "No matching action found" +msgstr "" + +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 +msgid "Missing barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:82 +msgid "No match found for barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:86 +msgid "Match found for barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 +msgid "Barcode matches existing item" +msgstr "" + +#: plugin/base/barcodes/api.py:217 +msgid "No match found for provided value" +msgstr "" + +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 +msgid "Label printing failed" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:25 +msgid "InvenTree Barcodes" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:26 +msgid "Provides native support for barcodes" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:28 +#: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 +msgid "InvenTree contributors" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:33 +msgid "InvenTree Notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:35 +msgid "Integrated outgoing notification methods" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:40 +#: plugin/builtin/integration/core_notifications.py:81 +msgid "Enable email notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:41 +#: plugin/builtin/integration/core_notifications.py:82 +msgid "Allow sending of emails for event notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:46 +msgid "Enable slack notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:47 +msgid "Allow sending of slack channel messages for event notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:52 +msgid "Slack incoming webhook url" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:53 +msgid "URL that is used to send messages to a slack channel" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:162 +msgid "Open link" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" +msgstr "" + +#: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 +msgid "Plugin Configurations" +msgstr "" + +#: plugin/models.py:34 users/models.py:73 +msgid "Key" +msgstr "" + +#: plugin/models.py:35 +msgid "Key of plugin" +msgstr "" + +#: plugin/models.py:43 +msgid "PluginName of the plugin" +msgstr "" + +#: plugin/models.py:49 +msgid "Is the plugin active" +msgstr "" + +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 +msgid "Sample plugin" +msgstr "" + +#: plugin/models.py:146 +msgid "Builtin Plugin" +msgstr "" + +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 +msgid "Plugin" +msgstr "" + +#: plugin/models.py:222 +msgid "Method" +msgstr "" + +#: plugin/plugin.py:265 +msgid "No author found" +msgstr "" + +#: plugin/registry.py:510 +#, python-brace-format +msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" +msgstr "" + +#: plugin/registry.py:512 +#, python-brace-format +msgid "Plugin requires at least version {v}" +msgstr "" + +#: plugin/registry.py:514 +#, python-brace-format +msgid "Plugin requires at most version {v}" +msgstr "" + +#: plugin/samples/integration/sample.py:50 +msgid "Enable PO" +msgstr "" + +#: plugin/samples/integration/sample.py:51 +msgid "Enable PO functionality in InvenTree interface" +msgstr "" + +#: plugin/samples/integration/sample.py:56 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:57 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:61 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:62 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:67 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:68 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 +msgid "Source URL" +msgstr "" + +#: plugin/serializers.py:88 +msgid "Source for the package - this can be a custom registry or a VCS path" +msgstr "" + +#: plugin/serializers.py:93 +msgid "Package Name" +msgstr "" + +#: plugin/serializers.py:94 +msgid "Name for the Plugin Package - can also contain a version indicator" +msgstr "" + +#: plugin/serializers.py:97 +msgid "Confirm plugin installation" +msgstr "" + +#: plugin/serializers.py:98 +msgid "This will install this plugin now into the current instance. The instance will go into maintenance." +msgstr "" + +#: plugin/serializers.py:110 +msgid "Installation not confirmed" +msgstr "" + +#: plugin/serializers.py:112 +msgid "Either packagename of URL must be provided" +msgstr "" + +#: plugin/serializers.py:141 +msgid "Activate Plugin" +msgstr "" + +#: plugin/serializers.py:142 +msgid "Activate this plugin" +msgstr "" + +#: report/api.py:172 +msgid "No valid objects provided to template" +msgstr "" + +#: report/api.py:209 report/api.py:245 +#, python-brace-format +msgid "Template file '{template}' is missing or does not exist" +msgstr "" + +#: report/api.py:322 +msgid "Test report" +msgstr "" + +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 +msgid "Template name" +msgstr "" + +#: report/models.py:177 +msgid "Report template file" +msgstr "" + +#: report/models.py:184 +msgid "Report template description" +msgstr "" + +#: report/models.py:190 +msgid "Report revision number (auto-increments)" +msgstr "" + +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:312 +msgid "Report template is enabled" +msgstr "" + +#: report/models.py:333 +msgid "StockItem query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:341 +msgid "Include Installed Tests" +msgstr "" + +#: report/models.py:342 +msgid "Include test results for stock items installed inside assembled item" +msgstr "" + +#: report/models.py:402 +msgid "Build Filters" +msgstr "" + +#: report/models.py:403 +msgid "Build query filters (comma-separated list of key=value pairs" +msgstr "" + +#: report/models.py:444 +msgid "Part Filters" +msgstr "" + +#: report/models.py:445 +msgid "Part query filters (comma-separated list of key=value pairs" +msgstr "" + +#: report/models.py:479 +msgid "Purchase order query filters" +msgstr "" + +#: report/models.py:517 +msgid "Sales order query filters" +msgstr "" + +#: report/models.py:555 +msgid "Return order query filters" +msgstr "" + +#: report/models.py:606 +msgid "Snippet" +msgstr "" + +#: report/models.py:607 +msgid "Report snippet file" +msgstr "" + +#: report/models.py:611 +msgid "Snippet file description" +msgstr "" + +#: report/models.py:647 +msgid "Asset" +msgstr "" + +#: report/models.py:648 +msgid "Report asset file" +msgstr "" + +#: report/models.py:655 +msgid "Asset file description" +msgstr "" + +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/templates/report/inventree_bill_of_materials_report.html:133 +msgid "Materials needed" +msgstr "" + +#: report/templates/report/inventree_build_order_base.html:146 +msgid "Required For" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:15 +msgid "Supplier was deleted" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:30 +#: report/templates/report/inventree_so_report_base.html:30 +#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 +#: templates/js/translated/pricing.js:596 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 +msgid "Unit Price" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:55 +#: report/templates/report/inventree_return_order_report_base.html:48 +#: report/templates/report/inventree_so_report_base.html:55 +msgid "Extra Line Items" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:72 +#: report/templates/report/inventree_so_report_base.html:72 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 +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:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 +msgid "Serial Number" +msgstr "" + +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:21 +msgid "Stock Item Test Report" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:97 +msgid "Test Results" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:102 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 +msgid "Test" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:103 +#: stock/models.py:2306 +msgid "Result" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:130 +msgid "Pass" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:132 +msgid "Fail" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:139 +msgid "No result (required)" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:141 +msgid "No result" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:154 +#: stock/templates/stock/stock_sidebar.html:16 +msgid "Installed Items" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:168 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 +msgid "Serial" +msgstr "" + +#: stock/admin.py:40 stock/admin.py:126 +msgid "Location ID" +msgstr "" + +#: stock/admin.py:41 stock/admin.py:127 +msgid "Location Name" +msgstr "" + +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 +msgid "Location Path" +msgstr "" + +#: stock/admin.py:118 +msgid "Stock Item ID" +msgstr "" + +#: stock/admin.py:125 +msgid "Status Code" +msgstr "" + +#: stock/admin.py:128 +msgid "Supplier Part ID" +msgstr "" + +#: stock/admin.py:129 +msgid "Supplier ID" +msgstr "" + +#: stock/admin.py:130 +msgid "Supplier Name" +msgstr "" + +#: stock/admin.py:131 +msgid "Customer ID" +msgstr "" + +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 +msgid "Installed In" +msgstr "" + +#: stock/admin.py:133 +msgid "Build ID" +msgstr "" + +#: stock/admin.py:135 +msgid "Sales Order ID" +msgstr "" + +#: stock/admin.py:136 +msgid "Purchase Order ID" +msgstr "" + +#: stock/admin.py:143 +msgid "Review Needed" +msgstr "" + +#: stock/admin.py:144 +msgid "Delete on Deplete" +msgstr "" + +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 +msgid "Expiry Date" +msgstr "" + +#: stock/api.py:499 templates/js/translated/table_filters.js:427 +msgid "External Location" +msgstr "" + +#: stock/api.py:693 +msgid "Quantity is required" +msgstr "" + +#: stock/api.py:700 +msgid "Valid part must be supplied" +msgstr "" + +#: stock/api.py:728 +msgid "The given supplier part does not exist" +msgstr "" + +#: stock/api.py:737 +msgid "The supplier part has a pack size defined, but flag use_pack_size not set" +msgstr "" + +#: stock/api.py:760 +msgid "Serial numbers cannot be supplied for a non-trackable part" +msgstr "" + +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 +#: stock/templates/stock/location.html:17 +#: stock/templates/stock/stock_app_base.html:8 +msgid "Stock Location" +msgstr "" + +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 +msgid "Stock Locations" +msgstr "" + +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 +msgid "Owner" +msgstr "" + +#: stock/models.py:149 stock/models.py:863 +msgid "Select Owner" +msgstr "" + +#: stock/models.py:156 +msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." +msgstr "" + +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 +msgid "External" +msgstr "" + +#: stock/models.py:163 +msgid "This is an external stock location" +msgstr "" + +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 +msgid "You cannot make this stock location structural because some stock items are already located into it!" +msgstr "" + +#: stock/models.py:593 +msgid "Stock items cannot be located into structural stock locations!" +msgstr "" + +#: stock/models.py:619 stock/serializers.py:229 +msgid "Stock item cannot be created for virtual parts" +msgstr "" + +#: stock/models.py:636 +#, python-brace-format +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" + +#: stock/models.py:644 stock/models.py:653 +msgid "Quantity must be 1 for item with a serial number" +msgstr "" + +#: stock/models.py:645 +msgid "Serial number cannot be set if quantity greater than 1" +msgstr "" + +#: stock/models.py:667 +msgid "Item cannot belong to itself" +msgstr "" + +#: stock/models.py:673 +msgid "Item must have a build reference if is_building=True" +msgstr "" + +#: stock/models.py:687 +msgid "Build reference does not point to the same part object" +msgstr "" + +#: stock/models.py:701 +msgid "Parent Stock Item" +msgstr "" + +#: stock/models.py:711 +msgid "Base part" +msgstr "" + +#: stock/models.py:719 +msgid "Select a matching supplier part for this stock item" +msgstr "" + +#: stock/models.py:729 +msgid "Where is this stock item located?" +msgstr "" + +#: stock/models.py:736 stock/serializers.py:1298 +msgid "Packaging this stock item is stored in" +msgstr "" + +#: stock/models.py:745 +msgid "Is this item installed in another item?" +msgstr "" + +#: stock/models.py:761 +msgid "Serial number for this item" +msgstr "" + +#: stock/models.py:775 stock/serializers.py:1283 +msgid "Batch code for this stock item" +msgstr "" + +#: stock/models.py:780 +msgid "Stock Quantity" +msgstr "" + +#: stock/models.py:787 +msgid "Source Build" +msgstr "" + +#: stock/models.py:789 +msgid "Build for this stock item" +msgstr "" + +#: stock/models.py:795 stock/templates/stock/item_base.html:363 +msgid "Consumed By" +msgstr "" + +#: stock/models.py:797 +msgid "Build order which consumed this stock item" +msgstr "" + +#: stock/models.py:808 +msgid "Source Purchase Order" +msgstr "" + +#: stock/models.py:811 +msgid "Purchase order for this stock item" +msgstr "" + +#: stock/models.py:817 +msgid "Destination Sales Order" +msgstr "" + +#: stock/models.py:824 +msgid "Expiry date for stock item. Stock will be considered expired after this date" +msgstr "" + +#: stock/models.py:839 +msgid "Delete on deplete" +msgstr "" + +#: stock/models.py:839 +msgid "Delete this Stock Item when stock is depleted" +msgstr "" + +#: stock/models.py:858 +msgid "Single unit purchase price at time of purchase" +msgstr "" + +#: stock/models.py:886 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1411 +msgid "Part is not set as trackable" +msgstr "" + +#: stock/models.py:1417 +msgid "Quantity must be integer" +msgstr "" + +#: stock/models.py:1423 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" + +#: stock/models.py:1426 +msgid "Serial numbers must be a list of integers" +msgstr "" + +#: stock/models.py:1429 +msgid "Quantity does not match serial numbers" +msgstr "" + +#: stock/models.py:1436 stock/serializers.py:449 +msgid "Serial numbers already exist" +msgstr "" + +#: stock/models.py:1507 +msgid "Stock item has been assigned to a sales order" +msgstr "" + +#: stock/models.py:1510 +msgid "Stock item is installed in another item" +msgstr "" + +#: stock/models.py:1513 +msgid "Stock item contains other items" +msgstr "" + +#: stock/models.py:1516 +msgid "Stock item has been assigned to a customer" +msgstr "" + +#: stock/models.py:1519 +msgid "Stock item is currently in production" +msgstr "" + +#: stock/models.py:1522 +msgid "Serialized stock cannot be merged" +msgstr "" + +#: stock/models.py:1529 stock/serializers.py:1194 +msgid "Duplicate stock items" +msgstr "" + +#: stock/models.py:1533 +msgid "Stock items must refer to the same part" +msgstr "" + +#: stock/models.py:1537 +msgid "Stock items must refer to the same supplier part" +msgstr "" + +#: stock/models.py:1541 +msgid "Stock status codes must match" +msgstr "" + +#: stock/models.py:1735 +msgid "StockItem cannot be moved as it is not in stock" +msgstr "" + +#: stock/models.py:2218 +msgid "Entry notes" +msgstr "" + +#: stock/models.py:2276 +msgid "Value must be provided for this test" +msgstr "" + +#: stock/models.py:2282 +msgid "Attachment must be uploaded for this test" +msgstr "" + +#: stock/models.py:2301 +msgid "Test name" +msgstr "" + +#: stock/models.py:2307 +msgid "Test result" +msgstr "" + +#: stock/models.py:2313 +msgid "Test output value" +msgstr "" + +#: stock/models.py:2320 +msgid "Test result attachment" +msgstr "" + +#: stock/models.py:2326 +msgid "Test notes" +msgstr "" + +#: stock/serializers.py:121 +msgid "Serial number is too large" +msgstr "" + +#: stock/serializers.py:222 +msgid "Use pack size when adding: the quantity defined is the number of packs" +msgstr "" + +#: stock/serializers.py:321 +msgid "Purchase price of this stock item, per unit or pack" +msgstr "" + +#: stock/serializers.py:382 +msgid "Enter number of stock items to serialize" +msgstr "" + +#: stock/serializers.py:394 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({q})" +msgstr "" + +#: stock/serializers.py:400 +msgid "Enter serial numbers for new items" +msgstr "" + +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 +msgid "Destination stock location" +msgstr "" + +#: stock/serializers.py:418 +msgid "Optional note field" +msgstr "" + +#: stock/serializers.py:428 +msgid "Serial numbers cannot be assigned to this part" +msgstr "" + +#: stock/serializers.py:489 +msgid "Select stock item to install" +msgstr "" + +#: stock/serializers.py:496 +msgid "Quantity to Install" +msgstr "" + +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" +msgstr "" + +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 +msgid "Add transaction note (optional)" +msgstr "" + +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 +msgid "Select part to convert stock item into" +msgstr "" + +#: stock/serializers.py:625 +msgid "Selected part is not a valid option for conversion" +msgstr "" + +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 +msgid "Part must be salable" +msgstr "" + +#: stock/serializers.py:1010 +msgid "Item is allocated to a sales order" +msgstr "" + +#: stock/serializers.py:1014 +msgid "Item is allocated to a build order" +msgstr "" + +#: stock/serializers.py:1045 +msgid "Customer to assign stock items" +msgstr "" + +#: stock/serializers.py:1051 +msgid "Selected company is not a customer" +msgstr "" + +#: stock/serializers.py:1059 +msgid "Stock assignment notes" +msgstr "" + +#: stock/serializers.py:1069 stock/serializers.py:1329 +msgid "A list of stock items must be provided" +msgstr "" + +#: stock/serializers.py:1158 +msgid "Stock merging notes" +msgstr "" + +#: stock/serializers.py:1163 +msgid "Allow mismatched suppliers" +msgstr "" + +#: stock/serializers.py:1164 +msgid "Allow stock items with different supplier parts to be merged" +msgstr "" + +#: stock/serializers.py:1169 +msgid "Allow mismatched status" +msgstr "" + +#: stock/serializers.py:1170 +msgid "Allow stock items with different status codes to be merged" +msgstr "" + +#: stock/serializers.py:1180 +msgid "At least two stock items must be provided" +msgstr "" + +#: stock/serializers.py:1269 +msgid "StockItem primary key value" +msgstr "" + +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 +msgid "Stock transaction notes" +msgstr "" + +#: stock/templates/stock/item.html:17 +msgid "Stock Tracking Information" +msgstr "" + +#: stock/templates/stock/item.html:63 +msgid "Child Stock Items" +msgstr "" + +#: stock/templates/stock/item.html:72 +msgid "This stock item does not have any child items" +msgstr "" + +#: stock/templates/stock/item.html:81 +#: stock/templates/stock/stock_sidebar.html:12 +msgid "Test Data" +msgstr "" + +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 +msgid "Test Report" +msgstr "" + +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 +msgid "Delete Test Data" +msgstr "" + +#: stock/templates/stock/item.html:93 +msgid "Add Test Data" +msgstr "" + +#: stock/templates/stock/item.html:125 +msgid "Stock Item Notes" +msgstr "" + +#: stock/templates/stock/item.html:140 +msgid "Installed Stock Items" +msgstr "" + +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 +msgid "Install Stock Item" +msgstr "" + +#: stock/templates/stock/item.html:267 +msgid "Delete all test results for this stock item" +msgstr "" + +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 +msgid "Add Test Result" +msgstr "" + +#: stock/templates/stock/item_base.html:33 +msgid "Locate stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:51 +msgid "Scan to Location" +msgstr "" + +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 +msgid "Printing actions" +msgstr "" + +#: stock/templates/stock/item_base.html:75 +msgid "Stock adjustment actions" +msgstr "" + +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 +msgid "Count stock" +msgstr "" + +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 +msgid "Add stock" +msgstr "" + +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 +msgid "Remove stock" +msgstr "" + +#: stock/templates/stock/item_base.html:85 +msgid "Serialize stock" +msgstr "" + +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 +msgid "Transfer stock" +msgstr "" + +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 +msgid "Assign to customer" +msgstr "" + +#: stock/templates/stock/item_base.html:94 +msgid "Return to stock" +msgstr "" + +#: stock/templates/stock/item_base.html:97 +msgid "Uninstall stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:97 +msgid "Uninstall" +msgstr "" + +#: stock/templates/stock/item_base.html:101 +msgid "Install stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:101 +msgid "Install" +msgstr "" + +#: stock/templates/stock/item_base.html:115 +msgid "Convert to variant" +msgstr "" + +#: stock/templates/stock/item_base.html:118 +msgid "Duplicate stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:120 +msgid "Edit stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:123 +msgid "Delete stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:211 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:251 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 +msgid "Read only" +msgstr "" + +#: stock/templates/stock/item_base.html:265 +msgid "This stock item is unavailable" +msgstr "" + +#: stock/templates/stock/item_base.html:271 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:272 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:287 +msgid "This stock item is allocated to Sales Order" +msgstr "" + +#: stock/templates/stock/item_base.html:295 +msgid "This stock item is allocated to Build Order" +msgstr "" + +#: stock/templates/stock/item_base.html:311 +msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" +msgstr "" + +#: stock/templates/stock/item_base.html:317 +msgid "previous page" +msgstr "" + +#: stock/templates/stock/item_base.html:317 +msgid "Navigate to previous serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:326 +msgid "next page" +msgstr "" + +#: stock/templates/stock/item_base.html:326 +msgid "Navigate to next serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:340 +msgid "Available Quantity" +msgstr "" + +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:413 +msgid "Tests" +msgstr "" + +#: stock/templates/stock/item_base.html:419 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:437 +#, python-format +msgid "This StockItem expired on %(item.expiry_date)s" +msgstr "" + +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:439 +#, python-format +msgid "This StockItem expires on %(item.expiry_date)s" +msgstr "" + +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:455 +msgid "No stocktake performed" +msgstr "" + +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 +msgid "stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:532 +msgid "Edit Stock Status" +msgstr "" + +#: stock/templates/stock/item_base.html:541 +msgid "Stock Item QR Code" +msgstr "" + +#: stock/templates/stock/item_base.html:552 +msgid "Link Barcode to Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:616 +msgid "Select one of the part variants listed below." +msgstr "" + +#: stock/templates/stock/item_base.html:619 +msgid "Warning" +msgstr "" + +#: stock/templates/stock/item_base.html:620 +msgid "This action cannot be easily undone" +msgstr "" + +#: stock/templates/stock/item_base.html:628 +msgid "Convert Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:662 +msgid "Return to Stock" +msgstr "" + +#: stock/templates/stock/item_serialize.html:5 +msgid "Create serialized items from this stock item." +msgstr "" + +#: stock/templates/stock/item_serialize.html:7 +msgid "Select quantity to serialize, and unique serial numbers." +msgstr "" + +#: stock/templates/stock/location.html:38 +msgid "Perform stocktake for this stock location" +msgstr "" + +#: stock/templates/stock/location.html:45 +msgid "Locate stock location" +msgstr "" + +#: stock/templates/stock/location.html:63 +msgid "Scan stock items into this location" +msgstr "" + +#: stock/templates/stock/location.html:63 +msgid "Scan In Stock Items" +msgstr "" + +#: stock/templates/stock/location.html:64 +msgid "Scan stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:64 +msgid "Scan In Container" +msgstr "" + +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 +msgid "Location actions" +msgstr "" + +#: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 +msgid "Delete location" +msgstr "" + +#: stock/templates/stock/location.html:138 +msgid "Top level stock location" +msgstr "" + +#: stock/templates/stock/location.html:144 +msgid "Location Owner" +msgstr "" + +#: stock/templates/stock/location.html:148 +msgid "You are not in the list of owners of this location. This stock location cannot be edited." +msgstr "" + +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 +#: stock/templates/stock/location_sidebar.html:5 +msgid "Sublocations" +msgstr "" + +#: stock/templates/stock/location.html:217 +msgid "Create new stock location" +msgstr "" + +#: stock/templates/stock/location.html:218 +msgid "New Location" +msgstr "" + +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 +msgid "stock location" +msgstr "" + +#: stock/templates/stock/location.html:317 +msgid "Scanned stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:390 +msgid "Stock Location QR Code" +msgstr "" + +#: stock/templates/stock/location.html:401 +msgid "Link Barcode to Stock Location" +msgstr "" + +#: stock/templates/stock/stock_app_base.html:16 +msgid "Loading..." +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:5 +msgid "Stock Tracking" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:8 +msgid "Allocations" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:20 +msgid "Child Items" +msgstr "" + +#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7 +msgid "Permission Denied" +msgstr "" + +#: templates/403.html:15 +msgid "You do not have permission to view this page." +msgstr "" + +#: templates/403_csrf.html:11 +msgid "Authentication Failure" +msgstr "" + +#: templates/403_csrf.html:14 +msgid "You have been logged out from InvenTree." +msgstr "" + +#: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 +#: templates/navbar.html:150 +msgid "Login" +msgstr "" + +#: templates/404.html:6 templates/404.html:12 +msgid "Page Not Found" +msgstr "" + +#: templates/404.html:15 +msgid "The requested page does not exist" +msgstr "" + +#: templates/500.html:6 templates/500.html:12 +msgid "Internal Server Error" +msgstr "" + +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" +msgstr "" + +#: templates/500.html:16 +msgid "Refer to the error log in the admin interface for further details" +msgstr "" + +#: templates/503.html:11 templates/503.html:33 +msgid "Site is in Maintenance" +msgstr "" + +#: templates/503.html:39 +msgid "The site is currently in maintenance and should be up again soon!" +msgstr "" + +#: templates/InvenTree/index.html:7 +msgid "Index" +msgstr "" + +#: templates/InvenTree/index.html:39 +msgid "Subscribed Parts" +msgstr "" + +#: templates/InvenTree/index.html:52 +msgid "Subscribed Categories" +msgstr "" + +#: templates/InvenTree/index.html:62 +msgid "Latest Parts" +msgstr "" + +#: templates/InvenTree/index.html:77 +msgid "BOM Waiting Validation" +msgstr "" + +#: templates/InvenTree/index.html:106 +msgid "Recently Updated" +msgstr "" + +#: templates/InvenTree/index.html:134 +msgid "Depleted Stock" +msgstr "" + +#: templates/InvenTree/index.html:148 +msgid "Required for Build Orders" +msgstr "" + +#: templates/InvenTree/index.html:156 +msgid "Expired Stock" +msgstr "" + +#: templates/InvenTree/index.html:172 +msgid "Stale Stock" +msgstr "" + +#: templates/InvenTree/index.html:199 +msgid "Build Orders In Progress" +msgstr "" + +#: templates/InvenTree/index.html:210 +msgid "Overdue Build Orders" +msgstr "" + +#: templates/InvenTree/index.html:230 +msgid "Outstanding Purchase Orders" +msgstr "" + +#: templates/InvenTree/index.html:241 +msgid "Overdue Purchase Orders" +msgstr "" + +#: templates/InvenTree/index.html:262 +msgid "Outstanding Sales Orders" +msgstr "" + +#: templates/InvenTree/index.html:273 +msgid "Overdue Sales Orders" +msgstr "" + +#: templates/InvenTree/index.html:299 +msgid "InvenTree News" +msgstr "" + +#: templates/InvenTree/index.html:301 +msgid "Current News" +msgstr "" + +#: templates/InvenTree/notifications/history.html:9 +msgid "Notification History" +msgstr "" + +#: templates/InvenTree/notifications/history.html:13 +#: templates/InvenTree/notifications/history.html:14 +#: templates/InvenTree/notifications/notifications.html:75 +msgid "Delete Notifications" +msgstr "" + +#: templates/InvenTree/notifications/inbox.html:9 +msgid "Pending Notifications" +msgstr "" + +#: templates/InvenTree/notifications/inbox.html:13 +#: templates/InvenTree/notifications/inbox.html:14 +msgid "Mark all as read" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:10 +#: templates/InvenTree/notifications/sidebar.html:5 +#: templates/InvenTree/settings/sidebar.html:17 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 +msgid "Notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:38 +msgid "No unread notifications found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:58 +msgid "No notification history found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:65 +msgid "Delete all read notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:89 +#: templates/js/translated/notification.js:85 +msgid "Delete Notification" +msgstr "" + +#: templates/InvenTree/notifications/sidebar.html:8 +msgid "Inbox" +msgstr "" + +#: templates/InvenTree/notifications/sidebar.html:10 +msgid "History" +msgstr "" + +#: templates/InvenTree/search.html:8 +msgid "Search Results" +msgstr "" + +#: templates/InvenTree/settings/barcode.html:8 +msgid "Barcode Settings" +msgstr "" + +#: templates/InvenTree/settings/build.html:8 +msgid "Build Order Settings" +msgstr "" + +#: templates/InvenTree/settings/category.html:7 +msgid "Category Settings" +msgstr "" + +#: templates/InvenTree/settings/global.html:8 +msgid "Server Settings" +msgstr "" + +#: templates/InvenTree/settings/label.html:8 +#: templates/InvenTree/settings/user_labels.html:9 +msgid "Label Settings" +msgstr "" + +#: templates/InvenTree/settings/login.html:8 +msgid "Login Settings" +msgstr "" + +#: templates/InvenTree/settings/login.html:15 +msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!" +msgstr "" + +#: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5 +#: templates/socialaccount/signup.html:5 +msgid "Signup" +msgstr "" + +#: templates/InvenTree/settings/login.html:34 +msgid "Single Sign On" +msgstr "" + +#: templates/InvenTree/settings/mixins/settings.html:5 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 +msgid "Settings" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:5 +msgid "URLs" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:8 +#, python-format +msgid "The Base-URL for this plugin is %(base)s." +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:23 +msgid "Open in new tab" +msgstr "" + +#: templates/InvenTree/settings/notifications.html:9 +#: templates/InvenTree/settings/user_notifications.html:9 +msgid "Notification Settings" +msgstr "" + +#: templates/InvenTree/settings/notifications.html:18 +msgid "Slug" +msgstr "" + +#: templates/InvenTree/settings/part.html:7 +msgid "Part Settings" +msgstr "" + +#: templates/InvenTree/settings/part.html:42 +msgid "Part Import" +msgstr "" + +#: templates/InvenTree/settings/part.html:46 +msgid "Import Part" +msgstr "" + +#: templates/InvenTree/settings/part_parameters.html:20 +msgid "Part Parameter Templates" +msgstr "" + +#: templates/InvenTree/settings/part_stocktake.html:7 +msgid "Stocktake Settings" +msgstr "" + +#: templates/InvenTree/settings/part_stocktake.html:25 +msgid "Stocktake Reports" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:9 +#: templates/InvenTree/settings/sidebar.html:64 +msgid "Plugin Settings" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:15 +msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." +msgstr "" + +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 +msgid "Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 +msgid "Install Plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:49 +msgid "External plugins are not enabled for this InvenTree installation" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:64 +msgid "Plugin Error Stack" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:73 +msgid "Stage" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 +msgid "Message" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:16 +msgid "Plugin information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:85 +msgid "Version" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:47 +msgid "no version information supplied" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:61 +msgid "License" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:70 +msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running." +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:76 +msgid "Package information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:82 +msgid "Installation method" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:85 +msgid "This plugin was installed as a package" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:87 +msgid "This plugin was found in a local server path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:93 +msgid "Installation path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:100 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 +msgid "Builtin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:101 +msgid "This is a builtin plugin which cannot be disabled" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 +msgid "Commit Author" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:117 +#: templates/about.html:36 +msgid "Commit Date" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:121 +#: templates/about.html:29 +msgid "Commit Hash" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:125 +msgid "Commit Message" +msgstr "" + +#: templates/InvenTree/settings/po.html:7 +msgid "Purchase Order Settings" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:7 +msgid "Pricing Settings" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:34 +msgid "Exchange Rates" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:38 +msgid "Update Now" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:46 +#: templates/InvenTree/settings/pricing.html:50 +msgid "Last Update" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:50 +msgid "Never" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:8 +msgid "Project Code Settings" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:21 +#: templates/InvenTree/settings/sidebar.html:33 +msgid "Project Codes" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:25 +#: templates/InvenTree/settings/settings_staff_js.html:196 +msgid "New Project Code" +msgstr "" + +#: templates/InvenTree/settings/report.html:8 +#: templates/InvenTree/settings/user_reporting.html:9 +msgid "Report Settings" +msgstr "" + +#: templates/InvenTree/settings/returns.html:7 +msgid "Return Order Settings" +msgstr "" + +#: templates/InvenTree/settings/setting.html:31 +msgid "No value set" +msgstr "" + +#: templates/InvenTree/settings/setting.html:46 +msgid "Edit setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:58 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:60 +msgid "Edit Notification Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:63 +msgid "Edit Global Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:65 +msgid "Edit User Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:49 +msgid "Rate" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 +msgid "Delete Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:265 +msgid "No category parameter templates found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 +msgid "Edit Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 +msgid "Delete Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:306 +msgid "Edit Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:333 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:368 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:398 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:6 +#: templates/InvenTree/settings/user_settings.html:9 +msgid "User Settings" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:9 +msgid "Account" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:11 +msgid "Display" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:13 +msgid "Home Page" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:15 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 +msgid "Search" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:19 +#: templates/InvenTree/settings/sidebar.html:43 +msgid "Reporting" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:24 +msgid "Global Settings" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9 +msgid "Server" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:41 +msgid "Labels" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:45 +msgid "Categories" +msgstr "" + +#: templates/InvenTree/settings/so.html:7 +msgid "Sales Order Settings" +msgstr "" + +#: templates/InvenTree/settings/stock.html:7 +msgid "Stock Settings" +msgstr "" + +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + +#: templates/InvenTree/settings/user.html:13 +msgid "Account Settings" +msgstr "" + +#: templates/InvenTree/settings/user.html:19 +#: templates/account/password_reset_from_key.html:4 +#: templates/account/password_reset_from_key.html:7 +msgid "Change Password" +msgstr "" + +#: templates/InvenTree/settings/user.html:33 +msgid "Username" +msgstr "" + +#: templates/InvenTree/settings/user.html:37 +msgid "First Name" +msgstr "" + +#: templates/InvenTree/settings/user.html:41 +msgid "Last Name" +msgstr "" + +#: templates/InvenTree/settings/user.html:55 +msgid "The following email addresses are associated with your account:" +msgstr "" + +#: templates/InvenTree/settings/user.html:76 +msgid "Verified" +msgstr "" + +#: templates/InvenTree/settings/user.html:78 +msgid "Unverified" +msgstr "" + +#: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 +msgid "Primary" +msgstr "" + +#: templates/InvenTree/settings/user.html:86 +msgid "Make Primary" +msgstr "" + +#: templates/InvenTree/settings/user.html:87 +msgid "Re-send Verification" +msgstr "" + +#: templates/InvenTree/settings/user.html:96 +msgid "Warning:" +msgstr "" + +#: templates/InvenTree/settings/user.html:97 +msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc." +msgstr "" + +#: templates/InvenTree/settings/user.html:105 +msgid "Add Email Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:110 +msgid "Add Email" +msgstr "" + +#: templates/InvenTree/settings/user.html:120 +msgid "Multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:125 +msgid "You have these factors available:" +msgstr "" + +#: templates/InvenTree/settings/user.html:135 +msgid "TOTP" +msgstr "" + +#: templates/InvenTree/settings/user.html:141 +msgid "Static" +msgstr "" + +#: templates/InvenTree/settings/user.html:150 +msgid "Multifactor authentication is not configured for your account" +msgstr "" + +#: templates/InvenTree/settings/user.html:157 +msgid "Change factors" +msgstr "" + +#: templates/InvenTree/settings/user.html:158 +msgid "Setup multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:160 +msgid "Remove multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:168 +msgid "Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:174 +msgid "Log out active sessions (except this one)" +msgstr "" + +#: templates/InvenTree/settings/user.html:175 +msgid "Log Out Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:184 +msgid "unknown on unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:185 +msgid "unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:189 +msgid "IP Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:190 +msgid "Device" +msgstr "" + +#: templates/InvenTree/settings/user.html:191 +msgid "Last Activity" +msgstr "" + +#: templates/InvenTree/settings/user.html:204 +#, python-format +msgid "%(time)s ago (this session)" +msgstr "" + +#: templates/InvenTree/settings/user.html:206 +#, python-format +msgid "%(time)s ago" +msgstr "" + +#: templates/InvenTree/settings/user.html:218 +msgid "Do you really want to remove the selected email address?" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:9 +msgid "Display Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:29 +msgid "Theme Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:39 +msgid "Select theme" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:50 +msgid "Set Theme" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:58 +msgid "Language Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:67 +msgid "Select language" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:83 +#, python-format +msgid "%(lang_translated)s%% translated" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:85 +msgid "No translations available" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:92 +msgid "Set Language" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:95 +msgid "Some languages are not complete" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:97 +msgid "Show only sufficient" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:99 +msgid "and hidden." +msgstr "" + +#: templates/InvenTree/settings/user_display.html:99 +msgid "Show them too" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:106 +msgid "Help the translation efforts!" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:107 +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgstr "" + +#: templates/InvenTree/settings/user_display.html:108 +msgid "InvenTree Translation Project" +msgstr "" + +#: templates/InvenTree/settings/user_homepage.html:9 +msgid "Home Page Settings" +msgstr "" + +#: templates/InvenTree/settings/user_search.html:9 +msgid "Search Settings" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:9 +msgid "Single Sign On Accounts" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:16 +msgid "You can sign in to your account using any of the following third party accounts:" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:52 +msgid "There are no social network accounts connected to this account." +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:58 +msgid "Add SSO Account" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:67 +msgid "Single Sign On is not enabled for this server" +msgstr "" + +#: templates/about.html:9 +msgid "InvenTree Version" +msgstr "" + +#: templates/about.html:14 +msgid "Development Version" +msgstr "" + +#: templates/about.html:17 +msgid "Up to Date" +msgstr "" + +#: templates/about.html:19 +msgid "Update Available" +msgstr "" + +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 +msgid "InvenTree Documentation" +msgstr "" + +#: templates/about.html:54 +msgid "API Version" +msgstr "" + +#: templates/about.html:59 +msgid "Python Version" +msgstr "" + +#: templates/about.html:64 +msgid "Django Version" +msgstr "" + +#: templates/about.html:69 +msgid "View Code on GitHub" +msgstr "" + +#: templates/about.html:74 +msgid "Credits" +msgstr "" + +#: templates/about.html:79 +msgid "Mobile App" +msgstr "" + +#: templates/about.html:84 +msgid "Submit Bug Report" +msgstr "" + +#: templates/about.html:91 templates/clip.html:4 +#: templates/js/translated/helpers.js:585 +msgid "copy to clipboard" +msgstr "" + +#: templates/about.html:91 +msgid "copy version information" +msgstr "" + +#: templates/account/base.html:66 templates/navbar.html:17 +msgid "InvenTree logo" +msgstr "" + +#: templates/account/email_confirm.html:6 +#: templates/account/email_confirm.html:9 +msgid "Confirm Email Address" +msgstr "" + +#: templates/account/email_confirm.html:15 +#, python-format +msgid "Please confirm that %(email)s is an email address for user %(user_display)s." +msgstr "" + +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 +msgid "Confirm" +msgstr "" + +#: templates/account/email_confirm.html:29 +#, python-format +msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request." +msgstr "" + +#: templates/account/login.html:6 templates/account/login.html:17 +#: templates/account/login.html:38 templates/socialaccount/login.html:5 +msgid "Sign In" +msgstr "" + +#: templates/account/login.html:21 +msgid "Not a member?" +msgstr "" + +#: templates/account/login.html:23 templates/account/signup.html:11 +#: templates/account/signup.html:22 templates/socialaccount/signup.html:8 +#: templates/socialaccount/signup.html:20 +msgid "Sign Up" +msgstr "" + +#: templates/account/login.html:45 +msgid "Forgot Password?" +msgstr "" + +#: templates/account/login.html:53 +msgid "or log in with" +msgstr "" + +#: templates/account/logout.html:5 templates/account/logout.html:8 +#: templates/account/logout.html:20 +msgid "Sign Out" +msgstr "" + +#: templates/account/logout.html:10 +msgid "Are you sure you want to sign out?" +msgstr "" + +#: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +msgid "Return to Site" +msgstr "" + +#: templates/account/password_reset.html:5 +#: templates/account/password_reset.html:12 +msgid "Password Reset" +msgstr "" + +#: templates/account/password_reset.html:18 +msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." +msgstr "" + +#: templates/account/password_reset.html:23 +msgid "Reset My Password" +msgstr "" + +#: templates/account/password_reset.html:27 templates/account/signup.html:37 +msgid "This function is currently disabled. Please contact an administrator." +msgstr "" + +#: templates/account/password_reset_from_key.html:7 +msgid "Bad Token" +msgstr "" + +#: templates/account/password_reset_from_key.html:11 +#, python-format +msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." +msgstr "" + +#: templates/account/password_reset_from_key.html:18 +msgid "Change password" +msgstr "" + +#: templates/account/password_reset_from_key.html:22 +msgid "Your password is now changed." +msgstr "" + +#: templates/account/signup.html:13 +#, python-format +msgid "Already have an account? Then please sign in." +msgstr "" + +#: templates/account/signup.html:28 +msgid "Use a SSO-provider for signup" +msgstr "" + +#: templates/account/signup_closed.html:5 +#: templates/account/signup_closed.html:8 +msgid "Sign Up Closed" +msgstr "" + +#: templates/account/signup_closed.html:10 +msgid "Sign up is currently closed." +msgstr "" + +#: templates/account/signup_closed.html:15 +#: templates/socialaccount/authentication_error.html:19 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +msgid "Return to login page" +msgstr "" + +#: templates/admin_button.html:8 +msgid "View in administration panel" +msgstr "" + +#: templates/allauth_2fa/authenticate.html:5 +msgid "Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/authenticate.html:13 +msgid "Authenticate" +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:6 +msgid "Two-Factor Authentication Backup Tokens" +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:17 +msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones." +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:20 +msgid "No backup tokens are available. Press the button below to generate some." +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:28 +msgid "Generate Tokens" +msgstr "" + +#: templates/allauth_2fa/remove.html:6 +msgid "Disable Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/remove.html:9 +msgid "Are you sure?" +msgstr "" + +#: templates/allauth_2fa/remove.html:17 +msgid "Disable 2FA" +msgstr "" + +#: templates/allauth_2fa/setup.html:6 +msgid "Setup Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/setup.html:10 +msgid "Step 1" +msgstr "" + +#: templates/allauth_2fa/setup.html:14 +msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." +msgstr "" + +#: templates/allauth_2fa/setup.html:23 +msgid "Step 2" +msgstr "" + +#: templates/allauth_2fa/setup.html:27 +msgid "Input a token generated by the app:" +msgstr "" + +#: templates/allauth_2fa/setup.html:37 +msgid "Verify" +msgstr "" + +#: templates/attachment_button.html:4 templates/js/translated/attachment.js:70 +msgid "Add Link" +msgstr "" + +#: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 +msgid "Add Attachment" +msgstr "" + +#: templates/barcode_data.html:5 +msgid "Barcode Identifier" +msgstr "" + +#: templates/base.html:103 +msgid "Server Restart Required" +msgstr "" + +#: templates/base.html:106 +msgid "A configuration option has been changed which requires a server restart" +msgstr "" + +#: templates/base.html:106 templates/base.html:116 +msgid "Contact your system administrator for further information" +msgstr "" + +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + +#: templates/email/build_order_completed.html:9 +#: templates/email/new_order_assigned.html:9 +#: templates/email/overdue_build_order.html:9 +#: templates/email/overdue_purchase_order.html:9 +#: templates/email/overdue_sales_order.html:9 +#: templates/email/purchase_order_received.html:9 +#: templates/email/return_order_received.html:9 +msgid "Click on the following link to view this order" +msgstr "" + +#: templates/email/build_order_required_stock.html:7 +msgid "Stock is required for the following build order" +msgstr "" + +#: templates/email/build_order_required_stock.html:8 +#, python-format +msgid "Build order %(build)s - building %(quantity)s x %(part)s" +msgstr "" + +#: templates/email/build_order_required_stock.html:10 +msgid "Click on the following link to view this build order" +msgstr "" + +#: templates/email/build_order_required_stock.html:14 +msgid "The following parts are low on required stock" +msgstr "" + +#: templates/email/build_order_required_stock.html:18 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 +msgid "Required Quantity" +msgstr "" + +#: templates/email/build_order_required_stock.html:38 +#: templates/email/low_stock_notification.html:30 +msgid "You are receiving this email because you are subscribed to notifications for this part " +msgstr "" + +#: templates/email/low_stock_notification.html:9 +msgid "Click on the following link to view this part" +msgstr "" + +#: templates/email/low_stock_notification.html:18 +#: templates/js/translated/part.js:3182 +msgid "Minimum Quantity" +msgstr "" + +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 +msgid "No Response" +msgstr "" + +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 +msgid "No response from the InvenTree server" +msgstr "" + +#: templates/js/translated/api.js:232 +msgid "Error 400: Bad request" +msgstr "" + +#: templates/js/translated/api.js:233 +msgid "API request returned error code 400" +msgstr "" + +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 +msgid "Error 401: Not Authenticated" +msgstr "" + +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 +msgid "Authentication credentials not supplied" +msgstr "" + +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 +msgid "Error 403: Permission Denied" +msgstr "" + +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 +msgid "You do not have the required permissions to access this function" +msgstr "" + +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 +msgid "Error 404: Resource Not Found" +msgstr "" + +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 +msgid "The requested resource could not be located on the server" +msgstr "" + +#: templates/js/translated/api.js:252 +msgid "Error 405: Method Not Allowed" +msgstr "" + +#: templates/js/translated/api.js:253 +msgid "HTTP method not allowed at URL" +msgstr "" + +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 +msgid "Error 408: Timeout" +msgstr "" + +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 +msgid "Connection timeout while requesting data from server" +msgstr "" + +#: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 +msgid "Error code" +msgstr "" + +#: templates/js/translated/attachment.js:114 +msgid "All selected attachments will be deleted" +msgstr "" + +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 +msgid "No attachments found" +msgstr "" + +#: templates/js/translated/attachment.js:315 +msgid "Edit Attachment" +msgstr "" + +#: templates/js/translated/attachment.js:346 +msgid "Upload Date" +msgstr "" + +#: templates/js/translated/attachment.js:366 +msgid "Edit attachment" +msgstr "" + +#: templates/js/translated/attachment.js:374 +msgid "Delete attachment" +msgstr "" + +#: templates/js/translated/barcode.js:43 +msgid "Scan barcode data here using barcode scanner" +msgstr "" + +#: templates/js/translated/barcode.js:45 +msgid "Enter barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:59 +msgid "Scan barcode using connected webcam" +msgstr "" + +#: templates/js/translated/barcode.js:138 +msgid "Enter optional notes for stock transfer" +msgstr "" + +#: templates/js/translated/barcode.js:139 +msgid "Enter notes" +msgstr "" + +#: templates/js/translated/barcode.js:188 +msgid "Server error" +msgstr "" + +#: templates/js/translated/barcode.js:217 +msgid "Unknown response from server" +msgstr "" + +#: templates/js/translated/barcode.js:252 +#: templates/js/translated/modals.js:1120 +msgid "Invalid server response" +msgstr "" + +#: templates/js/translated/barcode.js:372 +msgid "Scan barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:420 templates/navbar.html:114 +msgid "Scan Barcode" +msgstr "" + +#: templates/js/translated/barcode.js:440 +msgid "No URL in response" +msgstr "" + +#: templates/js/translated/barcode.js:481 +msgid "This will remove the link to the associated barcode" +msgstr "" + +#: templates/js/translated/barcode.js:487 +msgid "Unlink" +msgstr "" + +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 +msgid "Remove stock item" +msgstr "" + +#: templates/js/translated/barcode.js:593 +msgid "Scan Stock Items Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:595 +msgid "Scan stock item barcode to check in to this location" +msgstr "" + +#: templates/js/translated/barcode.js:598 +#: templates/js/translated/barcode.js:795 +msgid "Check In" +msgstr "" + +#: templates/js/translated/barcode.js:630 +msgid "No barcode provided" +msgstr "" + +#: templates/js/translated/barcode.js:670 +msgid "Stock Item already scanned" +msgstr "" + +#: templates/js/translated/barcode.js:674 +msgid "Stock Item already in this location" +msgstr "" + +#: templates/js/translated/barcode.js:681 +msgid "Added stock item" +msgstr "" + +#: templates/js/translated/barcode.js:690 +msgid "Barcode does not match valid stock item" +msgstr "" + +#: templates/js/translated/barcode.js:709 +msgid "Scan Stock Container Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:711 +msgid "Scan stock container barcode to check in to this location" +msgstr "" + +#: templates/js/translated/barcode.js:745 +msgid "Barcode does not match valid stock location" +msgstr "" + +#: templates/js/translated/barcode.js:789 +msgid "Check Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:858 +#: templates/js/translated/barcode.js:867 +msgid "Barcode does not match a valid location" +msgstr "" + +#: templates/js/translated/bom.js:78 +msgid "Create BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:132 +msgid "Display row data" +msgstr "" + +#: templates/js/translated/bom.js:188 +msgid "Row Data" +msgstr "" + +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 +#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 +msgid "Close" +msgstr "" + +#: templates/js/translated/bom.js:306 +msgid "Download BOM Template" +msgstr "" + +#: templates/js/translated/bom.js:351 +msgid "Multi Level BOM" +msgstr "" + +#: templates/js/translated/bom.js:352 +msgid "Include BOM data for subassemblies" +msgstr "" + +#: templates/js/translated/bom.js:357 +msgid "Levels" +msgstr "" + +#: templates/js/translated/bom.js:358 +msgid "Select maximum number of BOM levels to export (0 = all levels)" +msgstr "" + +#: templates/js/translated/bom.js:365 +msgid "Include Alternative Parts" +msgstr "" + +#: templates/js/translated/bom.js:366 +msgid "Include alternative parts in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:371 +msgid "Include Parameter Data" +msgstr "" + +#: templates/js/translated/bom.js:372 +msgid "Include part parameter data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:377 +msgid "Include Stock Data" +msgstr "" + +#: templates/js/translated/bom.js:378 +msgid "Include part stock data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:383 +msgid "Include Manufacturer Data" +msgstr "" + +#: templates/js/translated/bom.js:384 +msgid "Include part manufacturer data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:389 +msgid "Include Supplier Data" +msgstr "" + +#: templates/js/translated/bom.js:390 +msgid "Include part supplier data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:395 +msgid "Include Pricing Data" +msgstr "" + +#: templates/js/translated/bom.js:396 +msgid "Include part pricing data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:591 +msgid "Remove substitute part" +msgstr "" + +#: templates/js/translated/bom.js:645 +msgid "Select and add a new substitute part using the input below" +msgstr "" + +#: templates/js/translated/bom.js:656 +msgid "Are you sure you wish to remove this substitute part link?" +msgstr "" + +#: templates/js/translated/bom.js:662 +msgid "Remove Substitute Part" +msgstr "" + +#: templates/js/translated/bom.js:701 +msgid "Add Substitute" +msgstr "" + +#: templates/js/translated/bom.js:702 +msgid "Edit BOM Item Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:764 +msgid "All selected BOM items will be deleted" +msgstr "" + +#: templates/js/translated/bom.js:780 +msgid "Delete selected BOM items?" +msgstr "" + +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:946 +msgid "Substitutes Available" +msgstr "" + +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 +msgid "Variant stock allowed" +msgstr "" + +#: templates/js/translated/bom.js:1014 +msgid "Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:1139 +msgid "BOM pricing is complete" +msgstr "" + +#: templates/js/translated/bom.js:1144 +msgid "BOM pricing is incomplete" +msgstr "" + +#: templates/js/translated/bom.js:1151 +msgid "No pricing available" +msgstr "" + +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 +msgid "No Stock Available" +msgstr "" + +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 +msgid "Includes substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 +msgid "Consumable item" +msgstr "" + +#: templates/js/translated/bom.js:1279 +msgid "Validate BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1281 +msgid "This line has been validated" +msgstr "" + +#: templates/js/translated/bom.js:1283 +msgid "Edit substitute parts" +msgstr "" + +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +msgid "Edit BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1287 +msgid "Delete BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1307 +msgid "View BOM" +msgstr "" + +#: templates/js/translated/bom.js:1391 +msgid "No BOM items found" +msgstr "" + +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 +msgid "Required Part" +msgstr "" + +#: templates/js/translated/bom.js:1677 +msgid "Inherited from parent BOM" +msgstr "" + +#: templates/js/translated/build.js:139 +msgid "Edit Build Order" +msgstr "" + +#: templates/js/translated/build.js:182 +msgid "Create Build Order" +msgstr "" + +#: templates/js/translated/build.js:214 +msgid "Cancel Build Order" +msgstr "" + +#: templates/js/translated/build.js:223 +msgid "Are you sure you wish to cancel this build?" +msgstr "" + +#: templates/js/translated/build.js:229 +msgid "Stock items have been allocated to this build order" +msgstr "" + +#: templates/js/translated/build.js:236 +msgid "There are incomplete outputs remaining for this build order" +msgstr "" + +#: templates/js/translated/build.js:288 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:296 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "" + +#: templates/js/translated/build.js:301 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:319 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 +msgid "Next available serial number" +msgstr "" + +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 +msgid "Latest serial number" +msgstr "" + +#: templates/js/translated/build.js:371 +msgid "The Bill of Materials contains trackable parts" +msgstr "" + +#: templates/js/translated/build.js:372 +msgid "Build outputs must be generated individually" +msgstr "" + +#: templates/js/translated/build.js:380 +msgid "Trackable parts can have serial numbers specified" +msgstr "" + +#: templates/js/translated/build.js:381 +msgid "Enter serial numbers to generate multiple single build outputs" +msgstr "" + +#: templates/js/translated/build.js:388 +msgid "Create Build Output" +msgstr "" + +#: templates/js/translated/build.js:419 +msgid "Allocate stock items to this build output" +msgstr "" + +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" +msgstr "" + +#: templates/js/translated/build.js:436 +msgid "Complete build output" +msgstr "" + +#: templates/js/translated/build.js:444 +msgid "Scrap build output" +msgstr "" + +#: templates/js/translated/build.js:451 +msgid "Delete build output" +msgstr "" + +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" +msgstr "" + +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 +msgid "Select Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 +msgid "At least one build output must be selected" +msgstr "" + +#: templates/js/translated/build.js:590 +msgid "Selected build outputs will be marked as complete" +msgstr "" + +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 +msgid "Output" +msgstr "" + +#: templates/js/translated/build.js:622 +msgid "Complete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:719 +msgid "Selected build outputs will be marked as scrapped" +msgstr "" + +#: templates/js/translated/build.js:721 +msgid "Scrapped output are marked as rejected" +msgstr "" + +#: templates/js/translated/build.js:722 +msgid "Allocated stock items will no longer be available" +msgstr "" + +#: templates/js/translated/build.js:723 +msgid "The completion status of the build order will not be adjusted" +msgstr "" + +#: templates/js/translated/build.js:754 +msgid "Scrap Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:844 +msgid "Selected build outputs will be deleted" +msgstr "" + +#: templates/js/translated/build.js:846 +msgid "Build output data will be permanently deleted" +msgstr "" + +#: templates/js/translated/build.js:847 +msgid "Allocated stock items will be returned to stock" +msgstr "" + +#: templates/js/translated/build.js:865 +msgid "Delete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:952 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 +msgid "Location not specified" +msgstr "" + +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1108 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 +msgid "No active build outputs found" +msgstr "" + +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" +msgstr "" + +#: templates/js/translated/build.js:1388 +msgid "Required Tests" +msgstr "" + +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 +msgid "Select Parts" +msgstr "" + +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 +msgid "You must select at least one part to allocate" +msgstr "" + +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 +msgid "Specify stock allocation quantity" +msgstr "" + +#: templates/js/translated/build.js:1701 +msgid "All Parts Allocated" +msgstr "" + +#: templates/js/translated/build.js:1702 +msgid "All selected parts have been fully allocated" +msgstr "" + +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 +msgid "Select source location (leave blank to take from all locations)" +msgstr "" + +#: templates/js/translated/build.js:1744 +msgid "Allocate Stock Items to Build Order" +msgstr "" + +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 +msgid "No matching stock locations" +msgstr "" + +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 +msgid "No matching stock items" +msgstr "" + +#: templates/js/translated/build.js:1925 +msgid "Automatic Stock Allocation" +msgstr "" + +#: templates/js/translated/build.js:1926 +msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" +msgstr "" + +#: templates/js/translated/build.js:1928 +msgid "If a location is specified, stock will only be allocated from that location" +msgstr "" + +#: templates/js/translated/build.js:1929 +msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" +msgstr "" + +#: templates/js/translated/build.js:1930 +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:1961 +msgid "Allocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:2067 +msgid "No builds matching query" +msgstr "" + +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 +msgid "Select" +msgstr "" + +#: templates/js/translated/build.js:2116 +msgid "Build order is overdue" +msgstr "" + +#: templates/js/translated/build.js:2162 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 +msgid "No user information" +msgstr "" + +#: templates/js/translated/build.js:2213 +msgid "group" +msgstr "" + +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 +msgid "Add Manufacturer" +msgstr "" + +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 +msgid "Add Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:132 +msgid "Edit Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 +msgid "Add Supplier" +msgstr "" + +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 +msgid "Add Supplier Part" +msgstr "" + +#: templates/js/translated/company.js:344 +msgid "All selected supplier parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:360 +msgid "Delete Supplier Parts" +msgstr "" + +#: templates/js/translated/company.js:465 +msgid "Add new Company" +msgstr "" + +#: templates/js/translated/company.js:536 +msgid "Parts Supplied" +msgstr "" + +#: templates/js/translated/company.js:545 +msgid "Parts Manufactured" +msgstr "" + +#: templates/js/translated/company.js:560 +msgid "No company information found" +msgstr "" + +#: templates/js/translated/company.js:609 +msgid "Create New Contact" +msgstr "" + +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 +msgid "Edit Contact" +msgstr "" + +#: templates/js/translated/company.js:662 +msgid "All selected contacts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 +msgid "Role" +msgstr "" + +#: templates/js/translated/company.js:676 +msgid "Delete Contacts" +msgstr "" + +#: templates/js/translated/company.js:707 +msgid "No contacts found" +msgstr "" + +#: templates/js/translated/company.js:720 +msgid "Phone Number" +msgstr "" + +#: templates/js/translated/company.js:726 +msgid "Email Address" +msgstr "" + +#: templates/js/translated/company.js:752 +msgid "Delete Contact" +msgstr "" + +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 +msgid "All selected manufacturer parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1117 +msgid "Delete Manufacturer Parts" +msgstr "" + +#: templates/js/translated/company.js:1151 +msgid "All selected parameters will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1165 +msgid "Delete Parameters" +msgstr "" + +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 +msgid "No manufacturer parts found" +msgstr "" + +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 +msgid "Template part" +msgstr "" + +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 +msgid "Assembled part" +msgstr "" + +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 +msgid "No parameters found" +msgstr "" + +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 +msgid "Edit parameter" +msgstr "" + +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 +msgid "Delete parameter" +msgstr "" + +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 +msgid "Edit Parameter" +msgstr "" + +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 +msgid "Delete Parameter" +msgstr "" + +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 +msgid "No supplier parts found" +msgstr "" + +#: templates/js/translated/company.js:1654 +msgid "Base Units" +msgstr "" + +#: templates/js/translated/company.js:1684 +msgid "Availability" +msgstr "" + +#: templates/js/translated/company.js:1715 +msgid "Edit supplier part" +msgstr "" + +#: templates/js/translated/company.js:1716 +msgid "Delete supplier part" +msgstr "" + +#: templates/js/translated/company.js:1769 +#: templates/js/translated/pricing.js:694 +msgid "Delete Price Break" +msgstr "" + +#: templates/js/translated/company.js:1779 +#: templates/js/translated/pricing.js:712 +msgid "Edit Price Break" +msgstr "" + +#: templates/js/translated/company.js:1794 +msgid "No price break information found" +msgstr "" + +#: templates/js/translated/company.js:1823 +msgid "Last updated" +msgstr "" + +#: templates/js/translated/company.js:1830 +msgid "Edit price break" +msgstr "" + +#: templates/js/translated/company.js:1831 +msgid "Delete price break" +msgstr "" + +#: templates/js/translated/filters.js:186 +#: templates/js/translated/filters.js:672 +msgid "true" +msgstr "" + +#: templates/js/translated/filters.js:190 +#: templates/js/translated/filters.js:673 +msgid "false" +msgstr "" + +#: templates/js/translated/filters.js:214 +msgid "Select filter" +msgstr "" + +#: templates/js/translated/filters.js:437 +msgid "Print Labels" +msgstr "" + +#: templates/js/translated/filters.js:441 +msgid "Print Reports" +msgstr "" + +#: templates/js/translated/filters.js:453 +msgid "Download table data" +msgstr "" + +#: templates/js/translated/filters.js:460 +msgid "Reload table data" +msgstr "" + +#: templates/js/translated/filters.js:469 +msgid "Add new filter" +msgstr "" + +#: templates/js/translated/filters.js:477 +msgid "Clear all filters" +msgstr "" + +#: templates/js/translated/filters.js:582 +msgid "Create filter" +msgstr "" + +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 +msgid "Action Prohibited" +msgstr "" + +#: templates/js/translated/forms.js:376 +msgid "Create operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:391 +msgid "Update operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:405 +msgid "Delete operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:419 +msgid "View operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:772 +msgid "Keep this form open" +msgstr "" + +#: templates/js/translated/forms.js:874 +msgid "Enter a valid number" +msgstr "" + +#: templates/js/translated/forms.js:1422 templates/modals.html:19 +#: templates/modals.html:43 +msgid "Form errors exist" +msgstr "" + +#: templates/js/translated/forms.js:1876 +msgid "No results found" +msgstr "" + +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 +msgid "Searching" +msgstr "" + +#: templates/js/translated/forms.js:2394 +msgid "Clear input" +msgstr "" + +#: templates/js/translated/forms.js:2851 +msgid "File Column" +msgstr "" + +#: templates/js/translated/forms.js:2851 +msgid "Field Name" +msgstr "" + +#: templates/js/translated/forms.js:2863 +msgid "Select Columns" +msgstr "" + +#: templates/js/translated/helpers.js:77 +msgid "YES" +msgstr "" + +#: templates/js/translated/helpers.js:80 +msgid "NO" +msgstr "" + +#: templates/js/translated/helpers.js:93 +msgid "True" +msgstr "" + +#: templates/js/translated/helpers.js:94 +msgid "False" +msgstr "" + +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" +msgstr "" + +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 +msgid "Select Items" +msgstr "" + +#: templates/js/translated/label.js:54 +msgid "No items selected for printing" +msgstr "" + +#: templates/js/translated/label.js:72 +msgid "No Labels Found" +msgstr "" + +#: templates/js/translated/label.js:73 +msgid "No label templates found which match the selected items" +msgstr "" + +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 +msgid "Labels sent to printer" +msgstr "" + +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 +msgid "Cancel" +msgstr "" + +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 +#: templates/modals.html:28 templates/modals.html:51 +msgid "Submit" +msgstr "" + +#: templates/js/translated/modals.js:156 +msgid "Form Title" +msgstr "" + +#: templates/js/translated/modals.js:445 +msgid "Waiting for server..." +msgstr "" + +#: templates/js/translated/modals.js:596 +msgid "Show Error Information" +msgstr "" + +#: templates/js/translated/modals.js:682 +msgid "Accept" +msgstr "" + +#: templates/js/translated/modals.js:740 +msgid "Loading Data" +msgstr "" + +#: templates/js/translated/modals.js:1011 +msgid "Invalid response from server" +msgstr "" + +#: templates/js/translated/modals.js:1011 +msgid "Form data missing from server response" +msgstr "" + +#: templates/js/translated/modals.js:1023 +msgid "Error posting form data" +msgstr "" + +#: templates/js/translated/modals.js:1120 +msgid "JSON response missing form data" +msgstr "" + +#: templates/js/translated/modals.js:1135 +msgid "Error 400: Bad Request" +msgstr "" + +#: templates/js/translated/modals.js:1136 +msgid "Server returned error code 400" +msgstr "" + +#: templates/js/translated/modals.js:1159 +msgid "Error requesting form data" +msgstr "" + +#: templates/js/translated/news.js:33 +msgid "No news found" +msgstr "" + +#: templates/js/translated/news.js:38 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 +msgid "ID" +msgstr "" + +#: templates/js/translated/notification.js:52 +msgid "Age" +msgstr "" + +#: templates/js/translated/notification.js:65 +msgid "Notification" +msgstr "" + +#: templates/js/translated/notification.js:224 +msgid "Mark as unread" +msgstr "" + +#: templates/js/translated/notification.js:228 +msgid "Mark as read" +msgstr "" + +#: templates/js/translated/notification.js:254 +msgid "No unread notifications" +msgstr "" + +#: templates/js/translated/notification.js:296 templates/notifications.html:12 +msgid "Notifications will load here" +msgstr "" + +#: templates/js/translated/order.js:89 +msgid "Add Extra Line Item" +msgstr "" + +#: templates/js/translated/order.js:126 +msgid "Export Order" +msgstr "" + +#: templates/js/translated/order.js:241 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:255 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:268 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:281 +#: templates/js/translated/purchase_order.js:1981 +msgid "No line items found" +msgstr "" + +#: templates/js/translated/order.js:369 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:370 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:374 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/part.js:90 +msgid "Part Attributes" +msgstr "" + +#: templates/js/translated/part.js:94 +msgid "Part Creation Options" +msgstr "" + +#: templates/js/translated/part.js:98 +msgid "Part Duplication Options" +msgstr "" + +#: templates/js/translated/part.js:121 +msgid "Add Part Category" +msgstr "" + +#: templates/js/translated/part.js:305 +msgid "Parent part category" +msgstr "" + +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 +msgid "Icon (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/part.js:349 +msgid "Create Part Category" +msgstr "" + +#: templates/js/translated/part.js:352 +msgid "Create new category after this one" +msgstr "" + +#: templates/js/translated/part.js:353 +msgid "Part category created" +msgstr "" + +#: templates/js/translated/part.js:367 +msgid "Edit Part Category" +msgstr "" + +#: templates/js/translated/part.js:380 +msgid "Are you sure you want to delete this part category?" +msgstr "" + +#: templates/js/translated/part.js:385 +msgid "Move to parent category" +msgstr "" + +#: templates/js/translated/part.js:394 +msgid "Delete Part Category" +msgstr "" + +#: templates/js/translated/part.js:398 +msgid "Action for parts in this category" +msgstr "" + +#: templates/js/translated/part.js:403 +msgid "Action for child categories" +msgstr "" + +#: templates/js/translated/part.js:427 +msgid "Create Part" +msgstr "" + +#: templates/js/translated/part.js:429 +msgid "Create another part after this one" +msgstr "" + +#: templates/js/translated/part.js:430 +msgid "Part created successfully" +msgstr "" + +#: templates/js/translated/part.js:458 +msgid "Edit Part" +msgstr "" + +#: templates/js/translated/part.js:460 +msgid "Part edited" +msgstr "" + +#: templates/js/translated/part.js:471 +msgid "Create Part Variant" +msgstr "" + +#: templates/js/translated/part.js:528 +msgid "Active Part" +msgstr "" + +#: templates/js/translated/part.js:529 +msgid "Part cannot be deleted as it is currently active" +msgstr "" + +#: templates/js/translated/part.js:543 +msgid "Deleting this part cannot be reversed" +msgstr "" + +#: templates/js/translated/part.js:545 +msgid "Any stock items for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:546 +msgid "This part will be removed from any Bills of Material" +msgstr "" + +#: templates/js/translated/part.js:547 +msgid "All manufacturer and supplier information for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:554 +msgid "Delete Part" +msgstr "" + +#: templates/js/translated/part.js:590 +msgid "You are subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:592 +msgid "You have subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:597 +msgid "Subscribe to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:599 +msgid "You have unsubscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:616 +msgid "Validating the BOM will mark each line item as valid" +msgstr "" + +#: templates/js/translated/part.js:626 +msgid "Validate Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:629 +msgid "Validated Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:654 +msgid "Copy Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 +msgid "Low stock" +msgstr "" + +#: templates/js/translated/part.js:685 +msgid "No stock available" +msgstr "" + +#: templates/js/translated/part.js:745 +msgid "Demand" +msgstr "" + +#: templates/js/translated/part.js:768 +msgid "Unit" +msgstr "" + +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 +msgid "Virtual part" +msgstr "" + +#: templates/js/translated/part.js:803 +msgid "Subscribed part" +msgstr "" + +#: templates/js/translated/part.js:807 +msgid "Salable part" +msgstr "" + +#: templates/js/translated/part.js:886 +msgid "Schedule generation of a new stocktake report." +msgstr "" + +#: templates/js/translated/part.js:886 +msgid "Once complete, the stocktake report will be available for download." +msgstr "" + +#: templates/js/translated/part.js:894 +msgid "Generate Stocktake Report" +msgstr "" + +#: templates/js/translated/part.js:898 +msgid "Stocktake report scheduled" +msgstr "" + +#: templates/js/translated/part.js:1047 +msgid "No stocktake information available" +msgstr "" + +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 +msgid "Edit Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 +msgid "Delete Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1278 +msgid "No variants found" +msgstr "" + +#: templates/js/translated/part.js:1596 +msgid "No part parameter templates found" +msgstr "" + +#: templates/js/translated/part.js:1659 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1671 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/js/translated/part.js:1679 +msgid "Delete Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 +msgid "No purchase orders found" +msgstr "" + +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 +msgid "This line item is overdue" +msgstr "" + +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 +msgid "Receive line item" +msgstr "" + +#: templates/js/translated/part.js:1964 +msgid "Delete part relationship" +msgstr "" + +#: templates/js/translated/part.js:1986 +msgid "Delete Part Relationship" +msgstr "" + +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 +msgid "No parts found" +msgstr "" + +#: templates/js/translated/part.js:2195 +msgid "Set the part category for the selected parts" +msgstr "" + +#: templates/js/translated/part.js:2200 +msgid "Set Part Category" +msgstr "" + +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "" + +#: templates/js/translated/part.js:2283 +msgid "parts" +msgstr "" + +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 +msgid "No subcategories found" +msgstr "" + +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 +msgid "Display as tree" +msgstr "" + +#: templates/js/translated/part.js:2756 +msgid "Load Subcategories" +msgstr "" + +#: templates/js/translated/part.js:2772 +msgid "Subscribed category" +msgstr "" + +#: templates/js/translated/part.js:2849 +msgid "No test templates matching query" +msgstr "" + +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 +msgid "Edit test result" +msgstr "" + +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 +msgid "Delete test result" +msgstr "" + +#: templates/js/translated/part.js:2905 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/translated/part.js:2921 +msgid "Edit Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:2935 +msgid "Delete Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 +msgid "No date specified" +msgstr "" + +#: templates/js/translated/part.js:3017 +msgid "Specified date is in the past" +msgstr "" + +#: templates/js/translated/part.js:3023 +msgid "Speculative" +msgstr "" + +#: templates/js/translated/part.js:3073 +msgid "No scheduling information available for this part" +msgstr "" + +#: templates/js/translated/part.js:3079 +msgid "Error fetching scheduling information for this part" +msgstr "" + +#: templates/js/translated/part.js:3175 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:3191 +msgid "Maximum Quantity" +msgstr "" + +#: templates/js/translated/part.js:3236 +msgid "Minimum Stock Level" +msgstr "" + +#: templates/js/translated/plugin.js:45 +msgid "No plugins found" +msgstr "" + +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 +msgid "This plugin is active" +msgstr "" + +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" +msgstr "" + +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 +msgid "Disable Plugin" +msgstr "" + +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 +msgid "Enable Plugin" +msgstr "" + +#: templates/js/translated/plugin.js:157 +msgid "The Plugin was installed" +msgstr "" + +#: templates/js/translated/plugin.js:176 +msgid "Are you sure you want to enable this plugin?" +msgstr "" + +#: templates/js/translated/plugin.js:180 +msgid "Are you sure you want to disable this plugin?" +msgstr "" + +#: templates/js/translated/plugin.js:188 +msgid "Enable" +msgstr "" + +#: templates/js/translated/plugin.js:188 +msgid "Disable" +msgstr "" + +#: templates/js/translated/plugin.js:202 +msgid "Plugin updated" +msgstr "" + +#: templates/js/translated/pricing.js:159 +msgid "Error fetching currency data" +msgstr "" + +#: templates/js/translated/pricing.js:321 +msgid "No BOM data available" +msgstr "" + +#: templates/js/translated/pricing.js:463 +msgid "No supplier pricing data available" +msgstr "" + +#: templates/js/translated/pricing.js:572 +msgid "No price break data available" +msgstr "" + +#: templates/js/translated/pricing.js:755 +msgid "No purchase history data available" +msgstr "" + +#: templates/js/translated/pricing.js:791 +msgid "Purchase Price History" +msgstr "" + +#: templates/js/translated/pricing.js:894 +msgid "No sales history data available" +msgstr "" + +#: templates/js/translated/pricing.js:916 +msgid "Sale Price History" +msgstr "" + +#: templates/js/translated/pricing.js:1005 +msgid "No variant data available" +msgstr "" + +#: templates/js/translated/pricing.js:1045 +msgid "Variant Part" +msgstr "" + +#: templates/js/translated/purchase_order.js:166 +msgid "Select purchase order to duplicate" +msgstr "" + +#: templates/js/translated/purchase_order.js:173 +msgid "Duplicate Line Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:174 +msgid "Duplicate all line items from the selected order" +msgstr "" + +#: templates/js/translated/purchase_order.js:181 +msgid "Duplicate Extra Lines" +msgstr "" + +#: templates/js/translated/purchase_order.js:182 +msgid "Duplicate extra line items from the selected order" +msgstr "" + +#: templates/js/translated/purchase_order.js:203 +msgid "Edit Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:220 +msgid "Duplication Options" +msgstr "" + +#: templates/js/translated/purchase_order.js:447 +msgid "Complete Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 +msgid "Mark this order as complete?" +msgstr "" + +#: templates/js/translated/purchase_order.js:470 +msgid "All line items have been received" +msgstr "" + +#: templates/js/translated/purchase_order.js:475 +msgid "This order has line items which have not been marked as received." +msgstr "" + +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 +msgid "Completing this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/purchase_order.js:499 +msgid "Cancel Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:504 +msgid "Are you sure you wish to cancel this purchase order?" +msgstr "" + +#: templates/js/translated/purchase_order.js:510 +msgid "This purchase order can not be cancelled" +msgstr "" + +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 +msgid "After placing this order, line items will no longer be editable." +msgstr "" + +#: templates/js/translated/purchase_order.js:536 +msgid "Issue Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:628 +msgid "At least one purchaseable part must be selected" +msgstr "" + +#: templates/js/translated/purchase_order.js:653 +msgid "Quantity to order" +msgstr "" + +#: templates/js/translated/purchase_order.js:662 +msgid "New supplier part" +msgstr "" + +#: templates/js/translated/purchase_order.js:680 +msgid "New purchase order" +msgstr "" + +#: templates/js/translated/purchase_order.js:712 +msgid "Add to purchase order" +msgstr "" + +#: templates/js/translated/purchase_order.js:860 +msgid "No matching supplier parts" +msgstr "" + +#: templates/js/translated/purchase_order.js:879 +msgid "No matching purchase orders" +msgstr "" + +#: templates/js/translated/purchase_order.js:1066 +msgid "Select Line Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 +msgid "At least one line item must be selected" +msgstr "" + +#: templates/js/translated/purchase_order.js:1097 +msgid "Received Quantity" +msgstr "" + +#: templates/js/translated/purchase_order.js:1108 +msgid "Quantity to receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1184 +msgid "Stock Status" +msgstr "" + +#: templates/js/translated/purchase_order.js:1198 +msgid "Add barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1199 +msgid "Remove barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1202 +msgid "Specify location" +msgstr "" + +#: templates/js/translated/purchase_order.js:1210 +msgid "Add batch code" +msgstr "" + +#: templates/js/translated/purchase_order.js:1221 +msgid "Add serial numbers" +msgstr "" + +#: templates/js/translated/purchase_order.js:1273 +msgid "Serials" +msgstr "" + +#: templates/js/translated/purchase_order.js:1298 +msgid "Order Code" +msgstr "" + +#: templates/js/translated/purchase_order.js:1300 +msgid "Quantity to Receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 +msgid "Confirm receipt of items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1327 +msgid "Receive Purchase Order Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1395 +msgid "Scan Item Barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1396 +msgid "Scan barcode on incoming item (must not match any existing stock items)" +msgstr "" + +#: templates/js/translated/purchase_order.js:1410 +msgid "Invalid barcode data" +msgstr "" + +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 +msgid "Order is overdue" +msgstr "" + +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 +msgid "Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1834 +msgid "All selected Line items will be deleted" +msgstr "" + +#: templates/js/translated/purchase_order.js:1852 +msgid "Delete selected Line items?" +msgstr "" + +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 +msgid "Duplicate Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 +msgid "Edit Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 +msgid "Delete Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 +msgid "Duplicate line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 +msgid "Edit line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 +msgid "Delete line item" +msgstr "" + +#: templates/js/translated/report.js:63 +msgid "items selected" +msgstr "" + +#: templates/js/translated/report.js:71 +msgid "Select Report Template" +msgstr "" + +#: templates/js/translated/report.js:86 +msgid "Select Test Report Template" +msgstr "" + +#: templates/js/translated/report.js:140 +msgid "No Reports Found" +msgstr "" + +#: templates/js/translated/report.js:141 +msgid "No report templates found which match the selected items" +msgstr "" + +#: templates/js/translated/return_order.js:60 +#: templates/js/translated/sales_order.js:86 +msgid "Add Customer" +msgstr "" + +#: templates/js/translated/return_order.js:131 +msgid "Create Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:146 +msgid "Edit Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:166 +msgid "Issue Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:183 +msgid "Are you sure you wish to cancel this Return Order?" +msgstr "" + +#: templates/js/translated/return_order.js:190 +msgid "Cancel Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:215 +msgid "Complete Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:263 +msgid "No return orders found" +msgstr "" + +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 +msgid "Invalid Customer" +msgstr "" + +#: templates/js/translated/return_order.js:559 +msgid "Receive Return Order Items" +msgstr "" + +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 +msgid "No matching line items" +msgstr "" + +#: templates/js/translated/return_order.js:795 +msgid "Mark item as received" +msgstr "" + +#: templates/js/translated/sales_order.js:158 +msgid "Create Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:173 +msgid "Edit Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:288 +msgid "No stock items have been allocated to this shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:293 +msgid "The following stock items will be shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:333 +msgid "Complete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:357 +msgid "Confirm Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:413 +msgid "No pending shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:417 +msgid "No stock items have been allocated to pending shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:427 +msgid "Complete Shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:449 +msgid "Skip" +msgstr "" + +#: templates/js/translated/sales_order.js:510 +msgid "This order has line items which have not been completed." +msgstr "" + +#: templates/js/translated/sales_order.js:532 +msgid "Issue this Sales Order?" +msgstr "" + +#: templates/js/translated/sales_order.js:537 +msgid "Issue Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:556 +msgid "Cancel Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:561 +msgid "Cancelling this order means that the order will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:615 +msgid "Create New Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:725 +msgid "No sales orders found" +msgstr "" + +#: templates/js/translated/sales_order.js:905 +msgid "Edit shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:908 +msgid "Complete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:913 +msgid "Delete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:930 +msgid "Edit Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:945 +msgid "Delete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:978 +msgid "No matching shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:1003 +msgid "Shipment Reference" +msgstr "" + +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 +msgid "Not shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:1045 +msgid "Tracking" +msgstr "" + +#: templates/js/translated/sales_order.js:1049 +msgid "Invoice" +msgstr "" + +#: templates/js/translated/sales_order.js:1216 +msgid "Add Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:1267 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1268 +msgid "Allocate Stock Items to Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:1474 +msgid "No sales order allocations found" +msgstr "" + +#: templates/js/translated/sales_order.js:1566 +msgid "Edit Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1580 +msgid "Confirm Delete Operation" +msgstr "" + +#: templates/js/translated/sales_order.js:1581 +msgid "Delete Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 +msgid "Shipped to customer" +msgstr "" + +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 +msgid "Stock location not specified" +msgstr "" + +#: templates/js/translated/sales_order.js:2005 +msgid "Allocate serial numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2009 +msgid "Purchase stock" +msgstr "" + +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 +msgid "Calculate price" +msgstr "" + +#: templates/js/translated/sales_order.js:2032 +msgid "Cannot be deleted as items have been shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:2035 +msgid "Cannot be deleted as items have been allocated" +msgstr "" + +#: templates/js/translated/sales_order.js:2106 +msgid "Allocate Serial Numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2213 +msgid "Update Unit Price" +msgstr "" + +#: templates/js/translated/search.js:270 +msgid "No results" +msgstr "" + +#: templates/js/translated/search.js:292 templates/search.html:25 +msgid "Enter search query" +msgstr "" + +#: templates/js/translated/search.js:342 +msgid "result" +msgstr "" + +#: templates/js/translated/search.js:342 +msgid "results" +msgstr "" + +#: templates/js/translated/search.js:352 +msgid "Minimize results" +msgstr "" + +#: templates/js/translated/search.js:355 +msgid "Remove results" +msgstr "" + +#: templates/js/translated/stock.js:98 +msgid "Serialize Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:129 +msgid "Confirm Stock Serialization" +msgstr "" + +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 +msgid "Edit Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:217 +msgid "New Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:219 +msgid "Create another location after this one" +msgstr "" + +#: templates/js/translated/stock.js:220 +msgid "Stock location created" +msgstr "" + +#: templates/js/translated/stock.js:234 +msgid "Are you sure you want to delete this stock location?" +msgstr "" + +#: templates/js/translated/stock.js:241 +msgid "Move to parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:250 +msgid "Delete Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:254 +msgid "Action for stock items in this stock location" +msgstr "" + +#: templates/js/translated/stock.js:259 +msgid "Action for sub-locations" +msgstr "" + +#: templates/js/translated/stock.js:313 +msgid "This part cannot be serialized" +msgstr "" + +#: templates/js/translated/stock.js:349 +msgid "Add given quantity as packs instead of individual items" +msgstr "" + +#: templates/js/translated/stock.js:362 +msgid "Enter initial quantity for this stock item" +msgstr "" + +#: templates/js/translated/stock.js:368 +msgid "Enter serial numbers for new stock (or leave blank)" +msgstr "" + +#: templates/js/translated/stock.js:439 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:459 +msgid "Duplicate Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:475 +msgid "Are you sure you want to delete this stock item?" +msgstr "" + +#: templates/js/translated/stock.js:480 +msgid "Delete Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:501 +msgid "Edit Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:543 +msgid "Create another item after this one" +msgstr "" + +#: templates/js/translated/stock.js:555 +msgid "Created new stock item" +msgstr "" + +#: templates/js/translated/stock.js:568 +msgid "Created multiple stock items" +msgstr "" + +#: templates/js/translated/stock.js:593 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:614 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:634 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:643 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:751 +msgid "Confirm stock assignment" +msgstr "" + +#: templates/js/translated/stock.js:752 +msgid "Assign Stock to Customer" +msgstr "" + +#: templates/js/translated/stock.js:829 +msgid "Warning: Merge operation cannot be reversed" +msgstr "" + +#: templates/js/translated/stock.js:830 +msgid "Some information will be lost when merging stock items" +msgstr "" + +#: templates/js/translated/stock.js:832 +msgid "Stock transaction history will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:833 +msgid "Supplier part information will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:928 +msgid "Confirm stock item merge" +msgstr "" + +#: templates/js/translated/stock.js:929 +msgid "Merge Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1024 +msgid "Transfer Stock" +msgstr "" + +#: templates/js/translated/stock.js:1025 +msgid "Move" +msgstr "" + +#: templates/js/translated/stock.js:1031 +msgid "Count Stock" +msgstr "" + +#: templates/js/translated/stock.js:1032 +msgid "Count" +msgstr "" + +#: templates/js/translated/stock.js:1036 +msgid "Remove Stock" +msgstr "" + +#: templates/js/translated/stock.js:1037 +msgid "Take" +msgstr "" + +#: templates/js/translated/stock.js:1041 +msgid "Add Stock" +msgstr "" + +#: templates/js/translated/stock.js:1042 users/models.py:389 +msgid "Add" +msgstr "" + +#: templates/js/translated/stock.js:1046 +msgid "Delete Stock" +msgstr "" + +#: templates/js/translated/stock.js:1143 +msgid "Quantity cannot be adjusted for serialized stock" +msgstr "" + +#: templates/js/translated/stock.js:1143 +msgid "Specify stock quantity" +msgstr "" + +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 +msgid "Select Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "" + +#: templates/js/translated/stock.js:1224 +msgid "Confirm stock adjustment" +msgstr "" + +#: templates/js/translated/stock.js:1360 +msgid "PASS" +msgstr "" + +#: templates/js/translated/stock.js:1362 +msgid "FAIL" +msgstr "" + +#: templates/js/translated/stock.js:1367 +msgid "NO RESULT" +msgstr "" + +#: templates/js/translated/stock.js:1429 +msgid "Pass test" +msgstr "" + +#: templates/js/translated/stock.js:1432 +msgid "Add test result" +msgstr "" + +#: templates/js/translated/stock.js:1456 +msgid "No test results found" +msgstr "" + +#: templates/js/translated/stock.js:1520 +msgid "Test Date" +msgstr "" + +#: templates/js/translated/stock.js:1682 +msgid "Edit Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1704 +msgid "Delete Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1736 +msgid "In production" +msgstr "" + +#: templates/js/translated/stock.js:1740 +msgid "Installed in Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:1748 +msgid "Assigned to Sales Order" +msgstr "" + +#: templates/js/translated/stock.js:1754 +msgid "No stock location set" +msgstr "" + +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "" + +#: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 +msgid "Stock item has been installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:2081 +msgid "Stock item has been consumed by a build order" +msgstr "" + +#: templates/js/translated/stock.js:2085 +msgid "Stock item has expired" +msgstr "" + +#: templates/js/translated/stock.js:2087 +msgid "Stock item will expire soon" +msgstr "" + +#: templates/js/translated/stock.js:2092 +msgid "Stock item has been rejected" +msgstr "" + +#: templates/js/translated/stock.js:2094 +msgid "Stock item is lost" +msgstr "" + +#: templates/js/translated/stock.js:2096 +msgid "Stock item is destroyed" +msgstr "" + +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 +msgid "Depleted" +msgstr "" + +#: templates/js/translated/stock.js:2265 +msgid "Supplier part not specified" +msgstr "" + +#: templates/js/translated/stock.js:2312 +msgid "Stock Value" +msgstr "" + +#: templates/js/translated/stock.js:2440 +msgid "No stock items matching query" +msgstr "" + +#: templates/js/translated/stock.js:2544 +msgid "stock locations" +msgstr "" + +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" +msgstr "" + +#: templates/js/translated/stock.js:2817 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2821 +msgid "No changes" +msgstr "" + +#: templates/js/translated/stock.js:2833 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2855 +msgid "Location no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2872 +msgid "Build order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2887 +msgid "Purchase order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2904 +msgid "Sales Order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2921 +msgid "Return Order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2940 +msgid "Customer no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2958 +msgid "Stock item no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2976 +msgid "Added" +msgstr "" + +#: templates/js/translated/stock.js:2984 +msgid "Removed" +msgstr "" + +#: templates/js/translated/stock.js:3056 +msgid "No installed items" +msgstr "" + +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 +msgid "Uninstall Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:3165 +msgid "Select stock item to uninstall" +msgstr "" + +#: templates/js/translated/stock.js:3186 +msgid "Install another stock item into this item" +msgstr "" + +#: templates/js/translated/stock.js:3187 +msgid "Stock items can only be installed if they meet the following criteria" +msgstr "" + +#: templates/js/translated/stock.js:3189 +msgid "The Stock Item links to a Part which is the BOM for this Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:3190 +msgid "The Stock Item is currently available in stock" +msgstr "" + +#: templates/js/translated/stock.js:3191 +msgid "The Stock Item is not already installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:3192 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:3205 +msgid "Select part to install" +msgstr "" + +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 +msgid "Has project code" +msgstr "" + +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 +msgid "Order status" +msgstr "" + +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 +msgid "Outstanding" +msgstr "" + +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 +msgid "Assigned to me" +msgstr "" + +#: templates/js/translated/table_filters.js:158 +msgid "Trackable Part" +msgstr "" + +#: templates/js/translated/table_filters.js:162 +msgid "Assembled Part" +msgstr "" + +#: templates/js/translated/table_filters.js:166 +msgid "Has Available Stock" +msgstr "" + +#: templates/js/translated/table_filters.js:182 +msgid "Allow Variant Stock" +msgstr "" + +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 +msgid "Has Pricing" +msgstr "" + +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 +msgid "Include sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:235 +msgid "Include locations" +msgstr "" + +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 +msgid "Include subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 +msgid "Subscribed" +msgstr "" + +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 +msgid "Is Serialized" +msgstr "" + +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 +msgid "Serial number GTE" +msgstr "" + +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 +msgid "Serial number greater than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 +msgid "Serial number LTE" +msgstr "" + +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 +msgid "Serial number less than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 +msgid "Serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 +msgid "Batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 +msgid "Active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:326 +msgid "Show stock for active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:331 +msgid "Part is an assembly" +msgstr "" + +#: templates/js/translated/table_filters.js:335 +msgid "Is allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:336 +msgid "Item has been allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:341 +msgid "Stock is available for use" +msgstr "" + +#: templates/js/translated/table_filters.js:346 +msgid "Include stock in sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:351 +msgid "Show stock items which are depleted" +msgstr "" + +#: templates/js/translated/table_filters.js:356 +msgid "Show items which are in stock" +msgstr "" + +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: templates/js/translated/table_filters.js:361 +msgid "Show items which are in production" +msgstr "" + +#: templates/js/translated/table_filters.js:365 +msgid "Include Variants" +msgstr "" + +#: templates/js/translated/table_filters.js:366 +msgid "Include stock items for variant parts" +msgstr "" + +#: templates/js/translated/table_filters.js:371 +msgid "Show stock items which are installed in another item" +msgstr "" + +#: templates/js/translated/table_filters.js:376 +msgid "Show items which have been assigned to a customer" +msgstr "" + +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 +msgid "Stock status" +msgstr "" + +#: templates/js/translated/table_filters.js:400 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:409 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:414 +msgid "Has purchase price" +msgstr "" + +#: templates/js/translated/table_filters.js:415 +msgid "Show stock items which have a purchase price set" +msgstr "" + +#: templates/js/translated/table_filters.js:419 +msgid "Expiry Date before" +msgstr "" + +#: templates/js/translated/table_filters.js:423 +msgid "Expiry Date after" +msgstr "" + +#: templates/js/translated/table_filters.js:436 +msgid "Show stock items which have expired" +msgstr "" + +#: templates/js/translated/table_filters.js:442 +msgid "Show stock which is close to expiring" +msgstr "" + +#: templates/js/translated/table_filters.js:456 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:460 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:511 +msgid "Build status" +msgstr "" + +#: templates/js/translated/table_filters.js:708 +msgid "Include parts in subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:713 +msgid "Show active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:721 +msgid "Available stock" +msgstr "" + +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 +msgid "Has Units" +msgstr "" + +#: templates/js/translated/table_filters.js:730 +msgid "Part has defined units" +msgstr "" + +#: templates/js/translated/table_filters.js:734 +msgid "Has IPN" +msgstr "" + +#: templates/js/translated/table_filters.js:735 +msgid "Part has internal part number" +msgstr "" + +#: templates/js/translated/table_filters.js:739 +msgid "In stock" +msgstr "" + +#: templates/js/translated/table_filters.js:747 +msgid "Purchasable" +msgstr "" + +#: templates/js/translated/table_filters.js:759 +msgid "Has stocktake entries" +msgstr "" + +#: templates/js/translated/table_filters.js:821 +msgid "Has Choices" +msgstr "" + +#: templates/js/translated/tables.js:92 +msgid "Display calendar view" +msgstr "" + +#: templates/js/translated/tables.js:102 +msgid "Display list view" +msgstr "" + +#: templates/js/translated/tables.js:112 +msgid "Display tree view" +msgstr "" + +#: templates/js/translated/tables.js:130 +msgid "Expand all rows" +msgstr "" + +#: templates/js/translated/tables.js:136 +msgid "Collapse all rows" +msgstr "" + +#: templates/js/translated/tables.js:186 +msgid "Export Table Data" +msgstr "" + +#: templates/js/translated/tables.js:190 +msgid "Select File Format" +msgstr "" + +#: templates/js/translated/tables.js:529 +msgid "Loading data" +msgstr "" + +#: templates/js/translated/tables.js:532 +msgid "rows per page" +msgstr "" + +#: templates/js/translated/tables.js:537 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "Showing" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "to" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "of" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "rows" +msgstr "" + +#: templates/js/translated/tables.js:546 +msgid "No matching results" +msgstr "" + +#: templates/js/translated/tables.js:549 +msgid "Hide/Show pagination" +msgstr "" + +#: templates/js/translated/tables.js:555 +msgid "Toggle" +msgstr "" + +#: templates/js/translated/tables.js:558 +msgid "Columns" +msgstr "" + +#: templates/js/translated/tables.js:561 +msgid "All" +msgstr "" + +#: templates/navbar.html:45 +msgid "Buy" +msgstr "" + +#: templates/navbar.html:57 +msgid "Sell" +msgstr "" + +#: templates/navbar.html:121 +msgid "Show Notifications" +msgstr "" + +#: templates/navbar.html:124 +msgid "New Notifications" +msgstr "" + +#: templates/navbar.html:144 users/models.py:173 +msgid "Admin" +msgstr "" + +#: templates/navbar.html:148 +msgid "Logout" +msgstr "" + +#: templates/notes_buttons.html:6 templates/notes_buttons.html:7 +msgid "Save" +msgstr "" + +#: templates/notifications.html:9 +msgid "Show all notifications and history" +msgstr "" + +#: templates/qr_code.html:11 +msgid "QR data not provided" +msgstr "" + +#: templates/registration/logged_out.html:7 +msgid "You were logged out successfully." +msgstr "" + +#: templates/registration/logged_out.html:9 +msgid "Log in again" +msgstr "" + +#: templates/search.html:9 +msgid "Show full search results" +msgstr "" + +#: templates/search.html:12 +msgid "Clear search" +msgstr "" + +#: templates/search.html:15 +msgid "Close search menu" +msgstr "" + +#: templates/socialaccount/authentication_error.html:5 +msgid "Social Network Login Failure" +msgstr "" + +#: templates/socialaccount/authentication_error.html:8 +msgid "Account Login Failure" +msgstr "" + +#: templates/socialaccount/authentication_error.html:11 +msgid "An error occurred while attempting to login via your social network account." +msgstr "" + +#: templates/socialaccount/authentication_error.html:13 +msgid "Contact your system administrator for further information." +msgstr "" + +#: templates/socialaccount/login.html:13 +#, python-format +msgid "Connect %(provider)s" +msgstr "" + +#: templates/socialaccount/login.html:15 +#, python-format +msgid "You are about to connect a new third party account from %(provider)s." +msgstr "" + +#: templates/socialaccount/login.html:17 +#, python-format +msgid "Sign In Via %(provider)s" +msgstr "" + +#: templates/socialaccount/login.html:19 +#, python-format +msgid "You are about to sign in using a third party account from %(provider)s." +msgstr "" + +#: templates/socialaccount/login.html:24 +msgid "Continue" +msgstr "" + +#: templates/socialaccount/login.html:29 +msgid "Invalid SSO Provider" +msgstr "" + +#: templates/socialaccount/login.html:31 +msgid "The selected SSO provider is invalid, or has not been correctly configured" +msgstr "" + +#: templates/socialaccount/signup.html:10 +#, python-format +msgid "You are about to use your %(provider_name)s account to login to\n" +"%(site_name)s.
As a final step, please complete the following form:" +msgstr "" + +#: templates/socialaccount/snippets/provider_list.html:26 +msgid "Provider has not been configured" +msgstr "" + +#: templates/socialaccount/snippets/provider_list.html:35 +msgid "No SSO providers have been configured" +msgstr "" + +#: templates/stats.html:13 +msgid "Instance Name" +msgstr "" + +#: templates/stats.html:18 +msgid "Database" +msgstr "" + +#: templates/stats.html:26 +msgid "Server is running in debug mode" +msgstr "" + +#: templates/stats.html:33 +msgid "Docker Mode" +msgstr "" + +#: templates/stats.html:34 +msgid "Server is deployed using docker" +msgstr "" + +#: templates/stats.html:39 +msgid "Plugin Support" +msgstr "" + +#: templates/stats.html:43 +msgid "Plugin support enabled" +msgstr "" + +#: templates/stats.html:45 +msgid "Plugin support disabled" +msgstr "" + +#: templates/stats.html:52 +msgid "Server status" +msgstr "" + +#: templates/stats.html:55 +msgid "Healthy" +msgstr "" + +#: templates/stats.html:57 +msgid "Issues detected" +msgstr "" + +#: templates/stats.html:64 +msgid "Background Worker" +msgstr "" + +#: templates/stats.html:67 +msgid "Background worker not running" +msgstr "" + +#: templates/stats.html:75 +msgid "Email Settings" +msgstr "" + +#: templates/stats.html:78 +msgid "Email settings not configured" +msgstr "" + +#: templates/yesnolabel.html:4 +msgid "Yes" +msgstr "" + +#: templates/yesnolabel.html:6 +msgid "No" +msgstr "" + +#: users/admin.py:90 +msgid "Users" +msgstr "" + +#: users/admin.py:91 +msgid "Select which users are assigned to this group" +msgstr "" + +#: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "" + +#: users/admin.py:253 +msgid "Personal info" +msgstr "" + +#: users/admin.py:254 +msgid "Permissions" +msgstr "" + +#: users/admin.py:257 +msgid "Important dates" +msgstr "" + +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 +msgid "Permission set" +msgstr "" + +#: users/models.py:384 +msgid "Group" +msgstr "" + +#: users/models.py:387 +msgid "View" +msgstr "" + +#: users/models.py:387 +msgid "Permission to view items" +msgstr "" + +#: users/models.py:389 +msgid "Permission to add items" +msgstr "" + +#: users/models.py:391 +msgid "Change" +msgstr "" + +#: users/models.py:391 +msgid "Permissions to edit items" +msgstr "" + +#: users/models.py:393 +msgid "Permission to delete items" +msgstr "" + diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po index 2e0e8437ab..1ebf5b0118 100644 --- a/InvenTree/locale/hu/LC_MESSAGES/django.po +++ b/InvenTree/locale/hu/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:54\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API funkciót nem találom" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "Nincs jogosultságod az adatok megtekintéséhez" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "Nincs érték megadva" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" -msgstr "A megadott érték nem egy szám" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "A megadott érték mértékegysége érvénytelen" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "A megadott érték nem konvertálható a megadott mértékegységre" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "A hiba részleteit megtalálod az admin panelen" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Dátum megadása" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Megjegyzések" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "A(z) '{name}' érték nem a szükséges minta szerinti" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "A megadott érték nem felel meg a szükséges mintának: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Jelszó megadása" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Új jelszó megadása" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Jelszó megerősítése" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Új jelszó megerősítése" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Régi jelszó" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "Email (újra)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Email cím megerősítés" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Mindig ugyanazt az email címet kell beírni." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "A megadott elsődleges email cím nem valós." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "A megadott email domain nincs jóváhagyva." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "Regisztráció le van tiltva." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Nem megfelelő mennyiség" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Üres sorozatszám" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Duplikált sorozatszám" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Érvénytelen csoport tartomány: {g}" +msgid "Invalid group range: {group}" +msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "Több lett megadva {g} mint amennyi szükséges lenne ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Érvénytelen csoport szekvencia: {g}" +msgid "Invalid group sequence: {group}" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Nem található sorozatszám" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "A megadott számú egyedi sorozatszám ({s}) meg kell egyezzen a darabszámmal ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "HTML tag-ek eltávolítása ebből az értékből" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Csatlakozási hiba" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "A kiszolgáló érvénytelen státuszkóddal válaszolt" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Kivétel történt" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "A kiszolgáló érvénytelen Content-Length értéket adott" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "A kép mérete túl nagy" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "A kép letöltés meghaladja a maximális méretet" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "A kiszolgáló üres választ adott" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "A megadott URL nem egy érvényes kép fájl" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "[{site.name}] Belépés az alkalmazásba" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "Email" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "A meta adatnak egy python dict objektumnak kell lennie" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "Plugin meta adatok" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "JSON meta adat mező, külső pluginok számára" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Helytelenül formázott minta" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Ismeretlen formátum kulcs lett megadva" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Hiányzó formátum kulcs" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Az azonosító mező nem lehet üres" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "Az azonosítónak egyeznie kell a mintával" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Azonosító szám túl nagy" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Hiányzó fájl" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Hiányzó külső link" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Melléklet" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Válaszd ki a mellekelni kívánt fájlt" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Link" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Link külső URL-re" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Megjegyzés" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Leírás, bővebb infó" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Felhasználó" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "feltöltés dátuma" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "A fájlnév nem lehet üres" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Érvénytelen melléklet mappa" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Fájlnévben érvénytelen karakter van '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Fájlnév kiterjesztése hiányzik" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Ilyen fájlnévvel már létezik melléklet" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Hiba a fájl átnevezésekor" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "Duplikált nevek nem lehetnek ugyanazon szülő alatt" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Érvénytelen választás" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Név" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Leírás" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Leírás (opcionális)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "szülő" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Elérési út" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "Markdown megjegyzések (opcionális)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Vonalkód adat" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Harmadik féltől származó vonalkód adat" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Vonalkód hash" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Egyedi vonalkód hash" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Létező vonalkód" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Kiszolgálóhiba" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "A kiszolgáló egy hibaüzenetet rögzített." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Érvényes számnak kell lennie" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Pénznem" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "Válassz pénznemet a lehetőségek közül" @@ -484,143 +509,155 @@ msgstr "Szükséges oszlop hiányzik: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Duplikált oszlop: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "A távoli kép URL-je" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Képek letöltése távoli URL-ről nem engedélyezett" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Cseh" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Dán" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Német" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Görög" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Angol" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Spanyol" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Spanyol (Mexikói)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Fárszi/Perzsa" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" -msgstr "" +msgstr "Finn" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Francia" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Héber" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Magyar" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Olasz" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japán" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Koreai" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Holland" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norvég" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Lengyel" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portugál" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portugál (Brazíliai)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Orosz" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Szlovén" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Svéd" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Tháj" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Török" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnámi" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Kínai" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "Kínai (egyszerűsített)" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "Kínai (Hagyományos)" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Háttér folyamat ellenőrzés sikertelen" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "Email backend nincs beállítva" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "InvenTree rendszer állapotának ellenőrzése sikertelen" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Függőben" @@ -630,8 +667,8 @@ msgstr "Kiküldve" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Kész" @@ -654,10 +691,10 @@ msgstr "Visszaküldve" msgid "In Progress" msgstr "Folyamatban" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Kiszállítva" @@ -689,7 +726,7 @@ msgstr "Karanténban" msgid "Legacy stock tracking entry" msgstr "Örökölt készlet követési bejegyzés" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Készlet tétel létrehozva" @@ -745,7 +782,7 @@ msgstr "Szülő tételből szétválasztva" msgid "Split child item" msgstr "Szétválasztott gyermek tétel" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Összevont készlet tétel" @@ -763,9 +800,9 @@ msgstr "Gyártási utasítás kimenete kész" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "Gyártási utasítás kimenete visszautasítva" +msgstr "Gyártási utasítás kimenete elutasítva" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Gyártásra felhasználva" @@ -781,7 +818,7 @@ msgstr "Megrendelésre érkezett" msgid "Returned against Return Order" msgstr "Visszavéve" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Vevőnek kiszállítva" @@ -813,119 +850,165 @@ msgstr "Visszatérítés" msgid "Reject" msgstr "Elutasított" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" -msgstr "Érvénytelen fizikai mértékegysgé" +msgstr "Érvénytelen fizikai mértékegység" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Érvénytelen pénznem kód" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Túlszállítás nem lehet negatív" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Túlszállítás nem lehet több mint 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Érvénytelen érték a túlszállításra" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Felhasználói információ módosítása" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Jelszó beállítása" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "A jelszavaknak egyeznie kell" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Rossz jelszó lett megadva" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Rendszerinformáció" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Verzió információk" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "A gyártást be kell fejezni a törlés előtt" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "Fogyóeszköz" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "Opcionális" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "Követett" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "Lefoglalva" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Elérhető" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Gyártási utasítás" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Gyártási utasítások" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Hibás választás a szülő gyártásra" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Gyártási utasítás azonosító" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Azonosító" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "Gyártás rövid leírása (opcionális)" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Szülő gyártás" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,549 +1017,564 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Alkatrész" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Válassz alkatrészt a gyártáshoz" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Vevői rendelés azonosító" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Vevői rendelés amihez ez a gyártás hozzá van rendelve" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Forrás hely" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Válassz helyet ahonnan készletet vegyünk el ehhez a gyártáshoz (hagyd üresen ha bárhonnan)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Cél hely" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Válassz helyet ahol a kész tételek tárolva lesznek" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Gyártási mennyiség" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Gyártandó készlet tételek száma" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Kész tételek" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Elkészült készlet tételek száma" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Gyártási állapot" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Gyártás státusz kód" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Batch kód" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Batch kód a gyártás kimenetéhez" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Létrehozás dátuma" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Befejezés cél dátuma" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Cél dátum a gyártás befejezéséhez. Ez után késettnek számít majd." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" -msgstr "Elkészítés dátuma" +msgstr "Befejezés dátuma" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "elkészítette" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Kiállította" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Felhasználó aki ezt a gyártási utasítást kiállította" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Felelős" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "Felhasználó vagy csoport aki felelős ezért a gyártásért" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Külső link" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "Priorítás" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "Gyártási utasítás priorítása" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "Projektszám" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "Projekt kód a gyártáshoz" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "A {build} gyártási utasítás elkészült" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "Gyártási utasítás elkészült" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Nincs gyártási kimenet megadva" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Gyártási kimenet már kész" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "Gyártási kimenet nem egyezik a gyártási utasítással" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "Mennyiségnek nullánál többnek kell lennie" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" -msgstr "A mennyiség nem lehet mint a gyártási mennyiség" +msgstr "A mennyiség nem lehet több mint a gyártási mennyiség" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Gyártási tételnek meg kell adnia a gyártási kimenetet, mivel a fő darab egyedi követésre kötelezett" +#: build/models.py:1266 +msgid "Build object" +msgstr "Gyártás objektum" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "A lefoglalt mennyiség ({q}) nem lépheti túl a szabad készletet ({a})" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "Készlet túlfoglalva" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Lefoglalt mennyiségnek nullánál többnek kell lennie" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "Egyedi követésre kötelezett tételeknél a menyiség 1 kell legyen" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Kiválasztott készlet tétel nem található az alkatrészjegyzékben" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Gyártás" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "Gyártás amihez készletet foglaljunk" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Készlet tétel" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Forrás készlet tétel" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Mennyiség" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "Gyártáshoz szükséges mennyiség" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "Gyártási tételnek meg kell adnia a gyártási kimenetet, mivel a fő darab egyedi követésre kötelezett" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "A lefoglalt mennyiség ({q}) nem lépheti túl a szabad készletet ({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "Készlet túlfoglalva" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Lefoglalt mennyiségnek nullánál többnek kell lennie" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Egyedi követésre kötelezett tételeknél a menyiség 1 kell legyen" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "A készlet tétel nem egyezik az alkatrészjegyzékkel" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Készlet tétel" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Forrás készlet tétel" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Készlet mennyiség amit foglaljunk a gyártáshoz" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Beépítés ebbe" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Cél készlet tétel" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "Gyártás kimenet" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "Gyártási kimenet nem egyezik a szülő gyártással" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "Kimeneti alkatrész nem egyezik a gyártási utasításban lévő alkatrésszel" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "Ez a gyártási kimenet már elkészült" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "Ez a gyártási kimenet nincs teljesen lefoglalva" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "Add meg a mennyiséget a gyártás kimenetéhez" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "Egész számú mennyiség szükséges az egyedi követésre kötelezett alkatrészeknél" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Egész számú mennyiség szükséges, mivel az alkatrészjegyzék egyedi követésre kötelezett alkatrészeket tartalmaz" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Sorozatszámok" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "Add meg a sorozatszámokat a gyártás kimenetéhez" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "Sorozatszámok automatikus hozzárendelése" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "Szükséges tételek automatikus hozzárendelése a megfelelő sorozatszámokkal" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "A következő sorozatszámok már léteznek vagy nem megfelelőek" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "A gyártási kimenetek listáját meg kell adni" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Hely" -#: build/serializers.py:416 -msgid "Stock location for scrapped outputs" -msgstr "Selejtezett termékek lokációja" - #: build/serializers.py:422 +msgid "Stock location for scrapped outputs" +msgstr "Selejtezet gyártási kimenetek helye" + +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "Foglalások törlése" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" -msgstr "" +msgstr "Selejtezett kimenetek foglalásainak felszabadítása" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" -msgstr "Selejtezés oka(i)" +msgstr "Selejtezés oka" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "A kész gyártási kimenetek helye" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Állapot" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "Hiányos foglalás elfogadása" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "Kimenetek befejezése akkor is ha a készlet nem\n" "lett teljesen lefoglalva" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "Lefoglalt készlet levonása" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "Az összes lefoglalt tétel levonása a készletről" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "Befejezetlen kimenetek törlése" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "A nem befejezett gyártási kimenetek törlése" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "Nem engedélyezett" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "Gyártásban fel lett használva" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "Foglalás felszabadítása a készre jelentés előtt" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "Túlfoglalt készlet" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Hogyan kezeljük az gyártáshoz rendelt egyéb készletet" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "Pár készlet tétel túl lett foglalva" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "Kiosztatlanok elfogadása" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Fogadd el hogy a készlet tételek nincsenek teljesen lefoglalva ehhez a gyártási utastáshoz" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "A szükséges készlet nem lett teljesen lefoglalva" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "Befejezetlenek elfogadása" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "Fogadd el hogy a szükséges számú gyártási kimenet nem lett elérve" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "Szükséges gyártási mennyiség nem lett elérve" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "A gyártási utasítás befejezetlen kimeneteket tartalmaz" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "Alkatrészjegyzék tétel" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "Gyártás sor" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "Gyártás kimenet" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "A gyártási kimenetnek ugyanarra a gyártásra kell mutatnia" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "Gyártás sor tétel" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part ugyanarra az alkatrészre kell mutasson mint a gyártási utasítás" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "A tételnek kell legyen készlete" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Rendelkezésre álló mennyiség ({q}) túllépve" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "Gyártási kimenetet meg kell adni a követésre kötelezett alkatrészek lefoglalásához" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Gyártási kimenetet nem lehet megadni a követésre kötelezett alkatrészek lefoglalásához" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "Ez a készlet tétel már le lett foglalva ehhez a gyártási kimenethez" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "A lefoglalandó tételeket meg kell adni" @@ -1516,106 +1614,107 @@ msgstr "Opcionális tételek" msgid "Allocate optional BOM items to build order" msgstr "Opcionális tételek lefoglalása a gyártáshoz" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "A gyártási utasításhoz készlet szükséges" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "Késésben lévő gyártás" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "A {bo} gyártás most már késésben van" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" -msgstr "" +msgstr "Alkatrész bélyegkép" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "Vonalkód műveletek" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "QR kód megjelenítése" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "Vonalkód leválasztása" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "Vonalkód hozzárendelése" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "Nyomtatási műveletek" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "Gyártási riport nyomtatása" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "Gyártási műveletek" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Gyártás szerkesztése" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Gyártás törlése" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "Gyártás másolása" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "Gyártás törlése" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "Gyártás befejezése" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "Gyártás leírása" @@ -1640,18 +1739,18 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Még nincs lefoglalva a szükséges készlet" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "Cél dátum" @@ -1662,47 +1761,46 @@ msgstr "Ez a gyártás %(target)s-n volt esedékes" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "Késésben" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Kész" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "Befejezett kimenetek" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "Vevői rendelés" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Kiállította" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "Prioritás" @@ -1730,8 +1828,8 @@ msgstr "Készlet forrás" msgid "Stock can be taken from any available location." msgstr "Készlet bármely rendelkezésre álló helyről felhasználható." -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "Cél" @@ -1743,23 +1841,23 @@ msgstr "A cél hely nincs megadva" msgid "Allocated Parts" msgstr "Lefoglalt alkatrészek" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "Batch" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "Létrehozva" @@ -1767,147 +1865,106 @@ msgstr "Létrehozva" msgid "No target date set" msgstr "Nincs céldátum beállítva" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Kész" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "Gyártás nincs kész" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "Alárendelt gyártások" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "Készlet foglalása gyártáshoz" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "Készlet felszabadítása" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "Készlet felszabadítása" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "Készlet felszabadítása" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "Automatikus készlet foglalás a gyártáshoz" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "Automata foglalás" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "Manuális készlet foglalás a gyártáshoz" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "Készlet foglalása" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "Szükséges alkatrészek rendelése" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "Alkatrész rendelés" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "A teljes szükséges készlet le lett foglalva ehhez a gyártási utasításhoz" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "Nincs minden készlet lefoglalva ehhez a gyártási utasításhoz" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "Kiválasztott tételek lefoglalása" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "Ez a gyártási utasítás egyáltalán nem tartalmaz nem követett alkatrészjegyzék tételt" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "Befejezetlen gyártási kimenetek" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "Új gyártási kimenet létrehozása" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "Új gyártási kimenet" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "Kimeneti műveletek" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "Kiválasztott gyártási kimenetek befejezése" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "Befejezett kimenetek" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "Kiválasztott gyártási kimenetek selejtezése" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "Gyártási kimenetek selejtezése" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "Kiválasztott gyártási kimenetek törlése" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "Kimenetek törlése" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" -msgstr "Elhasznált készlet" +msgstr "Felhasznált készlet" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "Befejezett gyártási kimenetek" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Mellékletek" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "Gyártási megjegyzések" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "Lefoglalás kész" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" -msgstr "A szükséges készlet már mind le lett foglalva" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "Minden sor rendben lefoglalva" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "Új gyártási utasítás" @@ -1915,14 +1972,10 @@ msgstr "Új gyártási utasítás" msgid "Build Order Details" msgstr "Gyártási utasítás részletei" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "Befejezetlen kimenetek" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "Befejezett kimenetek" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1961,1494 +2014,1543 @@ msgstr "{name.title()} Fájl" msgid "Select {name} file to upload" msgstr "{name} fájl kiválasztása feltöltéshez" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "Frissítve" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Legutóbbi frissítés időpontja" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "Projektszám" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "Egyedi projektszám" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "Projekt leírása" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "Beállítások kulcs (egyedinek kell lennie, nem kis- nagybetű érzékeny)" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "Beállítás értéke" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "A kiválasztott érték nem egy érvényes lehetőség" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "Az érték bináris kell legyen" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "Az érték egész szám kell legyen" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "Kulcs string egyedi kell legyen" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "Nincs csoport" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "Üres domain nem engedélyezett." -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Érvénytelen domain név: {domain}" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "Újraindítás szükséges" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "Egy olyan beállítás megváltozott ami a kiszolgáló újraindítását igényli" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "Kiszolgáló példány neve" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "String leíró a kiszolgáló példányhoz" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "Példány név használata" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "Példány név használata a címsorban" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "Verzió infók megjelenítésének tiltása" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "Verzió infók megjelenítése csak admin felhasználóknak" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Cég neve" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "Belső cégnév" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "Kiindulási URL" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "Kiindulási URL a kiszolgáló példányhoz" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Alapértelmezett pénznem" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "Válassz alap pénznemet az ár számításokhoz" -#: common/models.py:979 -msgid "Download from URL" -msgstr "Letöltés URL-ről" +#: common/models.py:1126 +msgid "Currency Update Interval" +msgstr "" -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "Képek és fájlok letöltésének engedélyezése külső URL-ről" +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "Letöltési méret korlát" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "Maximum megengedett letöltési mérete a távoli képeknek" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "Felhasznált User-agent az URL-ről letöltéshez" - -#: common/models.py:999 -msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" -msgstr "A külső URL-ről letöltéshez használt user-agent felülbírálásának engedélyezése (hagyd üresen az alapértelmezéshez)" - -#: common/models.py:1004 -msgid "Require confirm" -msgstr "Megerősítés igénylése" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "Kérjen felhasználói megerősítést bizonyos műveletekhez" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "Fa mélység" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "Alapértelmezett mélység a fa nézetekben. A mélyebb szintek betöltődnek ha szükségesek." - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "Frissítés keresés gyakorisága" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "Milyen gyakran ellenőrizze van-e új frissítés (0=soha)" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 msgid "days" msgstr "nap" -#: common/models.py:1032 +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Letöltés URL-ről" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Képek és fájlok letöltésének engedélyezése külső URL-ről" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "Letöltési méret korlát" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "Maximum megengedett letöltési mérete a távoli képeknek" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "Felhasznált User-agent az URL-ről letöltéshez" + +#: common/models.py:1164 +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "A külső URL-ről letöltéshez használt user-agent felülbírálásának engedélyezése (hagyd üresen az alapértelmezéshez)" + +#: common/models.py:1169 +msgid "Require confirm" +msgstr "Megerősítés igénylése" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "Kérjen felhasználói megerősítést bizonyos műveletekhez" + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "Fa mélység" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "Alapértelmezett mélység a fa nézetekben. A mélyebb szintek betöltődnek ha szükségesek." + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "Frissítés keresés gyakorisága" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "Milyen gyakran ellenőrizze van-e új frissítés (0=soha)" + +#: common/models.py:1197 msgid "Automatic Backup" msgstr "Automatikus biztonsági mentés" -#: common/models.py:1033 +#: common/models.py:1198 msgid "Enable automatic backup of database and media files" msgstr "Adatbázis és média fájlok automatikus biztonsági mentése" -#: common/models.py:1039 +#: common/models.py:1204 msgid "Auto Backup Interval" msgstr "Automata biztonsági mentés gyakorisága" -#: common/models.py:1040 +#: common/models.py:1205 msgid "Specify number of days between automated backup events" msgstr "Hány naponta készüljön automatikus biztonsági mentés" -#: common/models.py:1050 +#: common/models.py:1215 msgid "Task Deletion Interval" msgstr "Feladat törlési gyakoriság" -#: common/models.py:1051 +#: common/models.py:1216 msgid "Background task results will be deleted after specified number of days" msgstr "Háttérfolyamat eredmények törlése megadott nap eltelte után" -#: common/models.py:1061 +#: common/models.py:1226 msgid "Error Log Deletion Interval" msgstr "Hibanapló törlési gyakoriság" -#: common/models.py:1062 +#: common/models.py:1227 msgid "Error logs will be deleted after specified number of days" msgstr "Hibanapló bejegyzések törlése megadott nap eltelte után" -#: common/models.py:1072 +#: common/models.py:1237 msgid "Notification Deletion Interval" msgstr "Értesítés törlési gyakoriság" -#: common/models.py:1073 +#: common/models.py:1238 msgid "User notifications will be deleted after specified number of days" msgstr "Felhasználói értesítések törlése megadott nap eltelte után" -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Vonalkód támogatás" -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "Vonalkód olvasó engedélyezése" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" -#: common/models.py:1090 +#: common/models.py:1255 msgid "Barcode Input Delay" msgstr "Vonalkód beadási késleltetés" -#: common/models.py:1091 +#: common/models.py:1256 msgid "Barcode input processing delay time" msgstr "Vonalkód beadáskor a feldolgozás késleltetési ideje" -#: common/models.py:1101 +#: common/models.py:1266 msgid "Barcode Webcam Support" msgstr "Webkamerás vonalkód olvasás" -#: common/models.py:1102 +#: common/models.py:1267 msgid "Allow barcode scanning via webcam in browser" msgstr "Webkamerás kódolvasás engedélyezése a böngészőből" -#: common/models.py:1108 +#: common/models.py:1273 msgid "Part Revisions" msgstr "Alkatrész változatok" -#: common/models.py:1109 +#: common/models.py:1274 msgid "Enable revision field for Part" msgstr "Alkatrész változat vagy verziószám tulajdonság használata" -#: common/models.py:1115 +#: common/models.py:1280 msgid "IPN Regex" msgstr "IPN reguláris kifejezés" -#: common/models.py:1116 +#: common/models.py:1281 msgid "Regular expression pattern for matching Part IPN" msgstr "Reguláris kifejezés ami illeszkedik az alkatrész IPN-re" -#: common/models.py:1120 +#: common/models.py:1285 msgid "Allow Duplicate IPN" msgstr "Többször is előforduló IPN engedélyezése" -#: common/models.py:1121 +#: common/models.py:1286 msgid "Allow multiple parts to share the same IPN" msgstr "Azonos IPN használható legyen több alkatrészre is" -#: common/models.py:1127 +#: common/models.py:1292 msgid "Allow Editing IPN" msgstr "IPN szerkesztésének engedélyezése" -#: common/models.py:1128 +#: common/models.py:1293 msgid "Allow changing the IPN value while editing a part" msgstr "IPN megváltoztatásánsak engedélyezése az alkatrész szerkesztése közben" -#: common/models.py:1134 +#: common/models.py:1299 msgid "Copy Part BOM Data" msgstr "Alkatrészjegyzék adatok másolása" -#: common/models.py:1135 +#: common/models.py:1300 msgid "Copy BOM data by default when duplicating a part" msgstr "Alkatrész másoláskor az alkatrészjegyzék adatokat is másoljuk alapból" -#: common/models.py:1141 +#: common/models.py:1306 msgid "Copy Part Parameter Data" msgstr "Alkatrész paraméterek másolása" -#: common/models.py:1142 +#: common/models.py:1307 msgid "Copy parameter data by default when duplicating a part" msgstr "Alkatrész másoláskor a paramétereket is másoljuk alapból" -#: common/models.py:1148 +#: common/models.py:1313 msgid "Copy Part Test Data" msgstr "Alkatrész teszt adatok másolása" -#: common/models.py:1149 +#: common/models.py:1314 msgid "Copy test data by default when duplicating a part" msgstr "Alkatrész másoláskor a tesztek adatait is másoljuk alapból" -#: common/models.py:1155 +#: common/models.py:1320 msgid "Copy Category Parameter Templates" msgstr "Kategória paraméter sablonok másolása" -#: common/models.py:1156 +#: common/models.py:1321 msgid "Copy category parameter templates when creating a part" msgstr "Kategória paraméter sablonok másolása alkatrész létrehozásakor" -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Sablon" -#: common/models.py:1163 +#: common/models.py:1328 msgid "Parts are templates by default" msgstr "Alkatrészek alapból sablon alkatrészek legyenek" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Gyártmány" -#: common/models.py:1170 +#: common/models.py:1335 msgid "Parts can be assembled from other components by default" msgstr "Alkatrészeket alapból lehessen gyártani másik alkatrészekből" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Összetevő" -#: common/models.py:1177 +#: common/models.py:1342 msgid "Parts can be used as sub-components by default" msgstr "Alkatrészek alapból használhatók összetevőként más alkatrészekhez" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 +#: common/models.py:1348 part/admin.py:53 part/models.py:981 msgid "Purchaseable" msgstr "Beszerezhető" -#: common/models.py:1184 +#: common/models.py:1349 msgid "Parts are purchaseable by default" msgstr "Alkatrészek alapból beszerezhetők legyenek" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Értékesíthető" -#: common/models.py:1191 +#: common/models.py:1356 msgid "Parts are salable by default" msgstr "Alkatrészek alapból eladhatók legyenek" -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Követésre kötelezett" -#: common/models.py:1198 +#: common/models.py:1363 msgid "Parts are trackable by default" msgstr "Alkatrészek alapból követésre kötelezettek legyenek" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtuális" -#: common/models.py:1205 +#: common/models.py:1370 msgid "Parts are virtual by default" msgstr "Alkatrészek alapból virtuálisak legyenek" -#: common/models.py:1211 +#: common/models.py:1376 msgid "Show Import in Views" msgstr "Importálás megjelenítése a nézetekben" -#: common/models.py:1212 +#: common/models.py:1377 msgid "Display the import wizard in some part views" msgstr "Import segéd megjelenítése néhány alkatrész nézetben" -#: common/models.py:1218 +#: common/models.py:1383 msgid "Show related parts" msgstr "Kapcsolódó alkatrészek megjelenítése" -#: common/models.py:1219 +#: common/models.py:1384 msgid "Display related parts for a part" msgstr "Alkatrész kapcsolódó alkatrészeinek megjelenítése" -#: common/models.py:1225 +#: common/models.py:1390 msgid "Initial Stock Data" msgstr "Kezdeti készlet adatok" -#: common/models.py:1226 +#: common/models.py:1391 msgid "Allow creation of initial stock when adding a new part" msgstr "Kezdeti készlet létrehozása új alkatrész felvételekor" -#: common/models.py:1232 templates/js/translated/part.js:108 +#: common/models.py:1397 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Kezdeti beszállítói adatok" -#: common/models.py:1233 +#: common/models.py:1398 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Kezdeti beszállítói adatok létrehozása új alkatrész felvételekor" -#: common/models.py:1239 +#: common/models.py:1404 msgid "Part Name Display Format" msgstr "Alkatrész név megjelenítés formátuma" -#: common/models.py:1240 +#: common/models.py:1405 msgid "Format to display the part name" msgstr "Formátum az alkatrész név megjelenítéséhez" -#: common/models.py:1247 +#: common/models.py:1412 msgid "Part Category Default Icon" msgstr "Alkatrész kategória alapértelmezett ikon" -#: common/models.py:1248 +#: common/models.py:1413 msgid "Part category default icon (empty means no icon)" msgstr "Alkatrész kategória alapértelmezett ikon (üres ha nincs)" -#: common/models.py:1253 +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "Csak választható mértékegységek" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "A megadott mértékegység csak a beállított lehetőségekből legyen elfogadva" + +#: common/models.py:1425 msgid "Minimum Pricing Decimal Places" msgstr "Áraknál használt tizedesjegyek min. száma" -#: common/models.py:1254 +#: common/models.py:1426 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Tizedejegyek minimális száma az árak megjelenítésekor" -#: common/models.py:1264 +#: common/models.py:1436 msgid "Maximum Pricing Decimal Places" msgstr "Áraknál használt tizedesjegyek max. száma" -#: common/models.py:1265 +#: common/models.py:1437 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Tizedejegyek maximális száma az árak megjelenítésekor" -#: common/models.py:1275 +#: common/models.py:1447 msgid "Use Supplier Pricing" msgstr "Beszállítói árazás használata" -#: common/models.py:1276 +#: common/models.py:1448 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Beszállítói ársávok megjelenítése az általános árkalkulációkban" -#: common/models.py:1282 +#: common/models.py:1454 msgid "Purchase History Override" msgstr "Beszerzési előzmények felülbírálása" -#: common/models.py:1283 +#: common/models.py:1455 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Beszerzési árelőzmények felülírják a beszállítói ársávokat" -#: common/models.py:1289 +#: common/models.py:1461 msgid "Use Stock Item Pricing" msgstr "Készlet tétel ár használata" -#: common/models.py:1290 +#: common/models.py:1462 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "A kézzel bevitt készlet tétel árak használata az árszámításokhoz" -#: common/models.py:1296 +#: common/models.py:1468 msgid "Stock Item Pricing Age" msgstr "Készlet tétel ár kora" -#: common/models.py:1297 +#: common/models.py:1469 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Az ennyi napnál régebbi készlet tételek kizárása az árszámításból" -#: common/models.py:1307 +#: common/models.py:1479 msgid "Use Variant Pricing" msgstr "Alkatrészváltozat árak használata" -#: common/models.py:1308 +#: common/models.py:1480 msgid "Include variant pricing in overall pricing calculations" msgstr "Alkatrészváltozat árak megjelenítése az általános árkalkulációkban" -#: common/models.py:1314 +#: common/models.py:1486 msgid "Active Variants Only" msgstr "Csak az aktív változatokat" -#: common/models.py:1315 +#: common/models.py:1487 msgid "Only use active variant parts for calculating variant pricing" msgstr "Csak az aktív alkatrészváltozatok használata az árazásban" -#: common/models.py:1321 +#: common/models.py:1493 msgid "Pricing Rebuild Interval" msgstr "Árazás újraszámítás gyakoriság" -#: common/models.py:1322 +#: common/models.py:1494 msgid "Number of days before part pricing is automatically updated" msgstr "Árak automatikus frissítése ennyi nap után" -#: common/models.py:1332 +#: common/models.py:1504 msgid "Internal Prices" msgstr "Belső árak" -#: common/models.py:1333 +#: common/models.py:1505 msgid "Enable internal prices for parts" msgstr "Alkatrészekhez belső ár engedélyezése" -#: common/models.py:1339 +#: common/models.py:1511 msgid "Internal Price Override" msgstr "Belső ár felülbírálása" -#: common/models.py:1340 +#: common/models.py:1512 msgid "If available, internal prices override price range calculations" msgstr "Ha elérhetőek az árkalkulációkban a belső árak lesznek alapul véve" -#: common/models.py:1346 +#: common/models.py:1518 msgid "Enable label printing" msgstr "Címke nyomtatás engedélyezése" -#: common/models.py:1347 +#: common/models.py:1519 msgid "Enable label printing from the web interface" msgstr "Címke nyomtatás engedélyezése a web felületről" -#: common/models.py:1353 +#: common/models.py:1525 msgid "Label Image DPI" msgstr "Címke kép DPI" -#: common/models.py:1354 +#: common/models.py:1526 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "Képek felbontása amik átadásra kerülnek címkenyomtató pluginoknak" -#: common/models.py:1363 +#: common/models.py:1535 msgid "Enable Reports" msgstr "Riportok engedélyezése" -#: common/models.py:1364 +#: common/models.py:1536 msgid "Enable generation of reports" msgstr "Riportok előállításának engedélyezése" -#: common/models.py:1370 templates/stats.html:25 +#: common/models.py:1542 templates/stats.html:25 msgid "Debug Mode" msgstr "Debug mód" -#: common/models.py:1371 +#: common/models.py:1543 msgid "Generate reports in debug mode (HTML output)" msgstr "Riportok előállítása HTML formátumban (hibakereséshez)" -#: common/models.py:1377 +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 msgid "Page Size" msgstr "Lapméret" -#: common/models.py:1378 +#: common/models.py:1550 msgid "Default page size for PDF reports" msgstr "Alapértelmezett lapméret a PDF riportokhoz" -#: common/models.py:1388 +#: common/models.py:1556 msgid "Enable Test Reports" msgstr "Teszt riportok engedélyezése" -#: common/models.py:1389 +#: common/models.py:1557 msgid "Enable generation of test reports" msgstr "Teszt riportok előállításának engedélyezése" -#: common/models.py:1395 +#: common/models.py:1563 msgid "Attach Test Reports" msgstr "Teszt riportok hozzáadása" -#: common/models.py:1396 +#: common/models.py:1564 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Teszt riport nyomtatáskor egy másolat hozzáadása a készlet tételhez" -#: common/models.py:1402 +#: common/models.py:1570 msgid "Globally Unique Serials" msgstr "Globálisan egyedi sorozatszámok" -#: common/models.py:1403 +#: common/models.py:1571 msgid "Serial numbers for stock items must be globally unique" msgstr "A sorozatszámoknak egyedinek kell lennie a teljes készletre vonatkozóan" -#: common/models.py:1409 +#: common/models.py:1577 msgid "Autofill Serial Numbers" msgstr "Sorozatszámok automatikus kitöltése" -#: common/models.py:1410 +#: common/models.py:1578 msgid "Autofill serial numbers in forms" msgstr "Sorozatszámok automatikus kitöltése a formokon" -#: common/models.py:1416 +#: common/models.py:1584 msgid "Delete Depleted Stock" msgstr "Kimerült készlet törlése" -#: common/models.py:1417 +#: common/models.py:1585 msgid "Determines default behaviour when a stock item is depleted" msgstr "Alapértelmezett művelet mikor a készlet tétel elfogy" -#: common/models.py:1423 +#: common/models.py:1591 msgid "Batch Code Template" msgstr "Batch kód sablon" -#: common/models.py:1424 +#: common/models.py:1592 msgid "Template for generating default batch codes for stock items" msgstr "Sablon a készlet tételekhez alapértelmezett batch kódok előállításához" -#: common/models.py:1429 +#: common/models.py:1597 msgid "Stock Expiry" msgstr "Készlet lejárata" -#: common/models.py:1430 +#: common/models.py:1598 msgid "Enable stock expiry functionality" msgstr "Készlet lejárat kezelésének engedélyezése" -#: common/models.py:1436 +#: common/models.py:1604 msgid "Sell Expired Stock" msgstr "Lejárt készlet értékesítése" -#: common/models.py:1437 +#: common/models.py:1605 msgid "Allow sale of expired stock" msgstr "Lejárt készlet értékesítésének engedélyezése" -#: common/models.py:1443 +#: common/models.py:1611 msgid "Stock Stale Time" msgstr "Álló készlet ideje" -#: common/models.py:1444 +#: common/models.py:1612 msgid "Number of days stock items are considered stale before expiring" msgstr "Napok száma amennyivel a lejárat előtt a készlet tételeket állottnak vesszük" -#: common/models.py:1451 +#: common/models.py:1619 msgid "Build Expired Stock" msgstr "Lejárt készlet gyártása" -#: common/models.py:1452 +#: common/models.py:1620 msgid "Allow building with expired stock" msgstr "Gyártás engedélyezése lejárt készletből" -#: common/models.py:1458 +#: common/models.py:1626 msgid "Stock Ownership Control" msgstr "Készlet tulajdonosok kezelése" -#: common/models.py:1459 +#: common/models.py:1627 msgid "Enable ownership control over stock locations and items" -msgstr "Tuajdonosok kezelésének engedélyezése a készlet helyekre és tételekre" +msgstr "Tulajdonosok kezelésének engedélyezése a készlet helyekre és tételekre" -#: common/models.py:1465 +#: common/models.py:1633 msgid "Stock Location Default Icon" msgstr "Hely alapértelmezett ikon" -#: common/models.py:1466 +#: common/models.py:1634 msgid "Stock location default icon (empty means no icon)" msgstr "Hely alapértelmezett ikon (üres ha nincs)" -#: common/models.py:1471 +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "Beépített készlet megjelenítése" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "Beépített készlet tételek megjelenítése a készlet táblákban" + +#: common/models.py:1646 msgid "Build Order Reference Pattern" msgstr "Gyártási utasítás azonosító minta" -#: common/models.py:1472 +#: common/models.py:1647 msgid "Required pattern for generating Build Order reference field" msgstr "Szükséges minta a gyártási utasítás azonosító mező előállításához" -#: common/models.py:1478 +#: common/models.py:1653 msgid "Enable Return Orders" msgstr "Visszavétel engedélyezése" -#: common/models.py:1479 +#: common/models.py:1654 msgid "Enable return order functionality in the user interface" -msgstr "Visszavételi utasítások engedélyezése a felületen" +msgstr "Visszavételek engedélyezése a felületen" -#: common/models.py:1485 +#: common/models.py:1660 msgid "Return Order Reference Pattern" -msgstr "Visszavételi utasítás azonosító minta" +msgstr "Visszavétel azonosító minta" -#: common/models.py:1486 +#: common/models.py:1661 msgid "Required pattern for generating Return Order reference field" -msgstr "Szükséges minta a visszavételi utasítás azonosító mező előállításához" +msgstr "Szükséges minta a visszavétel azonosító mező előállításához" -#: common/models.py:1492 +#: common/models.py:1667 msgid "Edit Completed Return Orders" -msgstr "Befejezett visszavételi utasítás szerkesztése" +msgstr "Befejezett visszavétel szerkesztése" -#: common/models.py:1493 +#: common/models.py:1668 msgid "Allow editing of return orders after they have been completed" -msgstr "Visszavételi utasítások szerkesztésének engedélyezése befejezés után" +msgstr "Visszavétel szerkesztésének engedélyezése befejezés után" -#: common/models.py:1499 +#: common/models.py:1674 msgid "Sales Order Reference Pattern" msgstr "Vevői rendelés azonosító minta" -#: common/models.py:1500 +#: common/models.py:1675 msgid "Required pattern for generating Sales Order reference field" msgstr "Szükséges minta a vevői rendelés azonosító mező előállításához" -#: common/models.py:1506 +#: common/models.py:1681 msgid "Sales Order Default Shipment" msgstr "Vevői rendeléshez alapértelmezett szállítmány" -#: common/models.py:1507 +#: common/models.py:1682 msgid "Enable creation of default shipment with sales orders" msgstr "Szállítmány automatikus létrehozása az új vevő rendelésekhez" -#: common/models.py:1513 +#: common/models.py:1688 msgid "Edit Completed Sales Orders" msgstr "Befejezett vevői rendelés szerkesztése" -#: common/models.py:1514 +#: common/models.py:1689 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Vevői rendelések szerkesztésének engedélyezése szállítás vagy befejezés után" -#: common/models.py:1520 +#: common/models.py:1695 msgid "Purchase Order Reference Pattern" msgstr "Beszerzési rendelés azonosító minta" -#: common/models.py:1521 +#: common/models.py:1696 msgid "Required pattern for generating Purchase Order reference field" msgstr "Szükséges minta a beszerzési rendelés azonosító mező előállításához" -#: common/models.py:1527 +#: common/models.py:1702 msgid "Edit Completed Purchase Orders" msgstr "Befejezett beszerzési rendelés szerkesztése" -#: common/models.py:1528 +#: common/models.py:1703 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Beszérzési rendelések szerkesztésének engedélyezése kiküldés vagy befejezés után" -#: common/models.py:1535 +#: common/models.py:1710 msgid "Enable password forgot" msgstr "Elfelejtett jelszó engedélyezése" -#: common/models.py:1536 +#: common/models.py:1711 msgid "Enable password forgot function on the login pages" msgstr "Elfelejtett jelszó funkció engedélyezése a bejentkező oldalon" -#: common/models.py:1542 +#: common/models.py:1717 msgid "Enable registration" msgstr "Regisztráció engedélyezése" -#: common/models.py:1543 +#: common/models.py:1718 msgid "Enable self-registration for users on the login pages" msgstr "Felhaszálók önkéntes regisztrációjának engedélyezése a bejelentkező oldalon" -#: common/models.py:1549 +#: common/models.py:1724 msgid "Enable SSO" msgstr "SSO engedélyezése" -#: common/models.py:1550 +#: common/models.py:1725 msgid "Enable SSO on the login pages" msgstr "SSO engedélyezése a bejelentkező oldalon" -#: common/models.py:1556 +#: common/models.py:1731 msgid "Enable SSO registration" msgstr "SSO regisztráció engedélyezése" -#: common/models.py:1557 +#: common/models.py:1732 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Felhaszálók önkéntes regisztrációjának engedélyezése SSO-n keresztül a bejelentkező oldalon" -#: common/models.py:1563 +#: common/models.py:1738 msgid "Email required" msgstr "Email szükséges" -#: common/models.py:1564 +#: common/models.py:1739 msgid "Require user to supply mail on signup" msgstr "Kötelező email megadás regisztrációkor" -#: common/models.py:1570 +#: common/models.py:1745 msgid "Auto-fill SSO users" msgstr "SSO felhasználók automatikus kitöltése" -#: common/models.py:1571 +#: common/models.py:1746 msgid "Automatically fill out user-details from SSO account-data" msgstr "Felhasználó adatainak automatikus kitöltése az SSO fiókadatokból" -#: common/models.py:1577 +#: common/models.py:1752 msgid "Mail twice" msgstr "Email kétszer" -#: common/models.py:1578 +#: common/models.py:1753 msgid "On signup ask users twice for their mail" msgstr "Regisztráláskor kétszer kérdezze a felhasználó email címét" -#: common/models.py:1584 +#: common/models.py:1759 msgid "Password twice" msgstr "Jelszó kétszer" -#: common/models.py:1585 +#: common/models.py:1760 msgid "On signup ask users twice for their password" msgstr "Regisztráláskor kétszer kérdezze a felhasználó jelszavát" -#: common/models.py:1591 +#: common/models.py:1766 msgid "Allowed domains" msgstr "Engedélyezett domainek" -#: common/models.py:1592 +#: common/models.py:1767 msgid "Restrict signup to certain domains (comma-separated, starting with @)" -msgstr "Bejelentkezés korlátozása megadott domain-ekre (vesszővel elválasztva, @-al kezdve)" +msgstr "Feliratkozás korlátozása megadott domain-ekre (vesszővel elválasztva, @-al kezdve)" -#: common/models.py:1598 +#: common/models.py:1773 msgid "Group on signup" msgstr "Csoport regisztráláskor" -#: common/models.py:1599 +#: common/models.py:1774 msgid "Group to which new users are assigned on registration" msgstr "Csoport amihez a frissen regisztrált felhasználók hozzá lesznek rendelve" -#: common/models.py:1605 +#: common/models.py:1780 msgid "Enforce MFA" msgstr "Többfaktoros hitelesítés kényszerítése" -#: common/models.py:1606 +#: common/models.py:1781 msgid "Users must use multifactor security." msgstr "A felhasználóknak többfaktoros hitelesítést kell használniuk." -#: common/models.py:1612 +#: common/models.py:1787 msgid "Check plugins on startup" msgstr "Pluginok ellenőrzése indításkor" -#: common/models.py:1613 +#: common/models.py:1788 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Ellenőrizze induláskor hogy minden plugin telepítve van - engedélyezd konténer környezetben (docker)" -#: common/models.py:1620 -msgid "Check plugin signatures" -msgstr "Plugin aláírások ellenőrzése" - -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "Pluginok aláírásainak ellenőrzése és megjelenítése" - -#: common/models.py:1628 +#: common/models.py:1796 msgid "Enable URL integration" msgstr "URL integráció engedélyezése" -#: common/models.py:1629 +#: common/models.py:1797 msgid "Enable plugins to add URL routes" msgstr "URL útvonalalak hozzáadásának engedélyezése a pluginok számára" -#: common/models.py:1636 +#: common/models.py:1804 msgid "Enable navigation integration" msgstr "Navigációs integráció engedélyezése" -#: common/models.py:1637 +#: common/models.py:1805 msgid "Enable plugins to integrate into navigation" msgstr "Navigációs integráció engedélyezése a pluginok számára" -#: common/models.py:1644 +#: common/models.py:1812 msgid "Enable app integration" msgstr "App integráció engedélyezése" -#: common/models.py:1645 +#: common/models.py:1813 msgid "Enable plugins to add apps" msgstr "App hozzáadásának engedélyezése a pluginok számára" -#: common/models.py:1652 +#: common/models.py:1820 msgid "Enable schedule integration" msgstr "Ütemezés integráció engedélyezése" -#: common/models.py:1653 +#: common/models.py:1821 msgid "Enable plugins to run scheduled tasks" msgstr "Háttérben futó feladatok hozzáadásának engedélyezése a pluginok számára" -#: common/models.py:1660 +#: common/models.py:1828 msgid "Enable event integration" msgstr "Esemény integráció engedélyezése" -#: common/models.py:1661 +#: common/models.py:1829 msgid "Enable plugins to respond to internal events" msgstr "Belső eseményekre reagálás engedélyezése a pluginok számára" -#: common/models.py:1668 +#: common/models.py:1836 msgid "Enable project codes" msgstr "Projektszámok engedélyezése" -#: common/models.py:1669 +#: common/models.py:1837 msgid "Enable project codes for tracking projects" msgstr "Projektszámok használatának engedélyezése a projektek követéséhez" -#: common/models.py:1675 +#: common/models.py:1843 msgid "Stocktake Functionality" msgstr "Leltár funkció" -#: common/models.py:1676 +#: common/models.py:1844 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Leltár funkció engedélyezése a készlet mennyiség és érték számításhoz" -#: common/models.py:1682 +#: common/models.py:1850 +msgid "Exclude External Locations" +msgstr "Külső helyek nélkül" + +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "Külső helyek figyelmen kívül hagyása a leltár számításoknál" + +#: common/models.py:1857 msgid "Automatic Stocktake Period" msgstr "Automatikus leltár időpontja" -#: common/models.py:1683 +#: common/models.py:1858 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Hány naponta történjen automatikus leltár (nulla egyenlő tiltva)" -#: common/models.py:1692 +#: common/models.py:1867 msgid "Report Deletion Interval" msgstr "Riport törlési gyakoriság" -#: common/models.py:1693 +#: common/models.py:1868 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Régi leltár riportok törlése hány naponta történjen" -#: common/models.py:1710 common/models.py:2147 +#: common/models.py:1885 common/models.py:2314 msgid "Settings key (must be unique - case insensitive" msgstr "Beállítások kulcs (egyedinek kell lennie, nem kis- nagybetű érzékeny" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" -msgstr "Nincs nyomtató (nyomtatás PDF-be)" - -#: common/models.py:1751 +#: common/models.py:1925 msgid "Hide inactive parts" msgstr "Inaktív alkatrészek elrejtése" -#: common/models.py:1752 +#: common/models.py:1926 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Nem aktív alkatrészek elrejtése a kezdőlapon" -#: common/models.py:1758 +#: common/models.py:1932 msgid "Show subscribed parts" msgstr "Értesítésre beállított alkatrészek megjelenítése" -#: common/models.py:1759 +#: common/models.py:1933 msgid "Show subscribed parts on the homepage" msgstr "Alkatrész értesítések megjelenítése a főoldalon" -#: common/models.py:1765 +#: common/models.py:1939 msgid "Show subscribed categories" msgstr "Értesítésre beállított kategóriák megjelenítése" -#: common/models.py:1766 +#: common/models.py:1940 msgid "Show subscribed part categories on the homepage" msgstr "Alkatrész kategória értesítések megjelenítése a főoldalon" -#: common/models.py:1772 +#: common/models.py:1946 msgid "Show latest parts" msgstr "Legújabb alkatrészek megjelenítése" -#: common/models.py:1773 +#: common/models.py:1947 msgid "Show latest parts on the homepage" msgstr "Legújabb alkatrészek megjelenítése a főoldalon" -#: common/models.py:1779 -msgid "Recent Part Count" -msgstr "Legfrissebb alkatrész szám" - -#: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "Főoldalon megjelenítendő legújabb alkatrészek" - -#: common/models.py:1786 +#: common/models.py:1953 msgid "Show unvalidated BOMs" msgstr "Jóváhagyás nélküli alkatrészjegyzékek megjelenítése" -#: common/models.py:1787 +#: common/models.py:1954 msgid "Show BOMs that await validation on the homepage" msgstr "Jóváhagyásra váró alkatrészjegyzékek megjelenítése a főoldalon" -#: common/models.py:1793 +#: common/models.py:1960 msgid "Show recent stock changes" msgstr "Legfrissebb készlet változások megjelenítése" -#: common/models.py:1794 +#: common/models.py:1961 msgid "Show recently changed stock items on the homepage" msgstr "Legutóbb megváltozott alkatrészek megjelenítése a főoldalon" -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "Legfrissebb készlet mennyiség" - -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "Főoldalon megjelenítendő legújabb készlet tételek száma" - -#: common/models.py:1807 +#: common/models.py:1967 msgid "Show low stock" msgstr "Alacsony készlet megjelenítése" -#: common/models.py:1808 +#: common/models.py:1968 msgid "Show low stock items on the homepage" msgstr "Alacsony készletek megjelenítése a főoldalon" -#: common/models.py:1814 +#: common/models.py:1974 msgid "Show depleted stock" msgstr "Kimerült készlet megjelenítése" -#: common/models.py:1815 +#: common/models.py:1975 msgid "Show depleted stock items on the homepage" msgstr "Kimerült készletek megjelenítése a főoldalon" -#: common/models.py:1821 +#: common/models.py:1981 msgid "Show needed stock" msgstr "Gyártáshoz szükséges készlet megjelenítése" -#: common/models.py:1822 +#: common/models.py:1982 msgid "Show stock items needed for builds on the homepage" msgstr "Gyártáshoz szükséges készletek megjelenítése a főoldalon" -#: common/models.py:1828 +#: common/models.py:1988 msgid "Show expired stock" msgstr "Lejárt készlet megjelenítése" -#: common/models.py:1829 +#: common/models.py:1989 msgid "Show expired stock items on the homepage" msgstr "Lejárt készletek megjelenítése a főoldalon" -#: common/models.py:1835 +#: common/models.py:1995 msgid "Show stale stock" msgstr "Állott készlet megjelenítése" -#: common/models.py:1836 +#: common/models.py:1996 msgid "Show stale stock items on the homepage" msgstr "Álló készletek megjelenítése a főoldalon" -#: common/models.py:1842 +#: common/models.py:2002 msgid "Show pending builds" msgstr "Függő gyártások megjelenítése" -#: common/models.py:1843 +#: common/models.py:2003 msgid "Show pending builds on the homepage" msgstr "Folyamatban lévő gyártások megjelenítése a főoldalon" -#: common/models.py:1849 +#: common/models.py:2009 msgid "Show overdue builds" msgstr "Késésben lévő gyártások megjelenítése" -#: common/models.py:1850 +#: common/models.py:2010 msgid "Show overdue builds on the homepage" msgstr "Késésben lévő gyártások megjelenítése a főoldalon" -#: common/models.py:1856 +#: common/models.py:2016 msgid "Show outstanding POs" msgstr "Kintlévő beszerzési rendelések megjelenítése" -#: common/models.py:1857 +#: common/models.py:2017 msgid "Show outstanding POs on the homepage" msgstr "Kintlévő beszerzési rendelések megjelenítése a főoldalon" -#: common/models.py:1863 +#: common/models.py:2023 msgid "Show overdue POs" msgstr "Késésben lévő megrendelések megjelenítése" -#: common/models.py:1864 +#: common/models.py:2024 msgid "Show overdue POs on the homepage" msgstr "Késésben lévő megrendelések megjelenítése a főoldalon" -#: common/models.py:1870 +#: common/models.py:2030 msgid "Show outstanding SOs" msgstr "Függő vevői rendelések megjelenítése" -#: common/models.py:1871 +#: common/models.py:2031 msgid "Show outstanding SOs on the homepage" msgstr "Függő vevői rendelések megjelenítése a főoldalon" -#: common/models.py:1877 +#: common/models.py:2037 msgid "Show overdue SOs" msgstr "Késésben lévő vevői rendelések megjelenítése" -#: common/models.py:1878 +#: common/models.py:2038 msgid "Show overdue SOs on the homepage" msgstr "Késésben lévő vevői rendelések megjelenítése a főoldalon" -#: common/models.py:1884 +#: common/models.py:2044 msgid "Show pending SO shipments" -msgstr "" +msgstr "Függő vevői szállítmányok megjelenítése" -#: common/models.py:1885 +#: common/models.py:2045 msgid "Show pending SO shipments on the homepage" -msgstr "" +msgstr "Folyamatban lévő vevői szállítmányok megjelenítése a főoldalon" -#: common/models.py:1891 +#: common/models.py:2051 msgid "Show News" msgstr "Hírek megjelenítése" -#: common/models.py:1892 +#: common/models.py:2052 msgid "Show news on the homepage" msgstr "Hírek megjelenítése a főoldalon" -#: common/models.py:1898 +#: common/models.py:2058 msgid "Inline label display" msgstr "Beágyazott címke megjelenítés" -#: common/models.py:1899 +#: common/models.py:2059 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "PDF címkék megjelenítése a böngészőben letöltés helyett" -#: common/models.py:1905 +#: common/models.py:2065 msgid "Default label printer" msgstr "Alapértelmezett címkenyomtató" -#: common/models.py:1906 +#: common/models.py:2066 msgid "Configure which label printer should be selected by default" msgstr "Melyik címkenyomtató legyen az alapértelmezett" -#: common/models.py:1912 +#: common/models.py:2072 msgid "Inline report display" msgstr "Beágyazott riport megjelenítés" -#: common/models.py:1913 +#: common/models.py:2073 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "PDF riport megjelenítése a böngészőben letöltés helyett" -#: common/models.py:1919 +#: common/models.py:2079 msgid "Search Parts" msgstr "Alkatrészek keresése" -#: common/models.py:1920 +#: common/models.py:2080 msgid "Display parts in search preview window" msgstr "Alkatrészek megjelenítése a keresési előnézetben" -#: common/models.py:1926 +#: common/models.py:2086 msgid "Search Supplier Parts" msgstr "Beszállítói alkatrészek keresése" -#: common/models.py:1927 +#: common/models.py:2087 msgid "Display supplier parts in search preview window" msgstr "Beszállítói alkatrészek megjelenítése a keresési előnézetben" -#: common/models.py:1933 +#: common/models.py:2093 msgid "Search Manufacturer Parts" msgstr "Gyártói alkatrészek keresése" -#: common/models.py:1934 +#: common/models.py:2094 msgid "Display manufacturer parts in search preview window" msgstr "Gyártói alkatrészek megjelenítése a keresési előnézetben" -#: common/models.py:1940 +#: common/models.py:2100 msgid "Hide Inactive Parts" msgstr "Inaktív alkatrészek elrejtése" -#: common/models.py:1941 +#: common/models.py:2101 msgid "Excluded inactive parts from search preview window" msgstr "Inaktív alkatrészek kihagyása a keresési előnézet találataiból" -#: common/models.py:1947 +#: common/models.py:2107 msgid "Search Categories" msgstr "Kategóriák keresése" -#: common/models.py:1948 +#: common/models.py:2108 msgid "Display part categories in search preview window" msgstr "Alkatrész kategóriák megjelenítése a keresési előnézetben" -#: common/models.py:1954 +#: common/models.py:2114 msgid "Search Stock" msgstr "Készlet keresése" -#: common/models.py:1955 +#: common/models.py:2115 msgid "Display stock items in search preview window" msgstr "Készlet tételek megjelenítése a keresési előnézetben" -#: common/models.py:1961 +#: common/models.py:2121 msgid "Hide Unavailable Stock Items" msgstr "Nem elérhető készlet tételek elrejtése" -#: common/models.py:1962 +#: common/models.py:2122 msgid "Exclude stock items which are not available from the search preview window" msgstr "Nem elérhető készlet kihagyása a keresési előnézet találataiból" -#: common/models.py:1968 +#: common/models.py:2128 msgid "Search Locations" msgstr "Helyek keresése" -#: common/models.py:1969 +#: common/models.py:2129 msgid "Display stock locations in search preview window" msgstr "Készlet helyek megjelenítése a keresési előnézetben" -#: common/models.py:1975 +#: common/models.py:2135 msgid "Search Companies" msgstr "Cégek keresése" -#: common/models.py:1976 +#: common/models.py:2136 msgid "Display companies in search preview window" msgstr "Cégek megjelenítése a keresési előnézetben" -#: common/models.py:1982 +#: common/models.py:2142 msgid "Search Build Orders" msgstr "Gyártási utasítások keresése" -#: common/models.py:1983 +#: common/models.py:2143 msgid "Display build orders in search preview window" msgstr "Gyártási utasítások megjelenítése a keresés előnézet ablakban" -#: common/models.py:1989 +#: common/models.py:2149 msgid "Search Purchase Orders" msgstr "Beszerzési rendelések keresése" -#: common/models.py:1990 +#: common/models.py:2150 msgid "Display purchase orders in search preview window" msgstr "Beszerzési rendelések megjelenítése a keresési előnézetben" -#: common/models.py:1996 +#: common/models.py:2156 msgid "Exclude Inactive Purchase Orders" msgstr "Inaktív beszerzési rendelések kihagyása" -#: common/models.py:1997 +#: common/models.py:2157 msgid "Exclude inactive purchase orders from search preview window" msgstr "Inaktív beszerzési rendelések kihagyása a keresési előnézet találataiból" -#: common/models.py:2003 +#: common/models.py:2163 msgid "Search Sales Orders" msgstr "Vevői rendelések keresése" -#: common/models.py:2004 +#: common/models.py:2164 msgid "Display sales orders in search preview window" msgstr "Vevői rendelések megjelenítése a keresési előnézetben" -#: common/models.py:2010 +#: common/models.py:2170 msgid "Exclude Inactive Sales Orders" msgstr "Inaktív vevői rendelések kihagyása" -#: common/models.py:2011 +#: common/models.py:2171 msgid "Exclude inactive sales orders from search preview window" msgstr "Inaktív vevői rendelések kihagyása a keresési előnézet találataiból" -#: common/models.py:2017 +#: common/models.py:2177 msgid "Search Return Orders" -msgstr "Visszavételi utasítások keresése" +msgstr "Visszavétel keresése" -#: common/models.py:2018 +#: common/models.py:2178 msgid "Display return orders in search preview window" -msgstr "Visszavételi utasítások megjelenítése a keresés előnézet ablakban" +msgstr "Visszavételek megjelenítése a keresés előnézet ablakban" -#: common/models.py:2024 +#: common/models.py:2184 msgid "Exclude Inactive Return Orders" -msgstr "Inaktív visszavételi utasítások kihagyása" +msgstr "Inaktív visszavételek kihagyása" -#: common/models.py:2025 +#: common/models.py:2185 msgid "Exclude inactive return orders from search preview window" -msgstr "Inaktív visszavételi utasítások kihagyása a keresési előnézet találataiból" +msgstr "Inaktív visszavételek kihagyása a keresési előnézet találataiból" -#: common/models.py:2031 +#: common/models.py:2191 msgid "Search Preview Results" msgstr "Keresési előnézet eredményei" -#: common/models.py:2032 +#: common/models.py:2192 msgid "Number of results to show in each section of the search preview window" msgstr "A keresési előnézetben megjelenítendő eredmények száma szekciónként" -#: common/models.py:2038 +#: common/models.py:2198 msgid "Regex Search" msgstr "Regex keresés" -#: common/models.py:2039 +#: common/models.py:2199 msgid "Enable regular expressions in search queries" msgstr "Reguláris kifejezések engedélyezése a keresésekben" -#: common/models.py:2045 +#: common/models.py:2205 msgid "Whole Word Search" msgstr "Teljes szó keresés" -#: common/models.py:2046 +#: common/models.py:2206 msgid "Search queries return results for whole word matches" msgstr "A keresések csak teljes szóra egyező találatokat adjanak" -#: common/models.py:2052 +#: common/models.py:2212 msgid "Show Quantity in Forms" msgstr "Mennyiség megjelenítése a formokon" -#: common/models.py:2053 +#: common/models.py:2213 msgid "Display available part quantity in some forms" msgstr "Rendelkezésre álló alkatrész mennyiség megjelenítése néhány formon" -#: common/models.py:2059 +#: common/models.py:2219 msgid "Escape Key Closes Forms" msgstr "ESC billentyű zárja be a formot" -#: common/models.py:2060 +#: common/models.py:2220 msgid "Use the escape key to close modal forms" msgstr "ESC billentyű használata a modális formok bezárásához" -#: common/models.py:2066 +#: common/models.py:2226 msgid "Fixed Navbar" msgstr "Rögzített menüsor" -#: common/models.py:2067 +#: common/models.py:2227 msgid "The navbar position is fixed to the top of the screen" msgstr "A menü pozíciója mindig rögzítve a lap tetején" -#: common/models.py:2073 +#: common/models.py:2233 msgid "Date Format" msgstr "Dátum formátum" -#: common/models.py:2074 +#: common/models.py:2234 msgid "Preferred format for displaying dates" msgstr "Preferált dátum formátum a dátumok kijelzésekor" -#: common/models.py:2088 part/templates/part/detail.html:41 +#: common/models.py:2248 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Alkatrész ütemezés" -#: common/models.py:2089 +#: common/models.py:2249 msgid "Display part scheduling information" msgstr "Alkatrész ütemezési információk megjelenítése" -#: common/models.py:2095 part/templates/part/detail.html:62 +#: common/models.py:2255 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Alkatrész leltár" -#: common/models.py:2096 +#: common/models.py:2256 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Alkatrész leltár információk megjelenítése (ha a leltár funkció engedélyezett)" -#: common/models.py:2102 +#: common/models.py:2262 msgid "Table String Length" msgstr "Táblázati szöveg hossz" -#: common/models.py:2103 +#: common/models.py:2263 msgid "Maximimum length limit for strings displayed in table views" msgstr "Maximális szöveg hossz ami megjelenhet a táblázatokban" -#: common/models.py:2112 +#: common/models.py:2272 msgid "Default part label template" -msgstr "" +msgstr "Alapértelmezett alkatrész címke sablon" -#: common/models.py:2113 +#: common/models.py:2273 msgid "The part label template to be automatically selected" -msgstr "" +msgstr "Az alapértelmezetten kiválasztott alkatrész címke sablon" -#: common/models.py:2121 +#: common/models.py:2281 msgid "Default stock item template" -msgstr "" +msgstr "Alapértelmezett készlet címke sablon" -#: common/models.py:2122 +#: common/models.py:2282 msgid "The stock item label template to be automatically selected" -msgstr "" +msgstr "Az alapértelmezetten kiválasztott készlet címke sablon" -#: common/models.py:2130 +#: common/models.py:2290 msgid "Default stock location label template" -msgstr "" +msgstr "Alapértelmezett készlethely címke sablon" -#: common/models.py:2131 +#: common/models.py:2291 msgid "The stock location label template to be automatically selected" -msgstr "" +msgstr "Az alapértelmezetten kiválasztott készlethely címke sablon" -#: common/models.py:2177 +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "Hibariportok fogadása" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "Értesítések fogadása a rendszerhibákról" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "Ársáv mennyiség" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Ár" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "Egységár egy meghatározott mennyiség esetén" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "Végpont" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "Végpont ahol ez a webhook érkezik" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "Webhook neve" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "Aktív" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "Aktív-e ez a webhook" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "Token" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "Token a hozzáféréshez" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "Titok" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "Megosztott titok a HMAC-hoz" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "Üzenet azonosító" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "Egyedi azonosító ehhez az üzenethez" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "Kiszolgáló" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "Kiszolgáló ahonnan ez az üzenet érkezett" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "Fejléc" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "Üzenet fejléce" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "Törzs" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "Üzenet törzse" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "Végpont amin ez az üzenet érkezett" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "Dolgozott rajta" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "Befejeződött a munka ezzel az üzenettel?" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "Id" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "Cím" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "Közzétéve" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "Szerző" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "Összefoglaló" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "Elolvasva" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "Elolvasva?" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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 "Kép" -#: common/models.py:2737 +#: common/models.py:2902 msgid "Image file" msgstr "Képfájl" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "A mértékegységnek valós azonosítónak kell lennie" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "Egység neve" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "Szimbólum" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "Opcionális mértékegység szimbólum" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "Definíció" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "Mértékegység definíció" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "Új {verbose_name}" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "Egy új megrendelés létrehozva, és hozzád rendelve" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "Készlet érkezett" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "Készlet érkezett egy beszerzési megrendeléshez" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" -msgstr "Készlet érkezett vissza egy visszavételi utasításhoz" +msgstr "Készlet érkezett vissza egy visszavétel miatt" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "Plugin hiba" @@ -3479,7 +3581,7 @@ msgstr "Mezők egyeztetése sikertelen" msgid "Parts imported" msgstr "Importált alkatrészek" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3498,9 +3600,9 @@ msgstr "Cég leírása" msgid "Description of the company" msgstr "A cég leírása" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "Weboldal" @@ -3508,331 +3610,395 @@ msgstr "Weboldal" msgid "Company website URL" msgstr "Cég weboldala" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Cím" - -#: company/models.py:119 -msgid "Company address" -msgstr "Cég címe" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Telefonszám" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "Kapcsolattartó telefonszáma" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "Email" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "Kapcsolattartó email címe" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Névjegy" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "Kapcsolattartó" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "Link a külső céginformációhoz" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "vevő-e" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "Értékesítesz alkatrészeket ennek a cégnek?" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "beszállító-e" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "Vásárolsz alkatrészeket ettől a cégtől?" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "gyártó-e" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "Gyárt ez a cég alkatrészeket?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "Cég által használt alapértelmezett pénznem" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Cég" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "Cég kiválasztása" + +#: company/models.py:337 +msgid "Address title" +msgstr "Cím megnevezése" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "Címhez tartozó leírás, megnevezés" + +#: company/models.py:342 +msgid "Primary address" +msgstr "Elsődleges cím" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "Beállítás elsődleges címként" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "1. sor" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "Cím első sora" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "2. sor" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "Cím második sora" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "Irányítószám" + +#: company/models.py:361 +msgid "City/Region" +msgstr "Város/Régió" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "Irányítószám város/régió" + +#: company/models.py:366 +msgid "State/Province" +msgstr "Állam/Megye" + +#: company/models.py:367 +msgid "State or province" +msgstr "Állam vagy megye" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "Ország" + +#: company/models.py:372 +msgid "Address country" +msgstr "Cím országa" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "Megjegyzés a futárnak" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "Futárnak szóló megjegyzések" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "Belső szállítási megjegyzések" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "Szállítási megjegyzések belső használatra" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "Link a címinformációkhoz (külső)" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Kiindulási alkatrész" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "Válassz alkatrészt" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Gyártó" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Gyártó kiválasztása" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "MPN" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "Gyártói cikkszám" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "URL link a gyártói alkatrészhez" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "Gyártói alkatrész leírása" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Gyártói alkatrész" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "Paraméter neve" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Érték" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "Paraméter értéke" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "Mértékegység" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "Paraméter mértékegység" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" -msgstr "" +msgstr "A csomagolási egységnek kompatibilisnek kell lennie az alkatrész mértékegységgel" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" -msgstr "" +msgstr "Csomagolási mennyiségnek nullánál többnek kell lennie" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "Kapcsolódó gyártói alkatrésznek ugyanarra a kiindulási alkatrészre kell hivatkoznia" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Beszállító" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "Beszállító kiválasztása" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "SKU" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "Beszállítói cikkszám" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "Gyártói alkatrész kiválasztása" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "URL link a beszállítói alkatrészhez" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "Beszállítói alkatrész leírása" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "Megjegyzés" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "alap költség" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimális díj (pl. tárolási díj)" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Csomagolás" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "Alkatrész csomagolás" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "Csomagolási mennyiség" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." -msgstr "" +msgstr "Egy csomagban kiszállítható mennyiség, hagyd üresen az egyedi tételeknél." -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "többszörös" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "Többszörös rendelés" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "Elérhető" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "Beszállítónál elérhető mennyiség" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "Elérhetőség frissítve" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "Utolsó elérhetőségi adat frissítés" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "Beszállító által használt alapértelmezett pénznem" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "Beszerzési rendelés létrehozása" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "Cég műveletek" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "Cég adatainak szerkesztése" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "Cég szerkesztése" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "Cég törlése" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "Cég törlése" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3842,72 +4008,79 @@ msgstr "Cég törlése" msgid "Part image" msgstr "Alkatrész képe" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Új kép feltöltése" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Kép letöltése URL-ről" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "Kép törlése" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Vevő" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "Alapértelmezett pénznemet használja" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Cím" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "Telefonszám" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "Kép eltávolítása" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "Céghez rendelt kép eltávolítása" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "Törlés" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "Kép feltöltése" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "Kép letöltése" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "Beszállítói alkatrészek" @@ -3917,156 +4090,144 @@ msgstr "Új beszállítói alkatrész létrehozása" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "Új beszállítói alkatrész" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "Alkatrész rendelés" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "Alkatrész törlés" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "Alkatrész törlés" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "Gyártói alkatrészek" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "Új gyártói alkatrész létrehozása" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "Új gyártói alkatrész" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "Beszállítói készlet" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "Beszerzési rendelések" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "Beszerzési rendelés létrehozása" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "Új beszerzési rendelés" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "Vevői rendelések" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "Vevői rendelés létrehozása" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "Új vevői rendelés" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "Hozzárendelt készlet" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" -msgstr "Visszavételi utasítások" +msgstr "Visszavételek" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" -msgstr "Visszavételi utasítás létrehozása" +msgstr "Visszavétel létrehozása" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" -msgstr "Új visszavételi utasítás" +msgstr "Új visszavétel" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "Cég megjegyzések" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "Cég névjegyek" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "Névjegy hozzáadása" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "Beszállítók listája" +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "Cég címei" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "Cím hozzáadása" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "Gyártók" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "Alkatrész rendelés" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "Gyártói alkatrész szerkesztése" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "Gyártói alkatrész törlése" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "Belső alkatrész" @@ -4075,46 +4236,28 @@ msgid "No manufacturer information available" msgstr "Nincs elérhető gyártói információ" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "Beszállítók" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "Beszállítói alkatrész törlése" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "Törlés" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Paraméterek" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "Új paraméter" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "Paraméterek törlése" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "Paraméter hozzáadása" @@ -4138,106 +4281,111 @@ msgstr "Hozzárendelt készlet tételek" msgid "Contacts" msgstr "Névjegyek" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "Címek" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "Beszállítói alkatrész" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "Beszállítói alkatrész műveletek" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "Alkatrész rendelése" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "Elérhetőség frissítése" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "Beszállítói alkatrész szerkesztése" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "Beszállítói alkatrész másolása" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "Beszállítói alkatrész törlése" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "Beszállítói alkatrész törlése" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "Nincs elérhető beszállítói információ" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "Beszállítói készlet" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "Új készlet tétel létrehozása" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Új készlet tétel" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "Beszállítói alkatrész rendelések" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "Árinformációk" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "Ársáv hozzáadása" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "Beszállítói alkatrész QR kód" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "Vonalkód hozzárendelése a beszállítói alkatrészhez" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "Alkatrész elérhetőség frissítése" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "Készlet tételek" @@ -4245,103 +4393,96 @@ msgstr "Készlet tételek" msgid "Supplier Part Pricing" msgstr "Beszállító alkatrész árazás" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "Új beszállító" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "Új gyártó" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "Vevők" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "Új vevő" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "Cégek" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "Új cég" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "Címke neve" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "Címke leírása" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "Címke" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "Címke sablon fájl" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "Engedélyezve" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "Címke sablon engedélyezve" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "Szélesség [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "Címke szélessége, mm-ben" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "Magasság [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "Címke magassága, mm-ben" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "Fájlnév minta" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "Minta a címke fájlnevek előállításához" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," -msgstr "Lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "Lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "Szűrők" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "Lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "Alkatrész lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" -msgstr "QC kód" +msgid "QR Code" +msgstr "QR kód" #: label/templates/label/part/part_label_code128.html:31 #: label/templates/label/stocklocation/qr_and_text.html:31 @@ -4349,170 +4490,174 @@ msgstr "QC kód" msgid "QR code" msgstr "QR kód" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "Teljes ár" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "Nincs egyező beszerzési rendelés" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "Beszerzési rendelés" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" -msgstr "Visszavételi utasítás" +msgstr "Visszavétel" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "Ismeretlen" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "A rendelés teljes ára" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" -msgstr "Megrendelés pénzneme" +msgstr "Rendelés pénzneme" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" -msgstr "Megrendeléshez használt pénznem (hagyd üresen a cég alapértelmezett pénznemének használatához)" +msgstr "Megrendeléshez használt pénznem (hagyd üresen a cégnél alapértelmezetthez)" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "A kapcsolattartó nem egyezik a kiválasztott céggel" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "Rendelés leírása (opcionális)" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "Válassz projektszámot ehhez a rendeléshez" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "Link külső weboldalra" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Várt teljesítési dátuma a megrendelésnek. Ezután már késésben lévőnek számít majd." -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "Készítette" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "Felhasználó vagy csoport aki felelőse ennek a rendelésnek" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "Kapcsolattartó ehhez a rendeléshez" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "Cég címei ehhez a rendeléshez" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "Rendelés azonosító" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "Beszerzési rendelés állapota" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "Cég akitől a tételek beszerzésre kerülnek" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "Beszállítói azonosító" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "Beszállítói rendelés azonosító kód" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "érkeztette" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "Kiállítás dátuma" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "Kiállítás dátuma" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "Rendelés teljesítési dátuma" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "Az alkatrész beszállítója meg kell egyezzen a beszerzési rendelés beszállítójával" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "Mennyiség pozitív kell legyen" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "Cég akinek a tételek értékesítésre kerülnek" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "Vevői azonosító " -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "Megrendelés azonosító kódja a vevőnél" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "Kiszállítás dátuma" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "szállította" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "A rendelés nem teljesíthető mivel nincs hozzárendelve alkatrész" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "Csak nyitott rendelés jelölhető késznek" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "A rendelés nem jelölhető késznek mivel függő szállítmányok vannak" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "A rendelés nem jelölhető késznek mivel nem teljesített sortételek vannak" @@ -4520,398 +4665,398 @@ msgstr "A rendelés nem jelölhető késznek mivel nem teljesített sortételek msgid "Item quantity" msgstr "Tétel mennyiség" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "Sortétel azonosító" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "Sortétel megjegyzései" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "Cél dátuma ennek a sortételnek (hagyd üresen a rendelés céldátum használatához)" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" -msgstr "" +msgstr "Sortétel leírása (opcionális)" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "Kontextus" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "További kontextus ehhez a sorhoz" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "Egységár" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "Beszállítói alkatrésznek egyeznie kell a beszállítóval" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "törölve" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "Rendelés" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "Beszállítói alkatrész" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "Beérkezett" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "Érkezett tételek száma" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Beszerzési ár" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "Beszerzési egységár" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "Mit szeretne a vevő hol tároljuk ezt az alkatrészt?" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "Virtuális alkatrészt nem lehet vevői rendeléshez adni" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "Csak értékesíthető alkatrészeket lehet vevői rendeléshez adni" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Eladási ár" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "Eladási egységár" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "Szállított mennyiség" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "Szállítás dátuma" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" -msgstr "Szállítás dátuma" +msgstr "Szállítási dátum" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" -msgstr "" +msgstr "Kézbesítés dátuma" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "Ellenőrizte" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "Felhasználó aki ellenőrizte ezt a szállítmányt" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Szállítmány" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "Szállítmány száma" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "Nyomkövetési szám" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "Szállítmány nyomkövetési információ" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "Számlaszám" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "Hozzátartozó számla referencia száma" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "Szállítmány már elküldve" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "Szállítmány nem tartalmaz foglalt készlet tételeket" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "Készlet tétel nincs hozzárendelve" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "Nem foglalható készlet egy másik fajta alkatrész sortételéhez" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "Nem foglalható készlet egy olyan sorhoz amiben nincs alkatrész" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "A lefoglalandó mennyiség nem haladhatja meg a készlet mennyiségét" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "Egyedi követésre kötelezett tételeknél a menyiség 1 kell legyen" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "Vevői rendelés nem egyezik a szállítmánnyal" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "Szállítmány nem egyezik a vevői rendeléssel" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "Sor" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "Vevői rendelés szállítmány azonosító" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "Tétel" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "Válaszd ki a foglalásra szánt készlet tételt" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "Készlet foglalási mennyiség megadása" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" -msgstr "Visszavételi utasítás azonosító" +msgstr "Visszavétel azonosító" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "Cég akitől a tételek visszavételre kerülnek" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" -msgstr "Visszavételi utasítás állapota" +msgstr "Visszavétel állapota" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "Csak szériaszámos tételek rendelhetők visszaszállítási utasításhoz" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "Válaszd ki a vevőtől visszavenni kívánt tételt" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" -msgstr "Visszavételi dátum" +msgstr "Visszavétel dátuma" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "Mikor lett visszavéve a tétel" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Kimenetel" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "Sortétel végső kimenetele" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "Sortétel visszaküldésének vagy javításának költsége" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "A rendelést nem lehet törölni" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "Rendelés lezárása teljesítetlen sortételek esetén is" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "A rendelésben teljesítetlen sortételek vannak" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "A rendelés nem nyitott" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "Beszérzési ár pénzneme" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "Beszállítói alkatrészt meg kell adni" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "Beszerzési rendelést meg kell adni" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "A beszállítónak egyeznie kell a beszerzési rendelésben lévővel" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "A beszerzési rendelésnek egyeznie kell a beszállítóval" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "Sortétel" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "Sortétel nem egyezik a beszerzési megrendeléssel" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "Válassz cél helyet a beérkezett tételeknek" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "Írd be a batch kódját a beérkezett tételeknek" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "Írd be a sorozatszámokat a beérkezett tételekhez" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Vonalkód" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "Beolvasott vonalkód" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "Ez a vonalkód már használva van" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "Egész számú mennyiség szükséges az egyedi követésre kötelezett alkatrészeknél" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "Sortételt meg kell adni" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "A cél helyet kötelező megadni" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "Megadott vonalkódoknak egyedieknek kel lenniük" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "Eladási ár pénzneme" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "Nincsenek szállítmány részletek megadva" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "Sortétel nincs hozzárendelve ehhez a rendeléshez" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "Mennyiség pozitív kell legyen" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "Írd be a sorozatszámokat a kiosztáshoz" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "Szállítmány kiszállítva" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "Szállítmány nincs hozzárendelve ehhez a rendeléshez" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "Nincs találat a következő sorozatszámokra" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "A következő sorozatszámok már ki lettek osztva" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" -msgstr "Visszavételi utasítás sortétel" +msgstr "Visszavétel sortétel" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" -msgstr "Sortétel nem egyezik a visszavételi utasítással" +msgstr "Sortétel nem egyezik a visszavétellel" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "A sortétel már beérkezett" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "Csak folyamatban lévő megrendelés tételeit lehet bevételezni" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "Sortétel pénzneme" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "Késésben lévő beszerzés" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "A {po} beszerzési rendelés most már késésben van" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "Késésben lévő vevői rendelés" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "A {so} vevői rendelés most már késésben van" @@ -4921,26 +5066,26 @@ msgid "Print purchase order report" msgstr "Beszerzési rendelés nyomtatása" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "Rendelés exportálása fájlba" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "Rendelés műveletek" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "Rendelés szerkesztése" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "Rendelés törlése" @@ -4950,90 +5095,82 @@ msgstr "Rendelés másolása" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "Rendelés kiküldése" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "Érkezett tételek bevételezése" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "Bevételezés" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "Rendelés teljesítettnek jelölése" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "Rendelés befejezése" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" -msgstr "" +msgstr "Beszállítói alkatrész bélyegkép" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "Rendelés azonosítója" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "Rendelés leírása" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "Rendelés állapota" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "Nincs elérhető beszállítói információ" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "Kész sortételek" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "Hiányos" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "Kiküldve" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "Teljes költség" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "A teljes költség nem számolható" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "Beszerzési rendelés QR kódja" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "Vonalkód hozzáadása a beszerzési rendeléshez" @@ -5086,13 +5223,13 @@ msgstr "Kijelöltek másolása" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Sor törlése" @@ -5153,9 +5290,9 @@ msgstr "Beszerzési rendelés tételei" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "Sortétel hozzáadása" @@ -5166,108 +5303,103 @@ msgstr "Sortétel hozzáadása" msgid "Receive Line Items" msgstr "Sortételek bevételezése" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "Sortételek törlése" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "Egyéb tételek" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "Egyéb tétel hozzáadása" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "Érkezett tételek" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "Rendelés megjegyzések" #: order/templates/order/return_order_base.html:18 #: order/templates/order/sales_order_base.html:18 msgid "Customer logo thumbnail" -msgstr "" +msgstr "Vevő logó bélyegkép" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "Visszavételi riport nyomtatása" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "Csomagolási lista nyomtatása" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "Vevői azonosító" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "Teljes költség" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" -msgstr "Visszavételi utasítás QR kódja" +msgstr "Visszavétel QR kódja" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" -msgstr "Vonalkód visszavételi utasításhoz rendelése" +msgstr "Vonalkód visszavételhez rendelése" #: order/templates/order/return_order_sidebar.html:5 msgid "Order Details" msgstr "Visszavétel részletei" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "Vevői rendelés nyomtatása" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "Tételek kiszállítása" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "Vevői rendelés befejezése, minden kiszállítva" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "Ehhez a vevői rendeléshez nincs minden alkatrész lefoglalva" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "Kész szállítmányok" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "Vevő rendelés QR kódja" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "Vonalkód hozzáadása a vevői rendeléshez" @@ -5275,18 +5407,17 @@ msgstr "Vonalkód hozzáadása a vevői rendeléshez" msgid "Sales Order Items" msgstr "Vevői rendelés tételek" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "Függő szállítmányok" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Műveletek" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "Új szállítmány" @@ -5294,64 +5425,65 @@ msgstr "Új szállítmány" msgid "Match Supplier Parts" msgstr "Beszállítói alkatrészek egyeztetése" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "Vevő rendelés nem találhtó" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "Nem található ár" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "A {part} egységára {price}-ra módosítva" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "A {part} alkatrész módosított egységára {price} mennyisége pedig {qty}" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "Alkatrész ID" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "Alkatrész neve" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "Alkatrész leírása" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "IPN" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "Változat" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Kulcsszavak" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "Kategória ID" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "Kategória neve" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "Alapértelmezett készlethely ID" @@ -5359,24 +5491,24 @@ msgstr "Alapértelmezett készlethely ID" msgid "Default Supplier ID" msgstr "Alapértelmezett beszállító ID" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Ebből a sablonból" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimális készlet" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "Készleten" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "Rendelve" @@ -5384,115 +5516,108 @@ msgstr "Rendelve" msgid "Used In" msgstr "Felhasználva ebben" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "Lefoglalva" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "Gyártásban" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "Minimum költség" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "Maximum költség" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "Szülő ID" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "Szülő neve" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "Kategória elérési út" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "Alkatrészek" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "Alkatrészjegyzék szint" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "Alkatrészjegyzék tétel ID" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "Szülő IPN" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "Alkatrész IPN" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Minimum ár" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Maximum ár" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "Beérkező beszerzési rendelés" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "Kimenő vevői rendelés" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "Gyártással előállított készlet" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "A gyártási utasításhoz szükséges készlet" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "Érvényes" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "Teljes alkatrészjegyzék jóváhagyása" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "Ennek az opciónak ki kll lennie választva" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Alapértelmezett hely" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Teljes készlet" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "Elérhető készlet" @@ -5500,950 +5625,969 @@ msgstr "Elérhető készlet" msgid "Input quantity for price calculation" msgstr "Add meg a mennyiséget az árszámításhoz" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Alkatrész kategória" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "Alkatrész kategóriák" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "Ebben a kategóriában lévő alkatrészek helye alapban" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Szerkezeti" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "A szerkezeti alkatrész kategóriákhoz nem lehet direktben alkatrészeket hozzáadni, csak az alkategóriáikhoz." -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "Alapértelmezett kulcsszavak" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "Ebben a kategóriában évő alkatrészek kulcsszavai alapban" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "Ikon" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "Ikon (opcionális)" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "Nem lehet az alkatrészkategóriát szerkezeti kategóriává tenni, mert már vannak itt alkatrészek!" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "Hibás választás a szülő alkatrészre" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" -msgstr "A '{p1}' alkatrész a '{p2}' alkatrészjegyzékében már szerepel (rekurzív)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "IPN mezőnek egyeznie kell a '{pat}' mintával" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "Létezik már készlet tétel ilyen a sorozatszámmal" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "Azonos IPN nem engedélyezett az alkatrészekre, már létezik ilyen" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "Ilyen nevű, IPN-ű és reviziójú alkatrész már létezik." -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "Szerkezeti kategóriákhoz nem lehet alkatrészeket rendelni!" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "Alkatrész neve" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "Sablon-e" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "Ez egy sablon alkatrész?" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "Ez az alkatrész egy másik változata?" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "Alkatrész leírása (opcionális)" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "Alkatrész kulcsszavak amik segítik a megjelenést a keresési eredményekben" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "Kategória" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "Alkatrész kategória" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "Belső cikkszám" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "Alkatrész változat vagy verziószám (pl. szín, hossz, revízió, stb.)" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "Alapban hol tároljuk ezt az alkatrészt?" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Alapértelmezett beszállító" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "Alapértelmezett beszállítói alkatrész" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "Alapértelmezett lejárat" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "Lejárati idő (napban) ennek az alkatrésznek a készleteire" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "Minimálisan megengedett készlet mennyiség" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "Alkatrész mértékegysége" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Gyártható-e ez az alkatrész más alkatrészekből?" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Felhasználható-e ez az alkatrész más alkatrészek gyártásához?" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "Kell-e külön követni az egyes példányait ennek az alkatrésznek?" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "Rendelhető-e ez az alkatrész egy külső beszállítótól?" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "Értékesíthető-e önmagában ez az alkatrész a vevőknek?" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "Aktív-e ez az alkatrész?" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "Ez egy virtuális nem megfogható alkatrész, pl. szoftver vagy licenc?" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "Alkatrészjegyzék ellenőrző összeg" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "Tárolt alkatrészjegyzék ellenőrző összeg" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "Alkatrészjegyzéket ellenőrizte" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "Alkatrészjegyzék ellenőrzési dátuma" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "Létrehozó" -#: part/models.py:1042 -msgid "User responsible for this part" -msgstr "Felhasználó aki felelős ezért az alkatrészért" +#: part/models.py:1014 +msgid "Owner responsible for this part" +msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "Utolsó leltár" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "Több értékesítése" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "Árszámítások gyorstárazásához használt pénznem" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "Minimum alkatrészjegyzék költség" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "Összetevők minimum költsége" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "Maximum alkatrészjegyzék költség" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "Összetevők maximum költsége" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "Minimum beszerzési ár" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "Eddigi minimum beszerzési költség" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "Maximum beszerzési ár" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "Eddigi maximum beszerzési költség" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "Minimum belső ár" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "Minimum költség a belső ársávok alapján" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "Maximum belső ár" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "Maximum költség a belső ársávok alapján" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "Minimum beszállítói ár" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "Minimum alkatrész ár a beszállítóktól" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "Maximum beszállítói ár" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "Maximum alkatrész ár a beszállítóktól" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "Minimum alkatrészváltozat ár" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "Alkatrészváltozatok számolt minimum költsége" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "Maximum alkatrészváltozat ár" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "Alkatrészváltozatok számolt maximum költsége" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "Számított általános minimum költség" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "Számított általános maximum költség" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "Minimum eladási ár" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "Minimum eladási ár az ársávok alapján" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "Maximum eladási ár" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "Maximum eladási ár az ársávok alapján" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "Minimum eladási költség" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "Eddigi minimum eladási ár" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "Maximum eladási költség" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "Eddigi maximum eladási ár" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "Leltározható alkatrész" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "Tételszám" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "Egyedi készlet tételek száma a leltárkor" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "Teljes készlet a leltárkor" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "Dátum" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "Leltározva ekkor" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "További megjegyzések" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "Leltározta" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "Minimum készlet érték" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "Becsült minimum raktárkészlet érték" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "Maximum készlet érték" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "Becsült maximum raktárkészlet érték" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "Riport" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "Leltár riport fájl (generált)" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "Alkatrész szám" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "Leltározott alkatrészek száma" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "Felhasználó aki a leltár riportot kérte" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "Teszt sablont csak követésre kötelezett alkatrészhez lehet csinálni" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "Erre az alkatrészre már létezik teszt ilyen névvel" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "Teszt név" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "Add meg a teszt nevét" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "Teszt leírása" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "Adj hozzá egy leírást ehhez a teszthez" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Kötelező" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "Szükséges-e hogy ez a teszt sikeres legyen?" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "Kötelező érték" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "Szükséges-e hogy ennek a tesztnek az eredményéhez kötelezően érték legyen rendelve?" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "Kötelező melléklet" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "Szükséges-e hogy ennek a tesztnek az eredményéhez kötelezően fájl melléklet legyen rendelve?" #: part/models.py:3346 msgid "Checkbox parameters cannot have units" -msgstr "" +msgstr "Jelölőnégyzet paraméternek nem lehet mértékegysége" #: part/models.py:3351 msgid "Checkbox parameters cannot have choices" -msgstr "" +msgstr "Jelölőnégyzet paraméternek nem lehetnek választási lehetőségei" #: part/models.py:3369 msgid "Choices must be unique" -msgstr "" +msgstr "A lehetőségek egyediek kell legyenek" #: part/models.py:3385 msgid "Parameter template name must be unique" msgstr "A paraméter sablon nevének egyedinek kell lennie" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "Paraméter neve" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "Paraméter mértékegysége" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "Paraméter leírása" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" -msgstr "" +msgstr "Jelölőnégyzet" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" -msgstr "" +msgstr "Ez a paraméter egy jelölőnégyzet?" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" -msgstr "" +msgstr "Lehetőségek" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" -msgstr "" +msgstr "Választható lehetőségek (vesszővel elválasztva)" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" -msgstr "" +msgstr "Hibás választás a paraméterre" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "Szülő alkatrész" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "Paraméter sablon" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "Adat" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "Paraméter értéke" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "Alapértelmezett érték" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "Alapértelmezett paraméter érték" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "Alkatrész ID vagy alkatrész név" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "Egyedi alkatrész ID értéke" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "Alkatrész IPN érték" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "Szint" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "Alkatrészjegyzék szint" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "Alkatrészjegyzék tétel" + +#: part/models.py:3771 msgid "Select parent part" msgstr "Szülő alkatrész kiválasztása" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "Al alkatrész" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "Válaszd ki az alkatrészjegyzékben használandó alkatrészt" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "Opcionális" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "Ez az alkatrészjegyzék tétel opcionális" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "Fogyóeszköz" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "Ez az alkatrészjegyzék tétel fogyóeszköz (készlete nincs követve a gyártásban)" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Többlet" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Becsült gyártási veszteség (abszolút vagy százalékos)" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "Alkatrészjegyzék tétel azonosító" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "Alkatrészjegyzék tétel megjegyzései" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "Ellenőrző összeg" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "Alkatrészjegyzék sor ellenőrző összeg" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Jóváhagyva" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "Ez a BOM tétel jóvá lett hagyva" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:1054 +#: templates/js/translated/table_filters.js:178 +#: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "Öröklődött" -#: part/models.py:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Ezt az alkatrészjegyzék tételt az alkatrész változatok alkatrészjegyzékei is öröklik" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Változatok" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Alkatrészváltozatok készlet tételei használhatók ehhez az alkatrészjegyzék tételhez" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "A mennyiség egész szám kell legyen a követésre kötelezett alkatrészek esetén" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "Al alkatrészt kötelező megadni" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "Alkatrészjegyzék tétel helyettesítő" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "A helyettesítő alkatrész nem lehet ugyanaz mint a fő alkatrész" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "Szülő alkatrészjegyzék tétel" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "Helyettesítő alkatrész" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "1.rész" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "2.rész" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "Válassz kapcsolódó alkatrészt" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "Alkatrész kapcsolat nem hozható létre önmagával" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "Már létezik duplikált alkatrész kapcsolat" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "Beszerzési pénzneme ennek a készlet tételnek" -#: part/serializers.py:302 +#: part/serializers.py:346 +msgid "No parts selected" +msgstr "Nincs kiválasztva alkatrész" + +#: part/serializers.py:354 +msgid "Select category" +msgstr "Válassz kategóriát" + +#: part/serializers.py:384 msgid "Original Part" msgstr "Eredeti alkatrész" -#: part/serializers.py:302 +#: part/serializers.py:384 msgid "Select original part to duplicate" msgstr "Válassz eredeti alkatrészt a másoláshoz" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy Image" msgstr "Kép másolása" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy image from original part" msgstr "Kép másolása az eredeti alkatrészről" -#: part/serializers.py:312 part/templates/part/detail.html:296 +#: part/serializers.py:394 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Alkatrészjegyzék másolása" -#: part/serializers.py:312 +#: part/serializers.py:394 msgid "Copy bill of materials from original part" msgstr "Alkatrészjegyzék másolása az eredeti alkatrészről" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy Parameters" msgstr "Paraméterek másolása" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy parameter data from original part" msgstr "Paraméterek másolása az eredeti alkatrészről" -#: part/serializers.py:327 +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "Megjegyzések másolása" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "Megjegyzések másolása az eredeti alkatrészről" + +#: part/serializers.py:414 msgid "Initial Stock Quantity" msgstr "Kezdeti készlet mennyiség" -#: part/serializers.py:327 +#: part/serializers.py:414 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "Add meg a kezdeti készlet mennyiséget. Ha nulla akkor nem lesz készlet létrehozva." -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Initial Stock Location" msgstr "Kezdeti készlet hely" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Specify initial stock location for this Part" msgstr "Add meg a kezdeti készlet helyét" -#: part/serializers.py:343 +#: part/serializers.py:430 msgid "Select supplier (or leave blank to skip)" msgstr "Válassz beszállítót (hagyd üresen ha nem kell létrehozni)" -#: part/serializers.py:354 +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "Válassz gyártót (hagyd üresen ha nem kell létrehozni)" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "Gyártói cikkszám" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "A kiválasztott cég nem érvényes beszállító" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "A kiválasztott cég nem érvényes gyártó" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "Van már ilyen gyártói alkatrész" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "Van már ilyen beszállítói alkatrész" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "Alkatrész másolása" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "Kezdeti adatok másolása egy másik alkatrészről" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Kezdeti készlet" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "Kezdeti készlet mennyiség létrehozása" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "Beszállító információ" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "Kezdeti beszállító adatok hozzáadása" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "Kategória paraméterek másolása" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "Paraméter sablonok másolása a kiválasztott alkatrész kategóriából" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "Leltár riport korlátozása bizonyos alkatrészre és variánsra" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "Leltár riport korlátozása bizonyos alkatrész kategóriára és az alatta lévőkre" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "Leltár riport korlátozása bizonyos készlethelyre és az alatta lévőkre" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "Külső készlet nélkül" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "Külső helyeken lévő készlet nélkül" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "Riport létrehozása" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "Riport fájl létrehozása a számított leltár adatokkal" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "Alaktrészek frissítése" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "Megadott alkatrészek frissítése a számított leltár adatokkal" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "Leltár funkció nincs engedélyezve" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "Frissítés" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "Alkatrész árak frissítése" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "Válassz alkatrészt ahonnan az alkatrészjegyzéket másoljuk" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "Létező adat törlése" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "Meglévő alkatrészjegyzék tételek törlése a másolás előtt" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "Örököltekkel együtt" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "Sablon alkatrészektől örökölt alkatrészjegyzék tételek használata" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "Hibás sorok kihagyása" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "Engedély a hibás sorok kihagyására" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "Helyettesítő alkatrészek másolása" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "Helyettesítő alkatrészek másolása az alkatrészjegyzék tételek másolásakor" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "Meglévő alkatrészjegyzék törlése" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "Meglévő alkatrészjegyzék tételek törlése a feltöltés előtt" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "Nincs megadva alkatrész oszlop" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "Több egyező alkatrész is található" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "Nincs egyező alkatrész" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "Az alkatrész nem lett összetevőként jelölve" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "Mennyiség nincs megadva" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "Érvénytelen mennyiség" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "Legalább egy alkatrészjegyzék tétel szükséges" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "Alacsony készlet értesítés" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "A {part.name} alkatrész rendelkezésre álló készlete a megadott minimum alá csökkent" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "Teljes mennyiség" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "Teljes költség min" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "Teljes költség max" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "Leltár riport rendelkezésre áll" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "Egy új leltár riport készen áll a letöltésre" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "Alacsony készlet értesítés" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "A {part.name} alkatrész rendelkezésre álló készlete a megadott minimum alá csökkent" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "Nincs jogosultságod az alkatrészjegyzék szerkesztéséhez." @@ -6462,90 +6606,70 @@ msgstr "A %(part)s alkatrészhez tartozó alkatrészjegyzéket utoljár msgid "The BOM for %(part)s has not been validated." msgstr "A %(part)s alkatrészhez tartozó alkatrészjegyzék még nincs jóváhagyva." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "Alkatrészjegyzék műveletek" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "Tételek törlése" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "Alkatrész kategória leltározása" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "Értesítések beállítva erre a kategóriára" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "Értesítések kérése erre a kategóriára" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "Kategória műveletek" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "Kategória szerkesztése" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "Kategória szerkesztése" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "Kategória törlése" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "Kategória törlése" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "Legfelső szintű alkatrész kategória" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Alkategóriák" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "Alkatrészek száma (alkategóriákkal együtt)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "Alkatrész létrehozása" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "Új alkatrész" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "Opciók" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "Kategória beállítása" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "Kategória beállítása" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "Alkatrész paraméterek" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "Alkatrész kategória létrehozása" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "Új kategória" @@ -6582,7 +6706,7 @@ msgid "Refresh scheduling data" msgstr "Ütemezési adatok frissítése" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "Frissítés" @@ -6591,9 +6715,9 @@ msgid "Add stocktake information" msgstr "Leltár információ hozzáadása" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "Leltár" @@ -6605,101 +6729,101 @@ msgstr "Alkatrész teszt sablonok" msgid "Add Test Template" msgstr "Teszt sablon hozzáadása" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "Vevői rendeléshez foglalások" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "Alkatrész megjegyzések" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "Alkatrész változatok" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "Új változat létrehozása" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "Új változat" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "Paraméter hozzáadása" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "Kapcsolódó alkatrészek" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "Kapcsolódó hozzáadása" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "Alkatrészjegyzék" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "Exportálási műveletek" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "Alkatrészjegyzék exportálása" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "Alkatrészjegyzék riport nyomtatása" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "Alkatrészjegyzék műveletek" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "Alkatrészjegyzék feltöltése" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "Alkatrészjegyzék jóváhagyása" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "Alkatrészjegyzék tétel hozzáadása" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "Gyártmányok" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "Alkatrész gyártások" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "Gyártáshoz foglalások" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "Alkatrész beszállítók" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "Alkatrész gyártók" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "Gyártói alkatrészek törlése" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "Kapcsolódó alkatrész" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "Kapcsolódó alkatrész hozzáadása" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "Teszt eredmény sablon hozzáadása" @@ -6733,13 +6857,13 @@ msgid "Download Part Import Template" msgstr "Alkatrész import sablon letöltése" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: 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 "Formátum" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "Fájlfomátum kiválasztása" @@ -6748,158 +6872,158 @@ msgstr "Fájlfomátum kiválasztása" msgid "Part List" msgstr "Alkatrész lista" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "Értesítések beállítva erre az alkatrészre" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "Értesítések kérése erre az alkatrészre" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "Címke nyomtatása" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "Árinformációk megjelenítése" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "Készlet műveletek" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "Készlet számolása" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "Készlet áthelyezése" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "Készlet műveletek" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "Alkatrész másolása" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "Alkatrész szerkesztése" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "Alkatrész törlése" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "Sablon alkatrész (változatok létrehozhatók belőle)" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "Ez az alkatrész gyártható másik alkatrészekből" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "Használható más alkatrészek gyártásához" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "Készlet sorozatszám alapján követendő" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "Beszállítótól rendelhető" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "Vevő által rendelhető, eladható" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "Az alkatrész nem aktív" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "Inaktív" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "Virtuális (nem kézzelfogható alkatrész)" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "Alkatrész részletei" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "Gyártáshoz lefoglalva" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "Vevő rendeléshez lefoglalva" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "Gyártható" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "Minimális készlet" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "Ártartomány" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "Legutolsó sorozatszám" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "Sorozatszámra keresés" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "Alkatrész QR kódja" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "Vonalkód hozzárendelése az alkatrészhez" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "alkatrész" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "Számítás" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "Alkatrészhez rendelt kép eltávolítása" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "Nincs egyező kép" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "Részletek elrejtése" @@ -6956,15 +7080,15 @@ msgstr "Változatok" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "Készlet" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "Árazás" @@ -6988,11 +7112,11 @@ msgstr "Ár áttekintés" msgid "Refresh Part Pricing" msgstr "Árazás frissítése" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "Utoljára módosítva" @@ -7055,12 +7179,12 @@ msgstr "Eladási ár" msgid "Add Sell Price Break" msgstr "Eladási ársáv hozzáadása" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "Nincs készlet" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "Alacsony készlet" @@ -7109,37 +7233,36 @@ msgstr "Alkatrész változat létrehozása" msgid "Create a new variant part from this template" msgstr "Új alkatrészváltozat létrehozása ebből a sablonból" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "Ismeretlen adatbázis" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" -msgstr "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" +msgstr "" #: part/views.py:110 msgid "Match References" msgstr "Azonosítók egyeztetése" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" -msgstr "A(z) {name} alkatrész nem importálható, nincs kategória hozzárendelve" +msgid "Can't import part {new_part.name} because there is no category assigned" +msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "Válassz képet az alkatrészhez" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "Alkatrész képe frissítve" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "Az alkatrész képe nem található" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "Alkatrész árak" @@ -7151,20 +7274,21 @@ msgstr "Nincs megadva művelet" msgid "No matching action found" msgstr "Nincs egyező művelet" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "Hiányzó vonalkód adat" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "Nincs egyező vonalkód" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "Egyezés vonalkódra" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "Ez a vonalkód már egy másik tételé" @@ -7172,7 +7296,53 @@ msgstr "Ez a vonalkód már egy másik tételé" msgid "No match found for provided value" msgstr "Nincs találat a megadott értékre" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "Címkenyomtatás sikertelen" @@ -7186,6 +7356,11 @@ msgstr "Alapvető vonalkód támogatást ad" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "InvenTree fejlesztők" @@ -7195,7 +7370,7 @@ msgstr "InvenTree értesítések" #: plugin/builtin/integration/core_notifications.py:35 msgid "Integrated outgoing notification methods" -msgstr "" +msgstr "Integrált kimenő értesítési módszerek" #: plugin/builtin/integration/core_notifications.py:40 #: plugin/builtin/integration/core_notifications.py:81 @@ -7223,242 +7398,409 @@ msgstr "Slack bejövő webhook URL" msgid "URL that is used to send messages to a slack channel" msgstr "URL az üzenetek küldéséhez egy a slack channel-re" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "Link megnyitása" -#: plugin/models.py:27 +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "InvenTree PDF címkenyomtató" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "PDF címkék nyomtatásához beépített támogatás" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "Debug mód" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "Debug mód engedélyezése - nyers HTML-t ad vissza PDF helyett" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" +msgstr "" + +#: plugin/models.py:28 msgid "Plugin Configuration" msgstr "Plugin beállítás" -#: plugin/models.py:28 +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "Plugin beállítások" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "Kulcs" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "Plugin kulcsa" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "PluginNeve a pluginnak" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "Aktív-e a plugin" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "Beépítve" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "Példa plugin" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "Beépített plugin" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "Plugin" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "Módszer" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "Nincs szerző" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "A '{p}' plugin nem kompatibilis az aktuális applikáció verzióval {v}" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "A pluginhoz minimum {v} verzió kell" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "A pluginhoz maximum {v} verzió kell" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "Beszerzési rendelések engedélyezése" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "Beszerzési rendelések funkcióinak engedélyezése az InvenTree felületén" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "API kulcs" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "Kulcs szükséges a külső API eléréséhez" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "Numerikus" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "Egy numerikus beállítás" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "Választás beállításai" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "Egy beállítás több választási lehetőséggel" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "Forrás URL" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Csomag forrása - ez lehet egy registry vagy VCS útvonal" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "Csomag neve" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Plugin csomag neve - verzió megjelölést is tartalmazhat" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "Bővítmény telepítésének megerősítése" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Ez telepíti ezt a plugint az aktuális példányra. A példány karbantartási módba megy." -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "Tlepítés nincs megerősítve" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "Vagy csomag nevet vagy URL-t meg kell adni" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" -msgstr "" +msgstr "Plugin aktiválása" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" -msgstr "" +msgstr "Plugin bekapcsolása" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "Nincs érvényes objektum megadva a sablonhoz" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "A '{template}' sablon fájl hiányzik vagy nem érhető el" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "Teszt riport" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "Sablon neve" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "Riport sablon fájl" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "Riport sablon leírása" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "Riport verziószáma (automatikusan nő)" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "Minta a riport fájlnevek előállításához" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "Riport sablon engedélyezve" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Készlet lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "Beépített tesztekkel együtt" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "Gyártmányba beépített készlet tételek teszt eredményeivel együtt" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "Gyártás szűrők" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Gyártás lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "Alkatrész szűrők" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Alkatrész lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "Megrendelés lekérdezés szűrők" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "Vevő rendelés lekérdezés szűrők" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" -msgstr "Visszavételi utasítás lekérdezés szűrők" +msgstr "Visszavétel lekérdezés szűrők" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "Részlet" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "Riport részlet fájl" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "Részlet fájl leírása" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "Eszköz" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "Riport asset fájl" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "Asset fájl leírása" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "készlethely lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "Szükséges alapanyagok" @@ -7475,9 +7817,9 @@ msgstr "Beszállító törölve lett" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "Egységár" @@ -7489,26 +7831,30 @@ msgstr "Egyéb tételek" #: report/templates/report/inventree_po_report_base.html:72 #: report/templates/report/inventree_so_report_base.html:72 -#: templates/js/translated/purchase_order.js:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 msgid "Total" msgstr "Összesen" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Sorozatszám" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "Készlethely tételek" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "Készlet tétel teszt riport" @@ -7518,12 +7864,12 @@ msgid "Test Results" msgstr "Teszt eredmények" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "Teszt" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "Eredmény" @@ -7549,485 +7895,539 @@ msgid "Installed Items" msgstr "Beépített tételek" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Sorozatszám" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "Hely ID" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "Hely neve" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Hely elérési út" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "Készlet tétel ID" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "Státuszkód" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "Beszállítói cikkszám" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "Beszállító ID" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "Beszállító neve" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "Vevő ID" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Beépítve ebbe" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "Gyártás ID" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "Vevői rendelés ID" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "Vevői rendelés azonosító" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "Felülvizsgálat szükséges" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "Törlés ha kimerül" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "Lejárati dátum" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "Külső hely" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "Mennyiség megadása kötelező" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "Egy érvényes alkatrészt meg kell adni" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "A megadott beszállítói alkatrész nem létezik" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" -msgstr "" +msgstr "A beszállítói alkatrészhez van megadva csomagolási mennyiség, de a use_pack_size flag nincs beállítva" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Sorozatszámot nem lehet megadni nem követésre kötelezett alkatrész esetén" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Készlet hely" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "Készlethelyek" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Tulajdonos" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "Tulajdonos kiválasztása" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "A szerkezeti raktári helyekre nem lehet direktben raktározni, csak az al-helyekre." -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Külső" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "Ez egy külső készlethely" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "Nem lehet ezt a raktári helyet szerkezetivé tenni, mert már vannak itt tételek!" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "A szerkezeti raktári helyre nem lehet készletet felvenni!" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "Virtuális alkatrészből nem lehet készletet létrehozni" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" -msgstr "A alkatrész típus ('{pf}') {pe} kell legyen" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "Mennyiség 1 kell legyen a sorozatszámmal rendelkező tételnél" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Nem lehet sorozatszámot megadni ha a mennyiség több mint egy" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "A tétel nem tartozhat saját magához" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "A tételnek kell legyen gyártási azonosítója ha az is_bulding igaz" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "Gyártási azonosító nem ugyanarra az alkatrész objektumra mutat" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "Szülő készlet tétel" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "Kiindulási alkatrész" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "Válassz egy egyező beszállítói alkatrészt ehhez a készlet tételhez" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "Hol található ez az alkatrész?" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "A csomagolása ennek a készlet tételnek itt van tárolva" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "Ez a tétel be van építve egy másik tételbe?" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "Sorozatszám ehhez a tételhez" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "Batch kód ehhez a készlet tételhez" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "Készlet mennyiség" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "Forrás gyártás" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "Gyártás ehhez a készlet tételhez" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" -msgstr "Elhasználva ebbe" +msgstr "Felhasználva ebben" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" -msgstr "" +msgstr "Felhasználva ebben a gyártásban" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "Forrás beszerzési rendelés" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "Beszerzés ehhez a készlet tételhez" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "Cél vevői rendelés" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Készlet tétel lejárati dátuma. A készlet lejártnak tekinthető ezután a dátum után" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "Törlés ha kimerül" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "Készlet tétel törlése ha kimerül" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "Egy egység beszerzési ára a beszerzés időpontjában" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "Alkatrésszé alakítva" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "Az alkatrész nem követésre kötelezett" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "Mennyiség egész szám kell legyen" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" -msgstr "A mennyiség nem lépheti túl a készletet ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "A sorozatszám egész számok listája kell legyen" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "A mennyiség nem egyezik a megadott sorozatszámok számával" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "A sorozatszámok már léteznek" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "Készlet tétel beépül egy másikba" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "A készlet tétel más tételeket tartalmaz" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "Készlet tétel hozzárendelve egy vevőhöz" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "Készlet tétel gyártás alatt" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "Követésre kötelezett készlet nem vonható össze" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "Duplikált készlet tételek vannak" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "A készlet tétel ugyanarra az alkatrészre kell vonatkozzon" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "A készlet tétel ugyanarra a beszállítói alkatrészre kell vonatkozzon" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "Készlet tételek állapotainak egyeznie kell" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "Készlet tétel nem mozgatható mivel nincs készleten" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "Bejegyzés megjegyzései" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "Ehhez a teszthez meg kell adni értéket" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "Ehhez a teszthez fel kell tölteni mellékletet" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "Teszt neve" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "Teszt eredménye" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "Teszt kimeneti értéke" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "Teszt eredmény melléklet" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "Tesztek megjegyzései" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "Szériaszám túl nagy" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" -msgstr "" +msgstr "Csomagolási mennyiség használata: a megadott mennyiség ennyi csomag" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" -msgstr "" +msgstr "Készlet tétel beszerzési ára, per darab vagy csomag" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "Add meg hány készlet tételt lássunk el sorozatszámmal" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "A mennyiség nem lépheti túl a rendelkezésre álló készletet ({q})" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "Írd be a sorozatszámokat az új tételekhez" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "Cél készlet hely" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "Opcionális megjegyzés mező" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "Sorozatszámokat nem lehet hozzárendelni ehhez az alkatrészhez" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "Válaszd ki a beépítésre szánt készlet tételt" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" -msgstr "Készlet tétel nem elérhető" +#: stock/serializers.py:496 +msgid "Quantity to Install" +msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" -msgstr "A kiválasztott alkatrész nincs az alkatrészjegyzékben" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" +msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "Cél hely a kiszedett tételeknek" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "Tranzakció megjegyzés hozzáadása (opcionális)" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "Készlet tétel nem elérhető" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "A kiválasztott alkatrész nincs az alkatrészjegyzékben" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "Cél hely a kiszedett tételeknek" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "Válassz alkatrészt amire konvertáljuk a készletet" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "A kiválasztott alkatrész nem megfelelő a konverzióhoz" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "Készlet tétel hozzárendelt beszállítói alkatrésszel nem konvertálható" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "Cél hely a visszatérő tételeknek" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "Válaszd ki a státuszváltásra szánt készlet tételeket" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "Nincs készlet tétel kiválasztva" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "Az alkatrésznek értékesíthetőnek kell lennie" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "A tétel egy vevő rendeléshez foglalt" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "A tétel egy gyártási utasításhoz foglalt" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "Vevő akihez rendeljük a készlet tételeket" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "A kiválasztott cég nem egy vevő" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "Készlet hozzárendelés megjegyzései" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "A készlet tételek listáját meg kell adni" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "Készlet összevonás megjegyzései" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "Nem egyező beszállítók megengedése" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "Különböző beszállítói alkatrészekből származó készletek összevonásának engedélyezése" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "Nem egyező állapotok megjelenítése" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "Különböző állapotú készletek összevonásának engedélyezése" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "Legalább két készlet tételt meg kell adni" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "Készlet tétel elsődleges kulcs értéke" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "Készlet tétel státusz kódja" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "Készlet tranzakció megjegyzései" @@ -8035,263 +8435,271 @@ msgstr "Készlet tranzakció megjegyzései" msgid "Stock Tracking Information" msgstr "Készlettörténeti információk" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "Al-készlet tételek" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "Ez a készlet tétel nem tartalmaz egy altételt sem" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "Teszt adatok" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "Teszt riport" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "Teszt adatok törlése" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "Teszt adatok hozzáadása" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "Készlet tétel megjegyzések" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "Beépített készlet tételek" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "Készlet tétel beépítése" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "Készlet tétel összes teszt eredményének törlése" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "Teszt eredmény hozzáadása" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "Készlet tétel keresése" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "Áthelyezés kódolvasással" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "Nyomtatási műveletek" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "Készlet módosítási műveletek" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "Leltározás" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "Készlet növelése" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "Készlet csökkentése" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "Sorozatszámok előállítása" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "Készlet áthelyezése" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "Vevőhöz rendelése" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "Visszavétel készletre" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "Készlet tétel kiszedése" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "Kiszedés" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "Készlet tétel beépítése" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "Beépítés" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "Változattá alakítás" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "Készlet tétel másolása" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "Készlet tétel szerkesztése" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "Készlet tétel törlése" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Gyártás" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "Szülő tétel" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "Nincs beállítva gyártó" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "Úgytűnik nem vagy ennek a tételnek a tulajdonosa. Ezt így nem tudod módosítani." -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "Csak olvasható" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "Ez a készlet tétel nem elérhető" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "Ez a készlet tétel éppen gyártás alatt van és itt még nem szerkeszthető." -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "A tétel szerkesztése most csak a gyártási nézetből lehetséges." -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "Foglalva ehhez a vevői rendeléshez" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "Foglalva ehhez a gyártási utasításhoz" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "Ez a készlet tétel egyedi követésre kötelezett. Egyedi sorozatszámmal rendelkezik így a mennyiség nem módosítható" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "előző oldal" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "Menj az előző sorozatszámhoz" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "követkető oldal" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "Menj a következő sorozatszámhoz" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "Elérhető mennyiség" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "Nincs beállítva hely" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "Tesztek" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "Ez a készlet tétel nem felelt meg az összes szükséges teszten" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "Ez a készlet tétel lejárt %(item.expiry_date)s-n" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "Lejárt" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "Ez a készlet tétel lejár %(item.expiry_date)s-n" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Állott" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "Még nem volt leltározva" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "készlet tétel" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "Készlet állapot szerkesztése" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "Készlet tétel QR kódja" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "Vonalkód hozzárendelése a készlet tételhez" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "Válassz a lenti alkatrész változatok közül" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "Figyelem" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "Ez a művelet nem vonható vissza könnyen" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "Készlet tétel konvertálása" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "Visszavétel készletre" @@ -8303,82 +8711,86 @@ msgstr "Sorszámozott készletek létrehozása ebből a készlet tételből." msgid "Select quantity to serialize, and unique serial numbers." msgstr "Válassz mennyiséget és egyedi sorozatszámokat a sorozatszámozáshoz." -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "Készlethely leltározása" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "Készlet hely keresése" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "Készlet bevételezése erre a helyre" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "Készlet vonalkódok beolvasása" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "Készlet tároló bevételezése erre a helyre" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "Tároló vonalkód beolvasása" -#: stock/templates/stock/location.html:102 +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "Készlethely riport nyomtatása" + +#: stock/templates/stock/location.html:104 msgid "Location actions" msgstr "Hely műveletek" -#: stock/templates/stock/location.html:104 +#: stock/templates/stock/location.html:106 msgid "Edit location" msgstr "Hely szerkesztése" -#: stock/templates/stock/location.html:106 +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "Hely törlése" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "Legfelső szintű készlet hely" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "Hely tulajdonosa" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "Úgytűnik nem vagy ennek a készlethelynek a tulajdonosa. Ezt így nem tudod módosítani." -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Alhelyek" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "Új készlet hely létrehozása" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "Új hely" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "készlet hely" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "Készlet tároló bevételezve erre a helyre" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "Készlet hely QR kódja" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "Vonalkód hozzárendelése a készlet helyhez" @@ -8415,7 +8827,7 @@ msgid "You have been logged out from InvenTree." msgstr "Kijelentkeztél az InvenTreeből." #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "Bejelentkezés" @@ -8452,71 +8864,71 @@ msgstr "Az oldal jelenleg karbantartás alatt van, hamarosan újra használható msgid "Index" msgstr "Index" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "Értesítésre beállított alkatrészek" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "Értesítésre beállított kategóriák" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "Legújabb alkatrészek" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "Jóváhagyásra váró alkatrészjegyzék" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "Nemrég frissítve" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "Kimerült készlet" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "Gyártáshoz szükséges" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "Lejárt készlet" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "Állott készlet" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "Folyamatban lévő gyártások" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "Késésben lévő gyártások" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "Kintlévő beszerzési rendelések" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "Késésben lévő beszerzések" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "Függő vevői rendelések" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "Késésben lévő vevői rendelések" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "InvenTree hírek" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "Jelenlegi hírek" @@ -8542,7 +8954,7 @@ msgstr "Mind megjelölése olvasottként" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "Értesítések" @@ -8559,7 +8971,7 @@ msgid "Delete all read notifications" msgstr "Olvasott értesítések törlése" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "Értesítés törlése" @@ -8614,7 +9026,7 @@ msgid "Single Sign On" msgstr "Single Sign On (SSO)" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "Beállítások" @@ -8652,7 +9064,7 @@ msgstr "Alkatrész importálás" msgid "Import Part" msgstr "Alkatrész importálása" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "Alkatrész paraméter sablonok" @@ -8660,12 +9072,21 @@ msgstr "Alkatrész paraméter sablonok" msgid "Stocktake Settings" msgstr "Leltár beállítások" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "Leltár riportok" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "Fizikai mértékegység" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "Mértékegység hozzáadása" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "Plugin beállítások" @@ -8673,30 +9094,30 @@ msgstr "Plugin beállítások" msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." msgstr "Az alábbi beállítások módosításához a kiszolgáló azonnali újraindítása szükséges. Aktív használat közben ne változtass ezeken." -#: templates/InvenTree/settings/plugin.html:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "Pluginok" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "Plugin Telepítése" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "Külső pluginok nincsenek engedélyezve" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "Plugin hibatároló" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "Szakasz" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "Üzenet" @@ -8705,7 +9126,7 @@ msgid "Plugin information" msgstr "Plugin információ" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "Verzió" @@ -8742,7 +9163,8 @@ msgid "Installation path" msgstr "Telepítési útvonal" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "Beépített" @@ -8750,32 +9172,34 @@ msgstr "Beépített" msgid "This is a builtin plugin which cannot be disabled" msgstr "Ez egy beépített plugin amit nem lehet letiltani" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "Minta" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "Commit szerzője" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "Commit dátuma" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "Commit hash" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "Commit üzenet" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "Aláírás státusza" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "Aláíró kulcs" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "Beszerzési rendelés beállításai" @@ -8811,7 +9235,7 @@ msgid "Project Codes" msgstr "Projektszámok" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "Új projektszám" @@ -8822,13 +9246,13 @@ msgstr "Riport beállítások" #: templates/InvenTree/settings/returns.html:7 msgid "Return Order Settings" -msgstr "Visszavételi utasítás bellításai" +msgstr "Visszavétel bellításai" #: templates/InvenTree/settings/setting.html:31 msgid "No value set" msgstr "Nincsenek értékek" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "Beállítások módosítása" @@ -8852,50 +9276,103 @@ msgstr "Felhasználói beállítások szerkesztése" msgid "Rate" msgstr "Arány" -#: templates/InvenTree/settings/settings_staff_js.html:64 +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "Szerkesztés" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Törlés" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "Egyedi mértékegység szerkesztése" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "Egyedi mértékegység törlése" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "Új egyedi mértékegység" + +#: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" msgstr "Nem találhatók projektszámok" -#: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 msgid "Edit Project Code" msgstr "Projektszám szerkesztése" -#: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "Projektszám törlése" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "Nincs kategória paraméter sablon" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "Sablon szerkesztése" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "Sablon törlése" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "Kategória paraméter sablon szerkesztése" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "Kategória paraméter sablon törlése" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "Kategória paraméter sablon létrehozása" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "Alkatrész paraméter sablon létrehozása" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8914,14 +9391,14 @@ msgid "Home Page" msgstr "Főoldal" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "Keresés" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "Riportolás" @@ -8933,11 +9410,11 @@ msgstr "Általános beállítások" msgid "Server" msgstr "Kiszolgáló" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "Címkék" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "Kategóriák" @@ -8949,6 +9426,10 @@ msgstr "Vevő rendelés beállításai" msgid "Stock Settings" msgstr "Készlet beállítások" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "Fiókbeállítások" @@ -8959,13 +9440,6 @@ msgstr "Fiókbeállítások" msgid "Change Password" msgstr "Jelszó módosítása" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "Szerkesztés" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "Felhasználónév" @@ -8991,6 +9465,7 @@ msgid "Unverified" msgstr "Nem ellenőrzött" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "Elsődleges" @@ -9139,7 +9614,7 @@ msgstr "Néhány nyelv nem teljes" #: templates/InvenTree/settings/user_display.html:97 msgid "Show only sufficient" -msgstr "" +msgstr "Csak a szükséges megjelenítése" #: templates/InvenTree/settings/user_display.html:99 msgid "and hidden." @@ -9155,7 +9630,7 @@ msgstr "Segítsd a fordítási munkát!" #: templates/InvenTree/settings/user_display.html:107 msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." -msgstr "A nyelvi fordításai a web alkalmazásnak közösségiek a crowdin-en. A közreműködéseket szívesen fogadjuk és bátorítjuk." +msgstr "A web alkalmazás fordítása közösségi munkában zajlik a crowdin-en. Szívesen fogadjuk és bátorítjuk a közreműködést." #: templates/InvenTree/settings/user_display.html:108 msgid "InvenTree Translation Project" @@ -9171,7 +9646,7 @@ msgstr "Keresési beállítások" #: templates/InvenTree/settings/user_sso.html:9 msgid "Single Sign On Accounts" -msgstr "" +msgstr "SSO fiókok" #: templates/InvenTree/settings/user_sso.html:16 msgid "You can sign in to your account using any of the following third party accounts:" @@ -9187,7 +9662,7 @@ msgstr "SSO fiók Hozzáadása" #: templates/InvenTree/settings/user_sso.html:67 msgid "Single Sign On is not enabled for this server" -msgstr "" +msgstr "SSO nincs engedélyezve ezen a szerveren" #: templates/about.html:9 msgid "InvenTree Version" @@ -9205,44 +9680,48 @@ msgstr "Naprakész" msgid "Update Available" msgstr "Frissítés elérhető" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "Commit branch" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "Inventree dokumentáció" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "API verzió" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "Python verzió" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "Django verzió" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "Megtekintés a GitHubon" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "Közreműködők" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "Mobil alkalmazás" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "Hibabejelentés küldése" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "vágólapra másolás" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "verzió információk másolása" @@ -9260,7 +9739,7 @@ msgstr "Email cím megerősítése" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "Erősítsd meg hogy a %(email)s email a %(user_display)s felhasználó email címe." -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Megerősítés" @@ -9436,30 +9915,30 @@ msgstr "Link hozzáadása" msgid "Add Attachment" msgstr "Melléklet hozzáadása" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "Kiválasztott mellékletek törlése" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "Mellékletek törlése" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "Vonalkód azonosító" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "Kiszolgáló újraindítása szükséges" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "Egy olyan konfigurációs opció megváltozott ami a kiszolgáló újraindítását igényli" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "Vedd fel a kapcsolatot a rendszergazdával további információkért" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9488,7 +9967,7 @@ msgid "The following parts are low on required stock" msgstr "A következő alkatrészek szükséges készlete alacsony" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "Szükséges mennyiség" @@ -9502,15 +9981,15 @@ msgid "Click on the following link to view this part" msgstr "Klikk a következő linkre az alkatrész megjelenítéséhez" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "Minimum mennyiség" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "Nincs válasz" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "Nincs válasz az InvenTree kiszolgálótól" @@ -9522,27 +10001,27 @@ msgstr "Error 400: Rossz kérelem" msgid "API request returned error code 400" msgstr "Az API kérelem 400-as hibakódot adott vissza" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "Error 401: Nincs hitelesítve" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "Hitelesítési adatok nem lettek megadva" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "Error 403: Hozzáférés megtagadva" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "Nincs meg a szükséges jogosultságod, hogy elérd ezt a funkciót" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "Error 404: Erőforrás nem található" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "A kért erőforrás nem található a kiszolgálón" @@ -9554,19 +10033,27 @@ msgstr "Error 405: Metódus nincs engedélyezve" msgid "HTTP method not allowed at URL" msgstr "HTTP metódus nincs engedélyezve ezen az URL-n" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "Error 408: Időtúllépés" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "Időtúllépés a kiszolgálótól való adatlekérés közben" #: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 msgid "Unhandled Error Code" msgstr "Nem kezelt hibakód" -#: templates/js/translated/api.js:262 +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "Hiba kód" @@ -9574,23 +10061,35 @@ msgstr "Hiba kód" msgid "All selected attachments will be deleted" msgstr "Az összes kijelölt melléklet törlésre kerül" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "Mellékletek törlése" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "Mellékletek törlése" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "Mellékletek műveletei" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "Nem találhatók mellékletek" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "Melléklet szerkesztése" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "Feltöltés dátuma" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "Melléklet szerkesztése" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "Melléklet törlése" @@ -9623,7 +10122,7 @@ msgid "Unknown response from server" msgstr "Ismeretlen válasz a kiszolgálótól" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "Érvénytelen válasz a szervertől" @@ -9647,7 +10146,7 @@ msgstr "Ez törli a vonalkód hozzárendelést" msgid "Unlink" msgstr "Leválasztás" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "Készlet tétel törlése" @@ -9705,743 +10204,839 @@ msgstr "Készlet áthelyezése a leolvasott helyre" msgid "Barcode does not match a valid location" msgstr "A vonalkód nem egyezik egy ismert hellyel sem" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "Alkatrészjegyzék tétel létrehozása" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "Sor adatok mutatása" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "Sor adat" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "Bezárás" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "Alkarészjegyzék sablon letöltése" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "Többszintű alkatrészjegyzék" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "Alszerelvények alkatrészlistáinak felhasználása" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "Szintek" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "Válaszd ki a maximum alkatrészjegyzék szintet amit exportáljunk (0=összes szintet)" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "Alternatív alkatrészekkel együtt" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "Alternatív alkatrészek megjelenítése az exportált alkatrészjegyzékben" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "Paraméter adattal együtt" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "Alkatrész paraméter adatok megjelenítése az exportált alkatrészjegyzékben" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "Készlet adatokkal együtt" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "Készlet adatok megjelenítése az exportált alkatrészjegyzékben" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "Gyártói adatokkal együtt" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "Gyártói adatok megjelenítése az exportált alkatrészjegyzékben" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "Beszállítói adatokkal együtt" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "Beszállítói adatok megjelenítése az exportált alkatrészjegyzékben" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "Ár adatokkal együtt" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "Ár adatok megjelenítése az exportált alkatrészjegyzékben" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "Helyettesítő alkatrész törlése" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "Válassz és adj hozzá új helyettesítő alkatrészt a lenti mezőben" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "Biztosan törölni akarod ezt a helyettesítő alkatrész hozzárendelést?" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "Helyettesítő alkatrész törlése" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "Helyettesítő hozzáadása" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "Alkatrészjegyzék tétel helyettesítők szerkesztése" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "Az összes kijelölt alkatrészjegyzék tétel törlésre kerül" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "Töröljük a kiválasztott alkatrészjegyzék tételeket?" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "Tételek törlése" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "Alkatrészjegyzék betöltése az al-gyártmányhoz" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "Vannak helyettesítők" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "Készletváltozatok engedélyezve" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "Helyettesítõk" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "Alkatrészjegyzék árazása teljes" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "Alkatrészjegyzék árazása nem teljes" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "Nincsenek árak" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "Nincs szabad" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "Változatokkal és helyettesítőkkel együtt" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "Változatokkal együtt" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "Helyettesítőkkel együtt" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "Fogyóeszköz tétel" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "Alkatrészjegyzék tétel jóváhagyása" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "Ez a sor jóvá lett hagyva" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "Helyettesítő alkatrészek szerkesztése" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "Alkatrészjegyzék tétel szerkesztése" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "Alkatrészjegyzék tétel törlése" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "Alkatrészjegyzék megtekintése" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "Nem találhatók alkatrészjegyzék tételek" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "Szükséges alkatrész" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "Örökölve a szülő alkatrészjegyzéktől" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "Gyártási utasítás szerkesztése" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "Gyártási utasítás létrehozása" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "Gyártási utasítás törlése" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "Biztosan meg szeretnéd szakítani ezt a gyártást?" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "Ehhez a gyártáshoz készlet lett hozzárendelve" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "Ennek a gyártásnak befejezetlen kimenetei vannak" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "Gyártási utasítás készen áll a befejezésre" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "A rendelés nem jelölhető késznek mivel függő kimenetek vannak" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "Gyártási utasítás befejezetlen" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "Gyártási utasítás befejezése" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "Következő szabad sorozatszám" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "Legutolsó sorozatszám" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "Az alkatrészjegyzék követésre kötelezett alkatrészeket tartalmaz" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "A gyártási kimeneteket egyesével kell előállítani" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "A követésre kötelezett alkatrészekhez sorozatszámot lehet rendelni" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "Adj meg sorozatszámokat a több egyedi gyártási kimenet létrehozásához" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "Gyártási kimenet létrehozása" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "Készlet tételek foglalása ehhez a gyártási kimenethez" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "Készlet felszabadítása a gyártási kimenetből" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "Gyártási kimenet befejezése" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "Gyártási kimenet selejtezése" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "Gyártási kimenet törlése" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "Biztosan szeretnéd a már lefoglalt készlet tételeket felszabadítani ebből a gyártási utasításból?" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "Készlet tételek felszabadítása" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "Gyártási kimenetek kiválasztása" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "Legalább egy gyártási kimenetet ki kell választani" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" -msgstr "" +msgstr "A kiválasztott gyártási kimenetek késznek lesznek jelölve" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "Kimenet" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "Gyártási kimenetek befejezése" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" -msgstr "" +msgstr "A kiválasztott gyártási kimenetek selejtnek lesznek jelölve" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" -msgstr "" +msgstr "Selejtezett kimenetek elutasítottnak jelölve" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" -msgstr "" +msgstr "A lefoglalt készlet már nem lesz elérhető" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" -msgstr "" +msgstr "A befejezési státusza a gyártásnak nem fog változni" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "Gyártási kimenetek selejtezése" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" -msgstr "" +msgstr "A kiválasztott gyártási kimenetek törölve lesznek" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" -msgstr "" +msgstr "A gyártási kimenet adatai véglegesen törölve lesznek" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" -msgstr "" +msgstr "A lefoglalt készlet tételek újra készletre kerülnek" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "Gyártási kimenetek törlése" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "Nincs gyártási utasításhoz történő foglalás" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "Lefoglalt mennyiség" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "Hely nincs megadva" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "Befejezett kimenetek" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "Kimenetek selejtezése" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "Kimenetek törlése" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "gyártás kimenet" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "gyártás kimenetek" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "Gyártási kimenet műveletei" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "Nem található aktív gyártási kimenet" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" -msgstr "Lefoglalt készlet" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" +msgstr "Lefoglalt sorok" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" -msgstr "Nincsenek követett alkatrészjegyzék tételek ehhez a gyártáshoz" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" +msgstr "Szükséges tesztek" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "Befejezett tesztek" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "Nincsenek szükséges tesztek ehhez a gyártáshoz" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "Készlet foglalások szerkesztése" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "Készlet foglalások törlése" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "Foglalás szerkesztése" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "Foglalás törlése" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "Vannak helyettesítő alkatrészek" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "Szükséges/db" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "Nincs elegendő" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "Van elegendő" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "Gyártási készlet" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "Készlet rendelés" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "Lefoglalt készlet" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "Kiválasztott alkatrészek" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "Legalább egy alkatrész választása szükséges a foglaláshoz" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "Készlet foglalási mennyiség megadása" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "Minden alkatrész lefoglalva" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "Minden kiválasztott alkatrész teljesen lefoglalva" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "Válassz forrás helyet (vagy hagyd üresen ha bárhonnan)" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "Készlet foglalása a gyártási utasításhoz" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "Nincs egyező készlethely" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "Nincs egyező készlet" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "Automatikus készlet foglalás" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "A készlet automatikusan lefoglalásra kerül ehhez a gyártási utasításhoz, a következő feltételek szerint" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "Ha egy készlet hely meg van adva, akkor készlet csak arról a helyről lesz foglalva" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "Ha a készlet helyettesíthetőnek minősül, akkor az első rendelkezésre álló helyről lesz lefoglalva" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "Ha a helyettesítő készlet engedélyezve van, akkor ott az lesz használva ha az elsődleges alkatrésznek nincs készlete" -#: templates/js/translated/build.js:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "Készlet tételek foglalása" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "Nincs a lekérdezéssel egyező gyártási utasítás" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "Kiválaszt" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "Gyártás késésben van" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "Haladás" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "Nincs felhasználói információ" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "csoport" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" -msgstr "Nincs lefoglalt alkatrész ehhez" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" +msgstr "Készlet foglalások szerkesztése" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "Készlet foglalások törlése" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "Foglalás szerkesztése" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "Foglalás törlése" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "gyártás sor" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "gyártás sorok" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "Nincsenek gyártási sorok" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "Követésre kötelezett alkatrész" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "Mennyiségi egység" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "Nincs elegendő" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "Van elegendő" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "Fogyóeszköz tétel" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "Követett tétel" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "Gyártási készlet" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "Készlet rendelés" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "Lefoglalt készlet" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "Készlet foglalások törlése" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "Gyártó hozzáadása" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "Gyártói alkatrész hozzáadása" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "Gyártói alkatrész szerkesztése" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "Beszállító hozzáadása" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "Beszállítói alkatrész hozzáadása" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "Az összes kiválasztott beszállítói alkatrész törölve lesz" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "Beszállítói alkatrészek törlése" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "Új cég hozzáadása" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "Beszállított alkatrészek" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "Gyártott alkatrészek" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "Nem található céginformáció" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "Új névjegy létrehozása" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "Névjegy szerkesztése" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "A kiválasztott névjegyek törlésre kerülnek" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "Szerepkör" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "Névjegyek törlése" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "Nem található névjegy" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "Telefonszám" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "E-mail cím" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "Névjegy törlése" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "Új cím létrehozása" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "Cím szerkesztése" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "Az összes kijelölt cím törlésre kerül" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "Címek törlése" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "Nincsenek címek" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "Város" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "Állam/Megye" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "Futár megjegyzések" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "Belső megjegyzések" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "Cím törlése" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "Az összes kijelölt gyártói alkatrész törlésre kerül" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "Gyártói alkatrészek törlése" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "Az összes kijelölt paraméter törlésre kerül" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "Paraméterek törlése" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "Alkatrész rendelés" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "Gyártói alkatrészek törlése" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "Gyártói alkatrész műveletek" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "Nincs gyártói alkatrész" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "Sablon alkatrész" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "Gyártmány alkatrész" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "Nem található paraméter" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "Paraméter szerkesztése" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "Paraméter törlése" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "Paraméter szerkesztése" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "Paraméter törlése" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "Beszállítói alkatrész törlése" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "Nincs beszállítói alkatrész" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" -msgstr "" +msgstr "Egység" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "Elérhetőség" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "Beszállítói alkatrész szerkesztése" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "Beszállítói alkatrész törlése" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "Ársáv törlése" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "Ársáv szerkesztése" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "Nincs ársáv információ" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "Utoljára módosítva" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "Ársáv szerkesztése" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "Ársáv törlése" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "igaz" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "hamis" @@ -10449,89 +11044,89 @@ msgstr "hamis" msgid "Select filter" msgstr "Szűrők kiválasztása" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "Címkék nyomtatása" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "Riportok nyomtatása" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "Táblázat letöltése" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "Táblázat frissítése" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "Új szűrő hozzáadása" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "Összes szűrő törlése" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "Szűrő létrehozása" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "Művelet tiltva" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "Létrehozás nem engedélyezett" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "Módosítás nem engedélyezett" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "Törlés nem engedélyezett" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "Megtekintés nem engedélyezett" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "Form nyitva tartása" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "Adj meg egy érvényes számot" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "Form hibák vannak" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "Nincs eredmény" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "Keresés" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "Bevitel törlése" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "Fájl oszlop" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "Mező név" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "Oszlopok kiválasztása" @@ -10545,104 +11140,124 @@ msgstr "NEM" #: templates/js/translated/helpers.js:93 msgid "True" -msgstr "" +msgstr "Igaz" #: templates/js/translated/helpers.js:94 msgid "False" -msgstr "" +msgstr "Hamis" -#: templates/js/translated/label.js:58 -msgid "Select Printer" -msgstr "Nyomtató kiválasztása" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" +msgstr "Nem szükséges alkatrész a gyártáshoz" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" -msgstr "Exportálás PDF-be" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "Lefoglalt készlet" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "kiválasztva" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "Címke sablon kiválasztása" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "Tételek kiválasztása" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "Nincs tétel kiválasztva a nyomtatáshoz" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "Nem található címke" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "Nem található címke sablon a kiválasztott tételekhez" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "kiválasztva" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "Címkék nyomtatónak elküldve" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "Mégsem" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "Küldés" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "Form megnevezése" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "Várakozás a kiszolgálóra..." -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "Hibainformációk megjelenítése" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "Elfogadás" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "Adatok betöltése" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "Rossz válasz a kiszolgálótól" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "Űrlap adat hiányzik a kiszolgálótól kapott válaszban" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "Form adat küldési hiba" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "JSON válasz hiányzó form adatok" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "Error 400: Rossz kérelem" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "A kiszolgáló 400-as hibakódot adott vissza" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "Form adat lekérése sikertelen" @@ -10651,32 +11266,32 @@ msgid "No news found" msgstr "Nem találhatók hírek" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "Azonosító" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "Életkor" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "Értesítés" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "Megjelölés olvasatlanként" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "Megjelölés olvasottként" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "Nincs olvasatlan értesítés" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "Az értesítések itt fognak megjelenni" @@ -10701,7 +11316,7 @@ msgid "Delete Line" msgstr "Sor törlése" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "Nem találhatók sortételek" @@ -10717,417 +11332,405 @@ msgstr "Sor szerkesztése" msgid "Delete line" msgstr "Sor törlése" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "Alkatrész tulajdonságok" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "Alkatrész létrehozási opciók" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "Alkatrész másolási opciók" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "Alkatrész kategória hozzáadása" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "Felsőbb szintű alkatrész kategória" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "Ikon (opcionális) - Az összes ikon felfedezése itt" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "Alkatrész kategória létrehozása" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "Új kategória létrehozása ez után" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "Alkatrész kategória létrehozva" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "Alkatrész kategória szerkesztése" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "Biztos hogy törölni szeretnéd ezt az alkatrész kategóriát?" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "Áthelyezés fentebbi kategóriába" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "Alkatrész kategória törlése" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "A kategóriában lévő alkatrészek kezelése" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "Alkategóriák kezelése" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "Alkatrész létrehozása" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "Új alkatrész létrehozása ez után" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "Alkatrész sikeresen létrehozva" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "Alkatrész szerkesztése" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "Alkatrész módosítva" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "Alkatrész változat létrehozása" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "Aktív alkatrész" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "Alkatrész nem törölhető mivel még aktív" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "Ezen alkatrész törlése nem vonható vissza" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "Ennek az alkatrésznek a teljes készlete törölve lesz" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "Ez az alkatrész minden alkatrészjegyzékből törölve lesz" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "Ehhez az alkatrészhez rendelt minden beszállítói és gyártói információ törölve lesz" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "Alkatrész törlése" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "Értesítések beállítva erre a tételre" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "Értesítések beállítva erre a tételre" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "Értesítések kérése erre a tételre" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "Értesítések letiltva erre a tételre" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "Az alkatrészjegyzék jóváhagyása minden sortételt jóvá fog hagyni" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "Alkatrészjegyzék jóváhagyása" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "Alkatrészjegyzék jóvá lett hagyva" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "Alkatrészjegyzék másolása" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "Alacsony készlet" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "Nincs szabad" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "Igény" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "Me" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "Követésre kötelezett alkatrész" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "Virtuális alkatrész" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "Értesítésre beállított alkatrész" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "Értékesíthető alkatrész" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "Új leltár riport ütemezése." -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "Amint elkészül, az új leltár riport letölthető lesz." -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "Leltár riport létrehozása" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "Leltár riport beütemezve" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "Nincs elérhető leltár előzmény" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "Leltár bejegyzés szerkesztése" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "Leltár bejegyzés törlése" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "Nincs több változat" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "Nincs alkatrész paraméter sablon" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "Alkatrész paraméter sablon módosítása" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "Az összes erre a sablonra hivatkozó paraméter is törlésre kerül" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "Alkatrész paraméter sablon törlése" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "Nem található beszerzési rendelés" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "Ez a sortétel késésben van" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "Sortétel bevételezése" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "Alkatrész kapcsolatok törlése" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "Alkatrész kapcsolatok törlése" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "Nincs alkatrész" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "alkatrészek" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "Nincs kategória" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "Megjelenítés listaként" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "Megjelenítés rácsnézetként" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "Kategória beállítása a kiválasztott alkatrészekhez" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "Alkatrész kategória beállítása" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" -msgstr "Alkatrész kategória kiválasztása" +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "Kategória beállítása" -#: templates/js/translated/part.js:2495 -msgid "Category is required" -msgstr "Kategória megadása kötelező" +#: templates/js/translated/part.js:2283 +msgid "parts" +msgstr "alkatrészek" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "Nincs kategória" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "Megjelenítés listaként" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "Megjelenítés rácsnézetként" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "Nem találhatóak alkategóriák" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "Megjelenítés fában" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "Alkategóriák betöltése" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "Értesítésre beállított kategória" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "Nincs a lekérdezéssel egyező teszt sablon" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "Teszt eredmény szerkesztése" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "Teszt eredmény törlése" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "Ez a teszt a szülő alkatrészhez lett felvéve" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "Teszt eredmény sablon szerkesztése" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "Teszt eredmény sablon törlése" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "Nincs megadva dátum" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "A megadott dátum a múltban van" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "Spekulatív" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "Az alkatrészhez nem áll rendelkezésre ütemezési információ" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "Hiba az alkatrész ütemezési információinak betöltésekor" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "Ütemezett készlet mennyiség" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "Minimum mennyiség" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "Minimális készlet" #: templates/js/translated/plugin.js:45 msgid "No plugins found" +msgstr "Nem találhatók pluginok" + +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" +msgstr "Ez a plugin aktív" + +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" -msgstr "" - -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "Minta" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" -msgstr "" +msgstr "Plugin kikapcsolása" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" -msgstr "" +msgstr "Plugin bekapcsolása" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "A plugin telepítve lett" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" -msgstr "" +msgstr "Biztosan bekapcsolod ezt a plugint?" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" -msgstr "" +msgstr "Biztosan kikapcsolod ezt a plugint?" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" -msgstr "" +msgstr "Bekapcsolás" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" -msgstr "" +msgstr "Kikapcsolás" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" -msgstr "" +msgstr "Plugin frissítve" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" @@ -11149,254 +11752,254 @@ msgstr "Nincsenek ársáv adatok" msgid "No purchase history data available" msgstr "Nincsenek beszerzési ár előzmények" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "Beszerzési ár előzmények" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "Nincsenek eladási ár előzmények" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "Eladási ár előzmények" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "Nincs alkatrészváltozat infomáció" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "Alkatrészváltozat" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "Válaszd ki a lemásolandó beszerzési rendelést" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "Sortételek másolása" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "Összes sortétel másolása a kiválasztott rendelésből" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "Egyéb tételek másolása" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "Összes egyéb tétel másolása a kiválasztott rendelésből" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "Beszerzési rendelés szerkesztése" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "Másolási opciók" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "Beszerzési rendelés befejezése" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "Rendelés befejezettnek jelölése?" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "Minden sortétel megérkezett" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "Ez a rendelés olyan sortételeket tartalmaz amik még nem érkeztek be." -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "A rendelés befejezésével jelölésével annak adatai és sortételei a továbbiakban már nem lesznek szerkeszthetők." -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "Beszerzési rendelés törlése" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "Biztosan törölni szeretnéd ezt a beszerzési rendelést?" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "Ezt a beszerzési rendelést nem lehet törölni" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "A kiküldés után a sortételek már nem lesznek szerkeszthetők." -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "Beszerzési rendelés kiküldése" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "Legalább egy beszerezhető alkatrészt ki kell választani" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "Rendelendő mennyiség" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "Új beszállítói alkatrész" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "Új beszerzési rendelés" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "Hozzáadás beszerzési rendeléshez" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "Nincsenek egyező beszállítói alkatrészek" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "Nincsenek egyező beszerzési rendelések" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "Sortételek kiválasztása" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "Legalább egy sortételt ki kell választani" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "Beérkezett mennyiség" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "Érkező mennyiség" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "Készlet állapota" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "Vonalkód hozzáadása" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "Vonalkód eltávolítása" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "Add meg a helyet" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "Batch kód hozzáadása" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "Sorozatszám hozzáadása" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "Sorozatszámok" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "Rendelési kód" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "Érkező mennyiség" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "Bevételezés megerősítése" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "Beszerzési rendelés tételeinek bevételezése" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "Tétel vonalkód beolvasása" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "Beérkezett tétel vonalkódjának leolvasása (egyik meglévő készlet tétellel sem egyezhet)" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "Érvénytelen vonalkód adat" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "Rendelés késésben" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "Tételek" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "Az összes kijelölt sortétel törlésre kerül" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "Töröljük a kiválasztott sortételeket?" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "Sortétel másolása" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "Sortétel szerkesztése" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "Sortétel törlése" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "Sortétel másolása" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "Sortétel szerkesztése" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "Sortétel törlése" @@ -11425,250 +12028,250 @@ msgstr "Nem található riport sablon a kiválasztott tételekhez" msgid "Add Customer" msgstr "Vevő hozzáadása" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" -msgstr "Visszavételi utasítás létrehozása" +msgstr "Visszavétel létrehozása" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" -msgstr "Visszavételi utasítás szerkesztése" +msgstr "Visszavétel szerkesztése" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" -msgstr "Visszavételi utasítás kiadása" +msgstr "Visszavétel kiadása" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" -msgstr "Biztosan törölni szeretnéd ezt a visszavételi utasítást?" +msgstr "Biztosan törölni szeretnéd ezt a visszavételt?" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" -msgstr "Visszavételi utasítás törlése" +msgstr "Visszavétel törlése" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" -msgstr "Visszavételi utasítás befejezése" +msgstr "Visszavétel befejezése" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" -msgstr "Nem található visszavételi utasítás" +msgstr "Nem található visszavétel" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "Érvénytelen vevő" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" -msgstr "Visszavételi utasítás tételeinek bevételezése" +msgstr "Visszavétel tételeinek bevételezése" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "Nincs egyező sortétel" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "Tétel bevételezve" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "Vevői rendelés létrehozása" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "Vevői rendelés szerkesztése" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "Ehhez a szállítmányhoz nincs készlet hozzárendelve" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "A következő készlet tételek ki lesznek szállítva" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "Függő szállítmányok kiszállítása" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "Szállítmány megerősítése" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "Nincs függő szállítmány" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "A függő a szállítmányokhoz nincs készlet hozzárendelve" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "Függő szállítmányok kiszállítása" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "Kihagyás" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "Ez a rendelés olyan sortételeket tartalmaz amik még nem teljesítettek." -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "Vissza lett igazolva ez a vevői rendelés?" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "Vevői rendelés visszaigazolása" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "Vevő rendelés törlése" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "A rendelés törlésével annak adatai a továbbiakban már nem lesznek szerkeszthetők." -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "Szállítmány létrehozása" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "Nem található vevői rendelés" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "Szállítmány szerkesztése" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "Szállítmány kiszállítása" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "Szállítmány törlése" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "Szállítmány szerkesztése" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "Szállítmány törlése" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "Nincs egyező szállímány" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "Szállítmány azonosító" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "Nincs kiszállítva" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "Nyomkövetés" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "Számla" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "Szállítmány hozzáadása" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "Készlet foglalás megerősítése" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "Készlet foglalása a vevői rendeléshez" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "Nincs vevői rendeléshez történő foglalás" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "Készlet foglalások szerkesztése" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "Törlési művelet megerősítése" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "Készlet foglalások törlése" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "Vevőnek kiszállítva" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "Készlethely nincs megadva" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "Sorozatszámok kiosztása" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "Készletrendelés" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "Árszámítás" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "Nem törölhető mivel a tételek ki lettek szállítva" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "Nem törölhető mivel tételek vannak lefoglalva" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "Sorozatszámok kiosztása" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "Egységár módosítása" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "Nincs találat" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "Add meg a keresési lekérdezést" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "eredmény" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "találat" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "Eredmények összezárása" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "Eredmények eltávolítása" @@ -11680,688 +12283,728 @@ msgstr "Készlet tétel sorszámozása" msgid "Confirm Stock Serialization" msgstr "Készlet sorozatszámozás megerősítése" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "Felsőbb szintű készlet hely" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "Készlet hely szerkesztése" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "Új készlet hely" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "Új készlethely létrehozása ez után" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "Készlet hely létrehozva" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "Biztosan törölni szeretnéd ezt a készlet helyet?" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "Szülő készlet helyre mozgatás" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "Készlethely törlése" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "Műveletek az ezen a helyen lévő tételekhez" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "Műveletek az al-helyekhez" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "Ezt az alkatrészt nem lehet sorozatszámozni" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" -msgstr "" +msgstr "Mennyiség hozzáadása csomagolási egységenként egyedi tételek helyett" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "Add meg a kezdeti mennyiséget ehhez a készlet tételhez" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Add meg az új készlet tételhez tartozó sorozatszámokat (vagy hagyd üresen)" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "Készlet tétel lemásolva" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "Készlet tétel másolása" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "Biztosan törölni szeretnéd ezt a készlet tételt?" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "Készlet tétel törlése" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "Készlet tétel szerkesztése" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "Új tétel létrehozása ez után" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "Készlet tétel létrehozva" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "Több készlet tétel létre lett hozva" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "Sorozatszám keresése" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "Sorozatszám megadása" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "Adj meg egy sorozatszámot" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "Nincs egyező sorozatszám" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "Több egyező eredmény is van" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "Készlet hozzárendelés jóváhagyása" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "Készlet vevőhöz rendelése" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "Figyelem: az összevonási művelet nem vonható vissza" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "Némi információ elveszik a készlet összevonás során" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "A készlettörténet törölve lesz az összevont tételeknél" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "A beszállítói alkatrész információk törlődnek az összevont tételeknél" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "Készlet összevonás megerősítése" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "Készlet tételek összevonása" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "Készlet áthelyezése" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "Áthelyezés" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "Leltározás" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "Mennyiség" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "Készlet csökkentése" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "Kivesz" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "Készlet növelése" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "Hozzáad" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "Készlet törlése" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "Egyedi követésre kötelezett tételeknél a menyiség nem módosítható" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "Készlet mennyiség megadása" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "Készlet tételek kiválasztása" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" -msgstr "Ki kell választanod legalább egy rendelkezésre álló készlet tételt" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "Válassz legalább egy rendelkezésre álló készlet tételt" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "Készlet módosítás jóváhagyása" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "SIKER" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "SIKERTELEN" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "NINCS EREDMÉNY" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "Teszt sikeres" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "Teszt eredmény hozzáadása" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "Nincs teszt eredmény" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "Teszt dátuma" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "Teszt eredmény szerkesztése" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "Teszt eredmény törlése" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "Gyártásban" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "Beépítve készlet tételbe" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "Vevő rendeléshez hozzárendelve" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "Nincs hely megadva" -#: templates/js/translated/stock.js:1746 +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "Készlet állapot módosítása" + +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "Készlet összevonása" + +#: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "Készlet törlése" + +#: templates/js/translated/stock.js:1923 msgid "stock items" msgstr "készlet tételek" -#: templates/js/translated/stock.js:1850 +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "Beolvasás helyre" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "Készlet műveletek" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "Beépített tételek betöltése" + +#: templates/js/translated/stock.js:2061 msgid "Stock item is in production" msgstr "Készlet tétel gyártás alatt" -#: templates/js/translated/stock.js:1855 +#: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez" -#: templates/js/translated/stock.js:1858 +#: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" msgstr "Készlet tétel hozzárendelve egy vevőhöz" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" msgstr "Egyedi követésre kötelezett készlet tétel lefoglalva" -#: templates/js/translated/stock.js:1863 +#: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" msgstr "Készlet tétel teljes egészében lefoglalva" -#: templates/js/translated/stock.js:1865 +#: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" msgstr "Készlet tétel részben lefoglalva" -#: templates/js/translated/stock.js:1868 +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "Készlet tétel beépítve egy másikba" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" -msgstr "" +msgstr "Készlet tétel fel lett használva egy gyártásban" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "Készlet tétel lejárt" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "Készlet tétel hamarosan lejár" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "Készlet tétel elutasítva" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "Készlet tétel elveszett" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "Készlet tétel megsemmisült" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "Kimerült" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "Beszállítói alkatrész nincs megadva" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "Készletérték" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "Nincs a lekérdezésnek megfelelő készlet tétel" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "készlethelyek" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "Alhelyek betöltése" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "Részletek" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" -msgstr "Nem változott" +msgstr "Nincs változás" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "Alkatrész információ nem áll rendelkezésre" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "A hely már nem létezik" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "A gyártási utasítás már nem létezik" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "Beszerzési megrendelés már nem létezik" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "Vevői megrendelés már nem létezik" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" -msgstr "Visszavételi utasítás már nem létezik" +msgstr "Visszavétel már nem létezik" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "Vevő már nem létezik" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "A készlet tétel már nem létezik" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "Hozzáadva" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "Eltávolítva" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "Nincsenek beépített tételek" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "Készlet tétel kiszedése" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "Válaszd ki a kiszedni való készlet tételt" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "Másik tétel beépítése ebbe a készlet tételbe" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "Készlet tételek csak akkor építhetők be ha teljesítik a következő kritériumokat" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "A készlet tétel egy olyan alkatrészre mutat ami alkatrészjegyzéke ennek a készlet tételnek" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "A készlet tétel jelenleg elérhető készleten" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "A készlet tétel még nem épült be egy másik tételbe" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "A készlet tétel követett vagy sorozatszámmal vagy batch kóddal" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "Válaszd ki a beépítendő alkatrészt" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "Válassz ki egy vagy több készlet tételt" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "Kiválasztott készlet tételek" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "Készlet állapot módosítása" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "Van projektszáma" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "Rendelés állapota" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "Kintlévő" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "Hozzám rendelt" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "Követésre kötelezett" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "Gyártmány alkatrész" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "Van elérhető készlete" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "Készlet változatok engedélyezése" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "Van árazás" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "Alhelyekkel együtt" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "Helyekkel együtt" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "Alkategóriákkal együtt" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "Értesítés beállítva" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "Sorozatszámos" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "Sorozatszám >=" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "Sorozatszám nagyobb vagy egyenlő mint" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "Sorozatszám <=" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "Sorozatszám kisebb vagy egyenlő mint" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: 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 "Sorozatszám" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "Batch kód" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "Aktív alkatrész" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "Aktív alkatrészek készletének megjelenítése" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "Az alkatrész egy gyártmány" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "Lefoglalt" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "Az tétel lefoglalásra került" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "Felhasználható készlet" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "Alhelyeken lévő készlettel együtt" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "Kimerült készlet tételek megjelenítése" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "Készleten lévő tételek megjelenítése" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "Gyártásban" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "Gyártásban lévő tételek megjelenítése" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "Változatokkal együtt" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "Alkatrészváltozatok készletével együtt" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "Beépítve" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "Másik tételbe beépült tételek mutatása" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "Készlet tételek melyek hozzá vannak rendelve egy vevőhöz" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "Készlet állapota" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "Van batch kódja" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "Követett" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "Követett készlet tétel sorozatszámmal vagy batch kóddal" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "Van beszerzési ára" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "Beszerzési árral rendelkező készlet tételek megjelenítése" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "Lejárat előtt" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "Lejárat után" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "Lejárt készlet tételek megjelenítése" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "Hamarosan lejáró készlet tételek megjelenítése" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "Teszten megfelelt" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "Beépített tételekkel együtt" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "Gyártási állapot" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "Alkategóriákkal együtt" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "Aktív alkatrészek megjelenítése" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "Elérhető" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" -msgstr "" +msgstr "Van mértékegysége" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" -msgstr "" +msgstr "Az alkatrésznek van megadva mértékegysége" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "Van IPN-je" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "Van belső cikkszáma" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "Készleten" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "Beszerezhető" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "Volt leltár" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" -msgstr "" +msgstr "Vannak lehetőségei" #: templates/js/translated/tables.js:92 msgid "Display calendar view" @@ -12391,51 +13034,51 @@ msgstr "Táblázat exportálása" msgid "Select File Format" msgstr "Fájlfomátum kiválasztása" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "Adatok betöltése" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "sor oldalanként" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "Összes sor mutatása" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "Látható" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "-" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "a" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "sorból," -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "Nincs egyező eredmény" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "Lapozó elrejtése/megjelenítése" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "Átváltás" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "Oszlopok" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "Összes" @@ -12455,11 +13098,11 @@ msgstr "Értesítések megjelenítése" msgid "New Notifications" msgstr "Új értesítések" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "Admin" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "Kijelentkezés" @@ -12475,11 +13118,11 @@ msgstr "Összes értesítés és előzmény megjelenítése" msgid "QR data not provided" msgstr "Nincs QR kód adat megadva" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "Sikeresen kijelentkeztél." -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "Jelentkezz be újra" @@ -12537,11 +13180,11 @@ msgstr "Tovább" #: templates/socialaccount/login.html:29 msgid "Invalid SSO Provider" -msgstr "" +msgstr "Érvénytelen SSO szolgáltató" #: templates/socialaccount/login.html:31 msgid "The selected SSO provider is invalid, or has not been correctly configured" -msgstr "" +msgstr "A kiválasztott SSO kiszolgáló érvénytelen, vagy nincs megfelelően konfigurálva" #: templates/socialaccount/signup.html:10 #, python-format @@ -12551,11 +13194,11 @@ msgstr "A %(provider_name)s felhasználói fiókodat fogod használni a %(site_n #: templates/socialaccount/snippets/provider_list.html:26 msgid "Provider has not been configured" -msgstr "" +msgstr "A kiszolgáló nincs konfigurálva" #: templates/socialaccount/snippets/provider_list.html:35 msgid "No SSO providers have been configured" -msgstr "" +msgstr "Nincs SSO kiszolgáló konfigurálva" #: templates/stats.html:13 msgid "Instance Name" @@ -12617,50 +13260,6 @@ msgstr "Email beállítások" msgid "Email settings not configured" msgstr "Email beállítások hiányoznak" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "Vonalkód műveletek" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "Készlet opciók" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "Kiválasztott tételek mennyiségének növelése" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "Kiválasztott tételek mennyiségének csökkentése" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "Kiválasztott készlet tételek leltározása" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "Kiválasztott tételek áthelyezése" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "Kiválasztott tételek összevonása" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "Készlet összevonása" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "Kiválasztott tételek megrendelése" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "Kiválasztott tételek törlése" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "Készlet törlése" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "Igen" @@ -12669,59 +13268,99 @@ msgstr "Igen" msgid "No" msgstr "Nem" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "Felhasználók" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "Válaszd ki mely felhasználók tartoznak ehhez a csoporthoz" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" -msgstr "A kövekező felhasználók több csoportnak is tagjai:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "Személyes adatok" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "Jogosultságok" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "Fontos dátumok" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "Jogosultságok" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "Csoport" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "Nézet" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "Jogosultság tételek megtekintéséhez" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "Jogosultság tételek hozzáadásához" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "Módosítás" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "Jogosultság tételek szerkesztéséhez" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "Jogosultság tételek törléséhez" diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po index dafd1939a1..e8445c9299 100644 --- a/InvenTree/locale/id/LC_MESSAGES/django.po +++ b/InvenTree/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API endpoint tidak ditemukan" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" -msgstr "" +msgstr "Pengguna tidak memiliki izin untuk melihat model ini" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" +msgstr "Nilai tidak tersedia" + +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "" - -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" -msgstr "" +msgstr "Detail terkait galat dapat dilihat di panel admin" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Masukkan tanggal" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Catatan" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " -msgstr "" +msgstr "Nilai yang diberikan tidak sesuai dengan pola yang ditentukan: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Masukkan sandi" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Masukkan kata sandi baru" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Konfirmasikan kata sandi" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Konfirmasi sandi baru" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Kata sandi lama" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "Email (ulang)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Konfirmasi alamat email" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Masukkan email yang sama." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." -msgstr "" +msgstr "Alamat surel utama yang diberikan tidak valid." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." +msgstr "Domain surel yang diberikan tidak perbolehkan." + +#: InvenTree/forms.py:371 +msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Jumlah yang diberikan tidak valid" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Nomor seri kosong" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Jangkauan grup tidak valid: {g}" - -#: InvenTree/helpers.py:562 -#, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Urutan grup tidak valid: {g}" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 +#, python-brace-format +msgid "Invalid group sequence: {group}" +msgstr "" + +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Tidak ada nomor seri ditemukan" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" -msgstr "" +msgstr "Hapus tag-tag HTML dari nilai ini" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Ukuran gambar terlalu besar" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "URL yang diberikan bukan file gambar yang valid" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "Surel" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "File tidak ditemukan" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Tautan eksternal tidak ditemukan" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Lampiran" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Pilih file untuk dilampirkan" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Tautan" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Tautan menuju URL eksternal" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Komentar" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Komentar file" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Pengguna" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "tanggal diunggah" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Nama file tidak boleh kosong" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Direktori lampiran tidak valid" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Nama file mengandung karakter yang tidak diperkenankan '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Nama file tidak memiliki ekstensi" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Lampiran dengan nama file ini sudah ada" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Kesalahan merubah nama file" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Pilihan tidak valid" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Nama" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Keterangan" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Keterangan (opsional)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "induk" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Direktori" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Data Barcode" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Data barcode pihak ketiga" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Barcode Hash" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Hash unik data barcode" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Sudah ada barcode yang sama" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Terjadi Kesalahan Server" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "Sebuah kesalahan telah dicatat oleh server." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Harus berupa angka yang valid" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" -msgstr "" +msgstr "Mata Uang" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -484,143 +509,155 @@ msgstr "Kolom yang diperlukan kurang: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Kolom duplikat: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "URL file gambar external" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Unduhan gambar dari URL external tidak aktif" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Ceko" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Denmark" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Jerman" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Yunani" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Inggris" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Spanyol" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Spanyol (Meksiko)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Farsi / Persia" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Perancis" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Ibrani" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Hungaria" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Itali" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Jepang" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Korea" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Belanda" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norwegia" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Polandia" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portugis" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portugis (Brasil)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Rusia" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Swedia" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Thai" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Turki" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnam" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Cina" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" -msgstr "" +msgstr "Pengecekan kesehatan sistem InvenTree gagal" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "" @@ -630,8 +667,8 @@ msgstr "Diletakkan" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Selesai" @@ -654,10 +691,10 @@ msgstr "Dikembalikan" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Dikirim" @@ -689,7 +726,7 @@ msgstr "" msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Item stok dibuat" @@ -745,7 +782,7 @@ msgstr "Dipisah dari item induk" msgid "Split child item" msgstr "Pisah item dari barang induk" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Stok item digabungkan" @@ -765,7 +802,7 @@ msgstr "Order output produksi selesai" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Terpakai oleh order produksi" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Terkirim ke pelanggan" @@ -813,119 +850,165 @@ msgstr "" msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Bukan kode mata uang yang valid" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Nilai kelebihan tidak boleh negatif" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Kelebihan tidak boleh melebihi 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Nilai kelebihan tidak valid" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Ubah Informasi User" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Atur Kata Sandi" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Bidang kata sandi tidak cocok" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Kata sandi yang salah" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Informasi Sistem" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Tentang InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "Pesanan harus dibatalkan sebelum dapat dihapus" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Order Produksi" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Order Produksi" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Pilihan produksi induk tidak valid" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Referensi Order Produksi" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Referensi" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Produksi Induk" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Produksi induk dari produksi ini" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Produksi induk dari produksi ini" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Bagian" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Pilih bagian untuk diproduksi" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Referensi Order Penjualan" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Order penjualan yang teralokasikan ke pesanan ini" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Lokasi Sumber" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Pilih dari lokasi mana stok akan diambil untuk produksi ini (kosongkan untuk mengambil stok dari mana pun)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Lokasi Tujuan" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Pilih lokasi di mana item selesai akan disimpan" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Jumlah Produksi" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Jumlah item stok yang akan dibuat" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Item selesai" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Jumlah stok item yang telah diselesaikan" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Status pembuatan" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Kode status pembuatan" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Kode Kelompok" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Kode kelompok untuk hasil produksi ini" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Tanggal Pembuatan" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Target tanggal selesai" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Target tanggal selesai produksi. Produksi akan menjadi terlambat setelah tanggal ini." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Tanggal selesai" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "diselesaikan oleh" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Diserahkan oleh" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Pengguna yang menyerahkan order ini" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Penanggung Jawab" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Tautan eksternal" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Tidak ada hasil produksi yang ditentukan" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Hasil produksi sudah selesai" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "Hasil produksi tidak sesuai dengan order produksi" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "Jumlah harus lebih besar daripada nol" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Item produksi harus menentukan hasil produksi karena bagian utama telah ditandai sebagai dapat dilacak" - -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "Item stok teralokasikan terlalu banyak" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Jumlah yang dialokasikan harus lebih dari nol" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "Jumlah harus 1 untuk stok dengan nomor seri" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Item stok yang dipilih tidak ditemukan dalam daftar barang order" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Produksi" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Stok Item" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Sumber stok item" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Jumlah" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "Item produksi harus menentukan hasil produksi karena bagian utama telah ditandai sebagai dapat dilacak" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "Item stok teralokasikan terlalu banyak" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Jumlah yang dialokasikan harus lebih dari nol" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Jumlah harus 1 untuk stok dengan nomor seri" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Stok Item" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Sumber stok item" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Jumlah stok yang dialokasikan ke produksi" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Pasang ke" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Tujuan stok item" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "Hasil Produksi" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "Hasil produksi tidak sesuai dengan produksi induk" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "Hasil bagian tidak sesuai dengan bagian dalam order produksi" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "Hasil produksi ini sudah diselesaikan" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "Hasil produksi tidak dialokasikan sepenuhnya" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "Masukkan jumlah hasil pesanan" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "Jumlah bagian yang dapat dilacak harus berupa angka bulat" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Jumlah harus angka bulat karena terdapat bagian yang dapat dilacak dalam daftar barang" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Nomor Seri" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "Masukkan nomor seri untuk hasil pesanan" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "Alokasikan nomor seri secara otomatis" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "Alokasikan item yang diperlukan dengan nomor seri yang sesuai secara otomatis" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" -msgstr "" +msgstr "Nomor-nomor seri berikut sudah ada atau tidak valid" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "Daftar hasil pesanan harus disediakan" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Lokasi" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "Lokasi hasil pesanan yang selesai" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Status" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "Terima Alokasi Tidak Lengkap" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "Terima Tidak Teralokasikan" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Terima bahwa stok item tidak teralokasikan sepenuhnya ke pesanan ini" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "Stok yang diperlukan belum teralokasikan sepenuhnya" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "Terima Tidak Selesai" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "Terima bahwa jumlah hasil produksi yang diperlukan belum selesai" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "Jumlah produksi yang diperlukan masih belum cukup" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "Order memiliki hasil produksi yang belum dilengkapi" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "Item tagihan material" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "Hasil produksi" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "Hasil pesanan harus mengarah ke pesanan yang sama" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part harus mengarah ke bagian yang sesuai dengan order produksi" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "Item harus tersedia dalam stok" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Jumlah tersedia ({q}) terlampaui" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "Hasil produksi harus ditentukan untuk mengalokasikan bagian yang terlacak" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Hasil produksi tidak dapat ditentukan untuk alokasi barang yang tidak terlacak" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "Stok item ini telah dialokasikan ke hasil produksi ini" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "Item yang dialokasikan harus disediakan" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "Stok dibutuhkan untuk order produksi" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" -msgstr "" +msgstr "Tampilkan kode QR" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "Cetak aksi" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "Cetak laporan order produksi" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "Aksi produksi" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Ubah Produksi" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Batalkan Produksi" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "Hapus Produksi" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "Selesaikan Produksi" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "Deskripsi Produksi" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1766,147 +1864,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1914,14 +1971,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" +#: common/models.py:1197 +msgid "Automatic Backup" msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" +msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" +#: common/models.py:1204 +msgid "Auto Backup Interval" msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:1370 +msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1378 -msgid "Default page size for PDF reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1388 -msgid "Enable Test Reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" msgstr "" #: common/models.py:1550 -msgid "Enable SSO on the login pages" +msgid "Default page size for PDF reports" msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" +msgid "Attach Test Reports" msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" +msgid "Autofill Serial Numbers" msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "Surel diperlukan" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3507,331 +3609,395 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" - -#: company/models.py:119 -msgid "Company address" -msgstr "" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3916,156 +4089,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4244,102 +4392,95 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "IPN harus sesuai dengan pola regex {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "Item tagihan material" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "Tidak ada tindakan yang ditentukan" msgid "No matching action found" msgstr "Aksi tidak ditemukan" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7199,7 +7374,7 @@ msgstr "" #: plugin/builtin/integration/core_notifications.py:40 #: plugin/builtin/integration/core_notifications.py:81 msgid "Enable email notifications" -msgstr "" +msgstr "Aktifkan surel pemberitahuan" #: plugin/builtin/integration/core_notifications.py:41 #: plugin/builtin/integration/core_notifications.py:82 @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" -msgstr "" +msgstr "Lampiran perlu diunggah untuk tes ini" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Produksi" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8979,17 +9453,18 @@ msgstr "" #: templates/InvenTree/settings/user.html:55 msgid "The following email addresses are associated with your account:" -msgstr "" +msgstr "Alamat surel berikut dikaitkan dengan akun Anda:" #: templates/InvenTree/settings/user.html:76 msgid "Verified" -msgstr "" +msgstr "Terverifikasi" #: templates/InvenTree/settings/user.html:78 msgid "Unverified" -msgstr "" +msgstr "Tidak terverifikasi" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9011,15 +9486,15 @@ msgstr "" #: templates/InvenTree/settings/user.html:105 msgid "Add Email Address" -msgstr "" +msgstr "Tambah Alamat Surel" #: templates/InvenTree/settings/user.html:110 msgid "Add Email" -msgstr "" +msgstr "Tambah Surel" #: templates/InvenTree/settings/user.html:120 msgid "Multifactor" -msgstr "" +msgstr "Multifaktor" #: templates/InvenTree/settings/user.html:125 msgid "You have these factors available:" @@ -9027,7 +9502,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:135 msgid "TOTP" -msgstr "" +msgstr "TOTP" #: templates/InvenTree/settings/user.html:141 msgid "Static" @@ -9071,15 +9546,15 @@ msgstr "" #: templates/InvenTree/settings/user.html:189 msgid "IP Address" -msgstr "" +msgstr "Alamat IP" #: templates/InvenTree/settings/user.html:190 msgid "Device" -msgstr "" +msgstr "Perangkat" #: templates/InvenTree/settings/user.html:191 msgid "Last Activity" -msgstr "" +msgstr "Aktivitas Terakhir" #: templates/InvenTree/settings/user.html:204 #, python-format @@ -9093,7 +9568,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "" +msgstr "Apakah Anda benar-benar ingin menghapus alamat surel yang dipilih?" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" @@ -9113,7 +9588,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:58 msgid "Language Settings" -msgstr "" +msgstr "Pengaturan Bahasa" #: templates/InvenTree/settings/user_display.html:67 msgid "Select language" @@ -9166,7 +9641,7 @@ msgstr "" #: templates/InvenTree/settings/user_search.html:9 msgid "Search Settings" -msgstr "" +msgstr "Pengaturan Pencarian" #: templates/InvenTree/settings/user_sso.html:9 msgid "Single Sign On Accounts" @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9252,14 +9731,14 @@ msgstr "" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:9 msgid "Confirm Email Address" -msgstr "" +msgstr "Konfirmasi alamat surel" #: templates/account/email_confirm.html:15 #, python-format msgid "Please confirm that %(email)s is an email address for user %(user_display)s." -msgstr "" +msgstr "Harap konfirmasikan bahwa %(email)s adalah alamat surel untuk pengguna %(user_display)s." -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Konfirmasi" @@ -9312,7 +9791,7 @@ msgstr "" #: templates/account/password_reset.html:18 msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." -msgstr "" +msgstr "Lupa kata sandi? Masukkan alamat surel Anda di bawah ini, dan kami akan mengirimkan surel yang memungkinkan Anda untuk mengatur ulangnya." #: templates/account/password_reset.html:23 msgid "Reset My Password" @@ -9369,7 +9848,7 @@ msgstr "" #: templates/allauth_2fa/authenticate.html:5 msgid "Two-Factor Authentication" -msgstr "" +msgstr "Autentikasi Dua-Faktor" #: templates/allauth_2fa/authenticate.html:13 msgid "Authenticate" @@ -9377,7 +9856,7 @@ msgstr "" #: templates/allauth_2fa/backup_tokens.html:6 msgid "Two-Factor Authentication Backup Tokens" -msgstr "" +msgstr "Token Cadangan untuk Autentikasi Dua-Faktor" #: templates/allauth_2fa/backup_tokens.html:17 msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones." @@ -9435,30 +9914,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,29 +9966,29 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" #: templates/email/build_order_required_stock.html:38 #: templates/email/low_stock_notification.html:30 msgid "You are receiving this email because you are subscribed to notifications for this part " -msgstr "" +msgstr "Anda menerima surel ini karena Anda berlangganan pemberitahuan untuk bagian ini " #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "" +msgstr "Alamat Surel" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11043,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,17 +13097,17 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" -msgstr "" +msgstr "Simpan" #: templates/notifications.html:9 msgid "Show all notifications and history" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12536,7 +13179,7 @@ msgstr "" #: templates/socialaccount/login.html:29 msgid "Invalid SSO Provider" -msgstr "" +msgstr "Penyedia SSO tidak valid" #: templates/socialaccount/login.html:31 msgid "The selected SSO provider is invalid, or has not been correctly configured" @@ -12610,56 +13253,12 @@ msgstr "" #: templates/stats.html:75 msgid "Email Settings" -msgstr "" +msgstr "Pengaturan Surel" #: templates/stats.html:78 msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12668,59 +13267,99 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" -msgstr "" +msgstr "Data pribadi" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po index e92fdf5506..1e9086024c 100644 --- a/InvenTree/locale/it/LC_MESSAGES/django.po +++ b/InvenTree/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:54\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "Endpoint API non trovato" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "L'utente non ha i permessi per vedere questo modello" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "I dettagli dell'errore possono essere trovati nel pannello di amministrazione" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Inserisci la data" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Note" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "Il valore '{name}' non è nel formato del pattern" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Il valore fornito non corrisponde al modello richiesto: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Inserire la password" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Inserire una nuova password" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Conferma la password" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Conferma la nuova password" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Vecchia password" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "Email (ancora)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Conferma indirizzo email" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "È necessario digitare la stessa e-mail ogni volta." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "L'indirizzo email principale fornito non è valido." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "L'indirizzo di posta elettronica fornito non è approvato." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Quantità inserita non valida" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Numero seriale vuoto" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Seriale Duplicato" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Range gruppo: {g}" +msgid "Invalid group range: {group}" +msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "L'intervallo {g} supera la quantità consentita ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Sequenza gruppo non valida: {g}" +msgid "Invalid group sequence: {group}" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Nessun numero di serie trovato" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Il numero dei numeri seriali univoci ({s}) deve essere uguale alla quantità ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Rimuovi i tag HTML da questo valore" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Errore di connessione" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Il server ha risposto con un codice di stato non valido" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Si è verificata un'eccezione" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Il server ha risposto con valore Content-Length non valido" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Immagine troppo grande" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Il download dell'immagine ha superato la dimensione massima" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Il server remoto ha restituito una risposta vuota" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "L'URL fornito non è un file immagine valido" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "Email" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "Metadati Plugin" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "Campo di metadati JSON, da utilizzare con plugin esterni" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Schema formattato impropriamente" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Formato chiave sconosciuta" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Formato chiave mancante" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Il campo di riferimento non può essere vuoto" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "Il campo deve corrispondere al modello richiesto" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Numero di riferimento troppo grande" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "File mancante" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Link esterno mancante" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Allegato" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Seleziona file da allegare" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Collegamento" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Link a URL esterno" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Commento" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Commento del file" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Utente" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "data caricamento" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Il nome del file non deve essere vuoto" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Directory allegati non valida" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Il nome del file contiene caratteri non validi '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Nome file estensione mancante" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Esiste già un allegato con questo nome di file" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Errore nella rinominazione del file" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "Nomi duplicati non possono esistere sotto lo stesso genitore" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Scelta non valida" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Nome" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Descrizione" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Descrizione (opzionale)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "genitore" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Percorso" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "Note di Markdown (opzionale)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Dati del Codice a Barre" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Dati Codice a Barre applicazioni di terze parti" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Codice a Barre" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Codice univoco del codice a barre" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Trovato codice a barre esistente" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Errore del server" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "Un errore è stato loggato dal server." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Deve essere un numero valido" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "Selezionare la valuta dalle opzioni disponibili" @@ -484,143 +509,155 @@ msgstr "Colonna richiesta mancante: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Colonna duplicata: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "URL del file immagine remota" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Il download delle immagini da URL remoto non è abilitato" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Ceco" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Danese" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Tedesco" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Greco" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Inglese" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Spagnolo" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Spagnolo (Messicano)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Farsi / Persiano" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Francese" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Ebraico" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Ungherese" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Italiano" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Giapponese" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Coreano" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Olandese" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norvegese" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Polacco" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portoghese" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portoghese (Brasile)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Russo" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Sloveno" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Svedese" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Thailandese" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Turco" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnamita" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Cinese" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Controllo in background non riuscito" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "Server di posta non configurato" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "Controlli di sistema InvenTree falliti" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "In attesa" @@ -630,8 +667,8 @@ msgstr "Inviato" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Completo" @@ -654,10 +691,10 @@ msgstr "Reso" msgid "In Progress" msgstr "In corso" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Spedito" @@ -689,7 +726,7 @@ msgstr "In quarantena" msgid "Legacy stock tracking entry" msgstr "Voce di tracciamento stock preesistente" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Elemento stock creato" @@ -745,7 +782,7 @@ msgstr "Diviso dall'elemento genitore" msgid "Split child item" msgstr "Dividi elemento figlio" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Elemento stock raggruppato" @@ -765,7 +802,7 @@ msgstr "Build order output completato" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Impegnato dall'ordine di costruzione" @@ -781,7 +818,7 @@ msgstr "Ricevuto contro l'ordine di acquisto" msgid "Returned against Return Order" msgstr "Restituito contro l'ordine di ritorno" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Inviato al cliente" @@ -813,119 +850,165 @@ msgstr "Rimborso" msgid "Reject" msgstr "Rifiuta" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Non è un codice valuta valido" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Il sovra-valore non può essere negativo" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "L'eccesso non deve superare il 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Valore non valido per eccedenza" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Modifica informazioni utente" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Imposta Password" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Le password devono coincidere" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Password inserita non corretta" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Informazioni sistema" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Informazioni Su InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "La produzione deve essere annullata prima di poter essere eliminata" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "Consumabile" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "Opzionale" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "Monitorato" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "Allocato" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Disponibile" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Ordine di Produzione" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Ordini di Produzione" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Scelta non valida per la produzione genitore" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Riferimento Ordine Di Produzione" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Riferimento" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "Breve descrizione della build (facoltativo)" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Produzione Genitore" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Ordine di produzione a cui questa produzione viene assegnata" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Articolo" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Selezionare parte da produrre" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Numero di riferimento ordine di vendita" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Ordine di vendita a cui questa produzione viene assegnata" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Posizione Di Origine" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Seleziona la posizione da cui prelevare la giacenza (lasciare vuoto per prelevare da qualsiasi posizione di magazzino)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Posizione Della Destinazione" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Seleziona il luogo in cui gli articoli completati saranno immagazzinati" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Quantità Produzione" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Numero di articoli da costruire" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Articoli completati" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Numero di articoli di magazzino che sono stati completati" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Stato Produzione" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Codice stato di produzione" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Codice Lotto" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Codice del lotto per questa produzione" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Data di creazione" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Data completamento obiettivo" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Data di completamento della produzione. Dopo tale data la produzione sarà in ritardo." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Data di completamento" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "Completato da" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Rilasciato da" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Utente che ha emesso questo ordine di costruzione" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Responsabile" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "Utente o gruppo responsabile di questo ordine di produzione" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Collegamento esterno" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "Priorità di produzione" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "Priorità di questo ordine di produzione" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "Codice del progetto" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "L'ordine di produzione {build} è stato completato" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "L'ordine di produzione è stato completato" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Nessun output di produzione specificato" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "La produzione è stata completata" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "L'output della produzione non corrisponde all'ordine di compilazione" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "La quantità deve essere maggiore di zero" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "L'elemento di compilazione deve specificare un output poiché la parte principale è contrassegnata come rintracciabile" +#: build/models.py:1266 +msgid "Build object" +msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "La quantità assegnata ({q}) non deve essere maggiore della quantità disponibile ({a})" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "L'articolo in giacenza è sovrallocato" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "La quantità di assegnazione deve essere maggiore di zero" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "La quantità deve essere 1 per lo stock serializzato" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Articolo in giacenza selezionato non trovato nel BOM" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Produzione" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "Costruisci per allocare gli articoli" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Articoli in magazzino" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Origine giacenza articolo" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Quantità" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "L'elemento di compilazione deve specificare un output poiché la parte principale è contrassegnata come rintracciabile" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "La quantità assegnata ({q}) non deve essere maggiore della quantità disponibile ({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "L'articolo in giacenza è sovrallocato" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "La quantità di assegnazione deve essere maggiore di zero" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "La quantità deve essere 1 per lo stock serializzato" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Articoli in magazzino" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Origine giacenza articolo" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Quantità di magazzino da assegnare per la produzione" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Installa in" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Destinazione articolo in giacenza" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "Genera Output" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "L'output generato non corrisponde alla produzione principale" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "L'output non corrisponde alle parti dell'ordine di produzione" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "Questa produzione è stata già completata" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "Questo output non è stato completamente assegnato" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "Inserisci la quantità per l'output di compilazione" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "Quantità totale richiesta per articoli rintracciabili" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Quantità totale richiesta, poiché la fattura dei materiali contiene articoli rintracciabili" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Codice Seriale" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "Inserisci i numeri di serie per gli output di compilazione (build option)" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "Numeri di Serie Assegnazione automatica" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "Assegna automaticamente gli articoli richiesti con i numeri di serie corrispondenti" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "I seguenti numeri di serie sono già esistenti o non sono validi" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "Deve essere fornito un elenco dei risultati di produzione" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Posizione" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "Posizione per gli output di build completati" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Stato" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "Accetta Assegnazione Incompleta" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "Completa l'output se le scorte non sono state interamente assegnate" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "Rimuovi Giacenze Allocate" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "Detrai qualsiasi scorta che è stata già assegnata a questa produzione" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "Rimuovi Output Incompleti" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "Elimina gli output di produzione che non sono stati completati" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "Accetta come consumato da questo ordine di produzione" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "Non assegnare prima di aver completato questo ordine di produzione" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "Giacenza in eccesso assegnata" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Come si desidera gestire gli elementi extra giacenza assegnati all'ordine di produzione" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "Alcuni articoli di magazzino sono stati assegnati in eccedenza" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "Accetta Non Assegnato" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Accetta che gli elementi in giacenza non sono stati completamente assegnati a questo ordine di produzione" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "La giacenza richiesta non è stata completamente assegnata" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "Accetta Incompleta" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "Accetta che il numero richiesto di output di produzione non sia stato completato" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "La quantità di produzione richiesta non è stata completata" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "L'ordine di produzione ha output incompleti" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "Distinta base (Bom)" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "Genera Output" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "L'output di produzione deve puntare alla stessa produzione" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "gli elementi degli articoli della distinta base devono puntare alla stessa parte dell'ordine di produzione" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "L'articolo deve essere disponibile" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantità disponibile ({q}) superata" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "L'output di produzione deve essere specificato per l'ubicazione delle parti tracciate" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "L'output di produzione non deve essere specificato per l'ubicazione delle parti non tracciate" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "Questa giacenza di magazzino è già stato assegnato a questa produzione" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "Deve essere indicata l'allocazione dell'articolo" @@ -1515,15 +1613,15 @@ msgstr "Articoli Opzionali" msgid "Allocate optional BOM items to build order" msgstr "Assegna gli elementi opzionali della distinta base all'ordine di produzione" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "Giacenza richiesta per l'ordine di produzione" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "Ordine di produzione in ritardo" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "L'ordine di produzione {bo} è in ritardo" @@ -1532,89 +1630,90 @@ msgstr "L'ordine di produzione {bo} è in ritardo" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "Azioni Barcode" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "Mostra QR Code" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "Scollega Codice a Barre" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "Collega Codice a Barre" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "Azioni di stampa" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "Stampa report ordine di produzione" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "Azioni Produzione" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Modica Produzione" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Annulla Produzione" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "Duplica Produzione" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "Elimina Produzione" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "Completa Produzione" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "Descrizione Produzione" @@ -1639,18 +1738,18 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Lo stock non è stato completamente assegnato a questo ordine di produzione" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "Data scadenza" @@ -1661,47 +1760,46 @@ msgstr "Questa produzione era in scadenza il %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "In ritardo" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Completato" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "Outputs Completati" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "Ordini di Vendita" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Inviato da" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "Priorità" @@ -1729,8 +1827,8 @@ msgstr "Risorse di magazzino" msgid "Stock can be taken from any available location." msgstr "Lo stock può essere prelevato da qualsiasi posizione disponibile." -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "Destinazione" @@ -1742,23 +1840,23 @@ msgstr "Posizione di destinazione non specificata" msgid "Allocated Parts" msgstr "Articoli Assegnati" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "Lotto" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "Creato" @@ -1766,147 +1864,106 @@ msgstr "Creato" msgid "No target date set" msgstr "Nessuna data di destinazione impostata" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Completato" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "Build Completata" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "Ordine di Produzione Subordinato" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "Assegna Scorte alla Produzione" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" -msgstr "Scorte Non Assegnate" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "Scorte Non Assegnate" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "Assegna automaticamente le scorte per la produzione" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "Assegnazione Automatica" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "Assegna manualmente le scorte per la produzione" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "Assegna Scorte" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "Ordina articoli richiesti" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "Ordine Articoli" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "Le scorte non rintracciabili sono state completamente assegnate per questo ordine di produzione" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "Le scorte non rintracciabili non sono state completamente assegnate per questo ordine di produzione" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "Assegna i prodotti selezionati" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "Questo ordine di produzione non ha alcun articolo rintracciabile nella distinta base" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "Produzione Incompleta" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "Crea nuova produzione" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "Nuova Produzione" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "Azioni di output" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "Completa la produzione selezionata" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "Completa gli outputs" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "Cancella la produzione selezionata" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "Cancella l'output" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "Produzioni Completate" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Allegati" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "Genera Note" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "Assegnazione Completa" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" -msgstr "Tutte le giacenze non tracciate sono state assegnate" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "Nuovo Ordine di Produzione" @@ -1914,14 +1971,10 @@ msgstr "Nuovo Ordine di Produzione" msgid "Build Order Details" msgstr "Dettagli Ordine di Produzione" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "Output Incompleti" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "Outputs Completati" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "{name.title()} File" msgid "Select {name} file to upload" msgstr "Seleziona il file {name} da caricare" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "Aggiornato" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Orario dell'ultimo aggiornamento" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "Codice del progetto" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "Codice unico del progetto" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "Descrizione del progetto" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole)" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "Valore impostazioni" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "Il valore specificato non è un opzione valida" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "Il valore deve essere un valore booleano" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "Il valore deve essere un intero" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "La stringa chiave deve essere univoca" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "Nessun gruppo" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "Un dominio vuoto non è consentito." -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Nome dominio non valido: {domain}" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "Riavvio richiesto" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "È stata modificata un'impostazione che richiede un riavvio del server" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "Nome Istanza Del Server" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "Descrittore stringa per l'istanza del server" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "Utilizza nome istanza" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "Usa il nome dell'istanza nella barra del titolo" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "Limita visualizzazione `Informazioni`" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "Mostra la modalità `Informazioni` solo ai superusers" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Nome azienda" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "Nome interno dell'azienda" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "URL Base" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "URL di base per l'istanza del server" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Valuta predefinita" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "Scarica dall'URL" +#: common/models.py:1126 +msgid "Currency Update Interval" +msgstr "" -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "Consenti il download di immagini e file remoti da URL esterno" +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "Limite Dimensione Download" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "Dimensione massima consentita per il download dell'immagine remota" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "User-agent utilizzato per scaricare dall'URL" - -#: common/models.py:999 -msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" -msgstr "Consenti di sovrascrivere l'user-agent utilizzato per scaricare immagini e file da URL esterno (lasciare vuoto per il predefinito)" - -#: common/models.py:1004 -msgid "Require confirm" -msgstr "Richiesta conferma" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "Richiede una conferma esplicita dell'utente per una determinata azione." - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "Profondità livelli" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "Profondità predefinita per la visualizzazione ad albero. I livelli più in alto possono essere caricati più lentamente quando necessari." - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "Aggiorna intervallo di controllo" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "Quanto spesso controllare gli aggiornamenti (impostare a zero per disabilitare)" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 msgid "days" msgstr "giorni" -#: common/models.py:1032 +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Scarica dall'URL" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Consenti il download di immagini e file remoti da URL esterno" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "Limite Dimensione Download" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "Dimensione massima consentita per il download dell'immagine remota" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "User-agent utilizzato per scaricare dall'URL" + +#: common/models.py:1164 +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "Consenti di sovrascrivere l'user-agent utilizzato per scaricare immagini e file da URL esterno (lasciare vuoto per il predefinito)" + +#: common/models.py:1169 +msgid "Require confirm" +msgstr "Richiesta conferma" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "Richiede una conferma esplicita dell'utente per una determinata azione." + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "Profondità livelli" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "Profondità predefinita per la visualizzazione ad albero. I livelli più in alto possono essere caricati più lentamente quando necessari." + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "Aggiorna intervallo di controllo" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "Quanto spesso controllare gli aggiornamenti (impostare a zero per disabilitare)" + +#: common/models.py:1197 msgid "Automatic Backup" msgstr "Backup automatico" -#: common/models.py:1033 +#: common/models.py:1198 msgid "Enable automatic backup of database and media files" msgstr "Abilita il backup automatico di database e file multimediali" -#: common/models.py:1039 +#: common/models.py:1204 msgid "Auto Backup Interval" msgstr "Intervallo Di Backup Automatico" -#: common/models.py:1040 +#: common/models.py:1205 msgid "Specify number of days between automated backup events" msgstr "Definisci i giorni intercorrenti tra un backup automatico e l'altro" -#: common/models.py:1050 +#: common/models.py:1215 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1051 +#: common/models.py:1216 msgid "Background task results will be deleted after specified number of days" msgstr "I risultati delle attività in background verranno eliminati dopo un determinato numero di giorni" -#: common/models.py:1061 +#: common/models.py:1226 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1062 +#: common/models.py:1227 msgid "Error logs will be deleted after specified number of days" msgstr "I log di errore verranno eliminati dopo il numero specificato di giorni" -#: common/models.py:1072 +#: common/models.py:1237 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1073 +#: common/models.py:1238 msgid "User notifications will be deleted after specified number of days" msgstr "Le notifiche dell'utente verranno eliminate dopo il numero di giorni specificato" -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Supporto Codice A Barre" -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "Abilita supporto scanner codici a barre" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" -#: common/models.py:1090 +#: common/models.py:1255 msgid "Barcode Input Delay" msgstr "Codice a barre inserito scaduto" -#: common/models.py:1091 +#: common/models.py:1256 msgid "Barcode input processing delay time" msgstr "Tempo di ritardo di elaborazione codice a barre" -#: common/models.py:1101 +#: common/models.py:1266 msgid "Barcode Webcam Support" msgstr "Codice a Barre Supporto Webcam" -#: common/models.py:1102 +#: common/models.py:1267 msgid "Allow barcode scanning via webcam in browser" msgstr "Consenti la scansione del codice a barre tramite webcam nel browser" -#: common/models.py:1108 +#: common/models.py:1273 msgid "Part Revisions" msgstr "" -#: common/models.py:1109 +#: common/models.py:1274 msgid "Enable revision field for Part" msgstr "Abilita il campo revisione per l'articolo" -#: common/models.py:1115 +#: common/models.py:1280 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:1116 +#: common/models.py:1281 msgid "Regular expression pattern for matching Part IPN" msgstr "Schema di espressione regolare per l'articolo corrispondente IPN" -#: common/models.py:1120 +#: common/models.py:1285 msgid "Allow Duplicate IPN" msgstr "Consenti duplicati IPN" -#: common/models.py:1121 +#: common/models.py:1286 msgid "Allow multiple parts to share the same IPN" msgstr "Permetti a più articoli di condividere lo stesso IPN" -#: common/models.py:1127 +#: common/models.py:1292 msgid "Allow Editing IPN" msgstr "Permetti modifiche al part number interno (IPN)" -#: common/models.py:1128 +#: common/models.py:1293 msgid "Allow changing the IPN value while editing a part" msgstr "Consenti di modificare il valore del part number durante la modifica di un articolo" -#: common/models.py:1134 +#: common/models.py:1299 msgid "Copy Part BOM Data" msgstr "Copia I Dati Della distinta base dell'articolo" -#: common/models.py:1135 +#: common/models.py:1300 msgid "Copy BOM data by default when duplicating a part" msgstr "Copia i dati della Distinta Base predefinita quando duplichi un articolo" -#: common/models.py:1141 +#: common/models.py:1306 msgid "Copy Part Parameter Data" msgstr "Copia I Dati Parametro dell'articolo" -#: common/models.py:1142 +#: common/models.py:1307 msgid "Copy parameter data by default when duplicating a part" msgstr "Copia i dati dei parametri di default quando si duplica un articolo" -#: common/models.py:1148 +#: common/models.py:1313 msgid "Copy Part Test Data" msgstr "Copia I Dati dell'Articolo Test" -#: common/models.py:1149 +#: common/models.py:1314 msgid "Copy test data by default when duplicating a part" msgstr "Copia i dati di prova di default quando si duplica un articolo" -#: common/models.py:1155 +#: common/models.py:1320 msgid "Copy Category Parameter Templates" msgstr "Copia Template Parametri Categoria" -#: common/models.py:1156 +#: common/models.py:1321 msgid "Copy category parameter templates when creating a part" msgstr "Copia i modelli dei parametri categoria quando si crea un articolo" -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Modello" -#: common/models.py:1163 +#: common/models.py:1328 msgid "Parts are templates by default" msgstr "Gli articoli sono modelli per impostazione predefinita" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Assemblaggio" -#: common/models.py:1170 +#: common/models.py:1335 msgid "Parts can be assembled from other components by default" msgstr "Gli articoli possono essere assemblate da altri componenti per impostazione predefinita" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Componente" -#: common/models.py:1177 +#: common/models.py:1342 msgid "Parts can be used as sub-components by default" msgstr "Gli articoli possono essere assemblati da altri componenti per impostazione predefinita" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 +#: common/models.py:1348 part/admin.py:53 part/models.py:981 msgid "Purchaseable" msgstr "Acquistabile" -#: common/models.py:1184 +#: common/models.py:1349 msgid "Parts are purchaseable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Vendibile" -#: common/models.py:1191 +#: common/models.py:1356 msgid "Parts are salable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Tracciabile" -#: common/models.py:1198 +#: common/models.py:1363 msgid "Parts are trackable by default" msgstr "Gli articoli sono tracciabili per impostazione predefinita" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtuale" -#: common/models.py:1205 +#: common/models.py:1370 msgid "Parts are virtual by default" msgstr "Gli articoli sono virtuali per impostazione predefinita" -#: common/models.py:1211 +#: common/models.py:1376 msgid "Show Import in Views" msgstr "Mostra l'importazione nelle viste" -#: common/models.py:1212 +#: common/models.py:1377 msgid "Display the import wizard in some part views" msgstr "Mostra la procedura guidata di importazione in alcune viste articoli" -#: common/models.py:1218 +#: common/models.py:1383 msgid "Show related parts" msgstr "Mostra articoli correlati" -#: common/models.py:1219 +#: common/models.py:1384 msgid "Display related parts for a part" msgstr "Visualizza parti correlate per ogni articolo" -#: common/models.py:1225 +#: common/models.py:1390 msgid "Initial Stock Data" msgstr "Dati iniziali dello stock" -#: common/models.py:1226 +#: common/models.py:1391 msgid "Allow creation of initial stock when adding a new part" msgstr "Consentire la creazione di uno stock iniziale quando si aggiunge una nuova parte" -#: common/models.py:1232 templates/js/translated/part.js:108 +#: common/models.py:1397 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Dati iniziali del fornitore" -#: common/models.py:1233 +#: common/models.py:1398 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Consentire la creazione dei dati iniziali del fornitore quando si aggiunge una nuova parte" -#: common/models.py:1239 +#: common/models.py:1404 msgid "Part Name Display Format" msgstr "Formato di visualizzazione del nome articolo" -#: common/models.py:1240 +#: common/models.py:1405 msgid "Format to display the part name" msgstr "Formato per visualizzare il nome dell'articolo" -#: common/models.py:1247 +#: common/models.py:1412 msgid "Part Category Default Icon" msgstr "Icona predefinita Categoria Articolo" -#: common/models.py:1248 +#: common/models.py:1413 msgid "Part category default icon (empty means no icon)" msgstr "Icona predefinita Categoria Articolo (vuoto significa nessuna icona)" -#: common/models.py:1253 +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1425 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1254 +#: common/models.py:1426 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1264 +#: common/models.py:1436 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1265 +#: common/models.py:1437 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1275 +#: common/models.py:1447 msgid "Use Supplier Pricing" msgstr "Usa Prezzi Fornitore" -#: common/models.py:1276 +#: common/models.py:1448 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Includere le discontinuità di prezzo del fornitore nei calcoli generali dei prezzi" -#: common/models.py:1282 +#: common/models.py:1454 msgid "Purchase History Override" msgstr "Ignora la Cronologia Acquisti" -#: common/models.py:1283 +#: common/models.py:1455 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Cronologia dei prezzi dell'ordine di acquisto del fornitore superati con discontinuità di prezzo" -#: common/models.py:1289 +#: common/models.py:1461 msgid "Use Stock Item Pricing" msgstr "Utilizzare i prezzi degli articoli in stock" -#: common/models.py:1290 +#: common/models.py:1462 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Utilizzare i prezzi dei dati di magazzino inseriti manualmente per il calcolo dei prezzi" -#: common/models.py:1296 +#: common/models.py:1468 msgid "Stock Item Pricing Age" msgstr "Età dei prezzi degli articoli in stock" -#: common/models.py:1297 +#: common/models.py:1469 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Escludere dal calcolo dei prezzi gli articoli in giacenza più vecchi di questo numero di giorni" -#: common/models.py:1307 +#: common/models.py:1479 msgid "Use Variant Pricing" msgstr "Utilizza Variazione di Prezzo" -#: common/models.py:1308 +#: common/models.py:1480 msgid "Include variant pricing in overall pricing calculations" msgstr "Includi la variante dei prezzi nei calcoli dei prezzi complessivi" -#: common/models.py:1314 +#: common/models.py:1486 msgid "Active Variants Only" msgstr "Solo Varianti Attive" -#: common/models.py:1315 +#: common/models.py:1487 msgid "Only use active variant parts for calculating variant pricing" msgstr "Utilizza solo articoli di varianti attive per calcolare i prezzi delle varianti" -#: common/models.py:1321 +#: common/models.py:1493 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1322 +#: common/models.py:1494 msgid "Number of days before part pricing is automatically updated" msgstr "Numero di giorni prima che il prezzo dell'articolo venga aggiornato automaticamente" -#: common/models.py:1332 +#: common/models.py:1504 msgid "Internal Prices" msgstr "Prezzi interni" -#: common/models.py:1333 +#: common/models.py:1505 msgid "Enable internal prices for parts" msgstr "Abilita prezzi interni per gli articoli" -#: common/models.py:1339 +#: common/models.py:1511 msgid "Internal Price Override" msgstr "Sovrascrivi Prezzo Interno" -#: common/models.py:1340 +#: common/models.py:1512 msgid "If available, internal prices override price range calculations" msgstr "Se disponibile, i prezzi interni sostituiscono i calcoli della fascia di prezzo" -#: common/models.py:1346 +#: common/models.py:1518 msgid "Enable label printing" msgstr "Abilita stampa etichette" -#: common/models.py:1347 +#: common/models.py:1519 msgid "Enable label printing from the web interface" msgstr "Abilita la stampa di etichette dall'interfaccia web" -#: common/models.py:1353 +#: common/models.py:1525 msgid "Label Image DPI" msgstr "Etichetta Immagine DPI" -#: common/models.py:1354 +#: common/models.py:1526 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "Risoluzione DPI quando si generano file di immagine da fornire ai plugin di stampa per etichette" -#: common/models.py:1363 +#: common/models.py:1535 msgid "Enable Reports" msgstr "Abilita Report di Stampa" -#: common/models.py:1364 +#: common/models.py:1536 msgid "Enable generation of reports" msgstr "Abilita generazione di report di stampa" -#: common/models.py:1370 templates/stats.html:25 +#: common/models.py:1542 templates/stats.html:25 msgid "Debug Mode" msgstr "Modalità Debug" -#: common/models.py:1371 +#: common/models.py:1543 msgid "Generate reports in debug mode (HTML output)" msgstr "Genera report in modalità debug (output HTML)" -#: common/models.py:1377 +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 msgid "Page Size" msgstr "Dimensioni pagina" -#: common/models.py:1378 +#: common/models.py:1550 msgid "Default page size for PDF reports" msgstr "Dimensione predefinita della pagina per i report PDF" -#: common/models.py:1388 +#: common/models.py:1556 msgid "Enable Test Reports" msgstr "Abilita Rapporto di Prova" -#: common/models.py:1389 +#: common/models.py:1557 msgid "Enable generation of test reports" msgstr "Abilita generazione di stampe di prova" -#: common/models.py:1395 +#: common/models.py:1563 msgid "Attach Test Reports" msgstr "Allega Rapporto di Prova" -#: common/models.py:1396 +#: common/models.py:1564 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Quando si stampa un rapporto di prova, allegare una copia del rapporto di prova all'elemento di magazzino associato" -#: common/models.py:1402 +#: common/models.py:1570 msgid "Globally Unique Serials" msgstr "Seriali Unici Globali" -#: common/models.py:1403 +#: common/models.py:1571 msgid "Serial numbers for stock items must be globally unique" msgstr "I numeri di serie per gli articoli di magazzino devono essere univoci" -#: common/models.py:1409 +#: common/models.py:1577 msgid "Autofill Serial Numbers" msgstr "Auto Riempimento Numeri Seriali" -#: common/models.py:1410 +#: common/models.py:1578 msgid "Autofill serial numbers in forms" msgstr "Auto riempimento numeri nel modulo" -#: common/models.py:1416 +#: common/models.py:1584 msgid "Delete Depleted Stock" msgstr "Elimina scorte esaurite" -#: common/models.py:1417 +#: common/models.py:1585 msgid "Determines default behaviour when a stock item is depleted" msgstr "Determina il comportamento predefinito quando un elemento stock è esaurito" -#: common/models.py:1423 +#: common/models.py:1591 msgid "Batch Code Template" msgstr "Modello Codice a Barre" -#: common/models.py:1424 +#: common/models.py:1592 msgid "Template for generating default batch codes for stock items" msgstr "Modello per la generazione di codici batch predefiniti per gli elementi stock" -#: common/models.py:1429 +#: common/models.py:1597 msgid "Stock Expiry" msgstr "Scadenza giacenza" -#: common/models.py:1430 +#: common/models.py:1598 msgid "Enable stock expiry functionality" msgstr "Abilita funzionalità di scadenza della giacenza" -#: common/models.py:1436 +#: common/models.py:1604 msgid "Sell Expired Stock" msgstr "Vendi giacenza scaduta" -#: common/models.py:1437 +#: common/models.py:1605 msgid "Allow sale of expired stock" msgstr "Consenti la vendita di stock scaduti" -#: common/models.py:1443 +#: common/models.py:1611 msgid "Stock Stale Time" msgstr "Tempo di Scorta del Magazzino" -#: common/models.py:1444 +#: common/models.py:1612 msgid "Number of days stock items are considered stale before expiring" msgstr "Numero di giorni in cui gli articoli in magazzino sono considerati obsoleti prima della scadenza" -#: common/models.py:1451 +#: common/models.py:1619 msgid "Build Expired Stock" msgstr "Crea giacenza scaduta" -#: common/models.py:1452 +#: common/models.py:1620 msgid "Allow building with expired stock" msgstr "Permetti produzione con stock scaduto" -#: common/models.py:1458 +#: common/models.py:1626 msgid "Stock Ownership Control" msgstr "Controllo della proprietà della giacenza" -#: common/models.py:1459 +#: common/models.py:1627 msgid "Enable ownership control over stock locations and items" msgstr "Abilita il controllo della proprietà sulle posizioni e gli oggetti in giacenza" -#: common/models.py:1465 +#: common/models.py:1633 msgid "Stock Location Default Icon" msgstr "Icona Predefinita Ubicazione di Magazzino" -#: common/models.py:1466 +#: common/models.py:1634 msgid "Stock location default icon (empty means no icon)" msgstr "Icona Predefinita Ubicazione di Magazzino (vuoto significa nessuna icona)" -#: common/models.py:1471 +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1646 msgid "Build Order Reference Pattern" msgstr "Modello Di Riferimento Ordine Di Produzione" -#: common/models.py:1472 +#: common/models.py:1647 msgid "Required pattern for generating Build Order reference field" msgstr "Modello richiesto per generare il campo di riferimento ordine di produzione" -#: common/models.py:1478 +#: common/models.py:1653 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1479 +#: common/models.py:1654 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1485 +#: common/models.py:1660 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1486 +#: common/models.py:1661 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1492 +#: common/models.py:1667 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1493 +#: common/models.py:1668 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1499 +#: common/models.py:1674 msgid "Sales Order Reference Pattern" msgstr "Modello Di Riferimento Ordine Di Vendita" -#: common/models.py:1500 +#: common/models.py:1675 msgid "Required pattern for generating Sales Order reference field" msgstr "Modello richiesto per generare il campo di riferimento ordine di vendita" -#: common/models.py:1506 +#: common/models.py:1681 msgid "Sales Order Default Shipment" msgstr "Spedizione Predefinita Ordine Di Vendita" -#: common/models.py:1507 +#: common/models.py:1682 msgid "Enable creation of default shipment with sales orders" msgstr "Abilita la creazione di spedizioni predefinite con ordini di vendita" -#: common/models.py:1513 +#: common/models.py:1688 msgid "Edit Completed Sales Orders" msgstr "Modifica Ordini Di Vendita Completati" -#: common/models.py:1514 +#: common/models.py:1689 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Consenti la modifica degli ordini di vendita dopo che sono stati spediti o completati" -#: common/models.py:1520 +#: common/models.py:1695 msgid "Purchase Order Reference Pattern" msgstr "Modello di Riferimento Ordine D'Acquisto" -#: common/models.py:1521 +#: common/models.py:1696 msgid "Required pattern for generating Purchase Order reference field" msgstr "Modello richiesto per generare il campo di riferimento ordine di acquisto" -#: common/models.py:1527 +#: common/models.py:1702 msgid "Edit Completed Purchase Orders" msgstr "Modifica Ordini Di Acquisto Completati" -#: common/models.py:1528 +#: common/models.py:1703 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Consenti la modifica degli ordini di acquisto dopo che sono stati spediti o completati" -#: common/models.py:1535 +#: common/models.py:1710 msgid "Enable password forgot" msgstr "Abilita password dimenticata" -#: common/models.py:1536 +#: common/models.py:1711 msgid "Enable password forgot function on the login pages" msgstr "Abilita la funzione password dimenticata nelle pagine di accesso" -#: common/models.py:1542 +#: common/models.py:1717 msgid "Enable registration" msgstr "Abilita registrazione" -#: common/models.py:1543 +#: common/models.py:1718 msgid "Enable self-registration for users on the login pages" msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso" -#: common/models.py:1549 +#: common/models.py:1724 msgid "Enable SSO" msgstr "SSO abilitato" -#: common/models.py:1550 +#: common/models.py:1725 msgid "Enable SSO on the login pages" msgstr "Abilita SSO nelle pagine di accesso" -#: common/models.py:1556 +#: common/models.py:1731 msgid "Enable SSO registration" msgstr "Abilita registrazione SSO" -#: common/models.py:1557 +#: common/models.py:1732 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Abilita l'auto-registrazione tramite SSO per gli utenti nelle pagine di accesso" -#: common/models.py:1563 +#: common/models.py:1738 msgid "Email required" msgstr "Email richiesta" -#: common/models.py:1564 +#: common/models.py:1739 msgid "Require user to supply mail on signup" msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione" -#: common/models.py:1570 +#: common/models.py:1745 msgid "Auto-fill SSO users" msgstr "Riempimento automatico degli utenti SSO" -#: common/models.py:1571 +#: common/models.py:1746 msgid "Automatically fill out user-details from SSO account-data" msgstr "Compila automaticamente i dettagli dell'utente dai dati dell'account SSO" -#: common/models.py:1577 +#: common/models.py:1752 msgid "Mail twice" msgstr "Posta due volte" -#: common/models.py:1578 +#: common/models.py:1753 msgid "On signup ask users twice for their mail" msgstr "Al momento della registrazione chiedere due volte all'utente l'indirizzo di posta elettronica" -#: common/models.py:1584 +#: common/models.py:1759 msgid "Password twice" msgstr "Password due volte" -#: common/models.py:1585 +#: common/models.py:1760 msgid "On signup ask users twice for their password" msgstr "Al momento della registrazione chiedere agli utenti due volte l'inserimento della password" -#: common/models.py:1591 +#: common/models.py:1766 msgid "Allowed domains" msgstr "Domini consentiti" -#: common/models.py:1592 +#: common/models.py:1767 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1598 +#: common/models.py:1773 msgid "Group on signup" msgstr "Gruppo iscrizione" -#: common/models.py:1599 +#: common/models.py:1774 msgid "Group to which new users are assigned on registration" msgstr "Gruppo a cui i nuovi utenti vengono assegnati al momento della registrazione" -#: common/models.py:1605 +#: common/models.py:1780 msgid "Enforce MFA" msgstr "Applica MFA" -#: common/models.py:1606 +#: common/models.py:1781 msgid "Users must use multifactor security." msgstr "Gli utenti devono utilizzare la sicurezza a due fattori." -#: common/models.py:1612 +#: common/models.py:1787 msgid "Check plugins on startup" msgstr "Controlla i plugin all'avvio" -#: common/models.py:1613 +#: common/models.py:1788 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Controlla che tutti i plugin siano installati all'avvio - abilita in ambienti contenitore" -#: common/models.py:1620 -msgid "Check plugin signatures" -msgstr "Controlla le firme del plugin" - -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "Controlla e mostra le firme per i plugin" - -#: common/models.py:1628 +#: common/models.py:1796 msgid "Enable URL integration" msgstr "Abilita l'integrazione URL" -#: common/models.py:1629 +#: common/models.py:1797 msgid "Enable plugins to add URL routes" msgstr "Attiva plugin per aggiungere percorsi URL" -#: common/models.py:1636 +#: common/models.py:1804 msgid "Enable navigation integration" msgstr "Attiva integrazione navigazione" -#: common/models.py:1637 +#: common/models.py:1805 msgid "Enable plugins to integrate into navigation" msgstr "Abilita i plugin per l'integrazione nella navigazione" -#: common/models.py:1644 +#: common/models.py:1812 msgid "Enable app integration" msgstr "Abilita l'app integrata" -#: common/models.py:1645 +#: common/models.py:1813 msgid "Enable plugins to add apps" msgstr "Abilita plugin per aggiungere applicazioni" -#: common/models.py:1652 +#: common/models.py:1820 msgid "Enable schedule integration" msgstr "Abilita integrazione pianificazione" -#: common/models.py:1653 +#: common/models.py:1821 msgid "Enable plugins to run scheduled tasks" msgstr "Abilita i plugin per eseguire le attività pianificate" -#: common/models.py:1660 +#: common/models.py:1828 msgid "Enable event integration" msgstr "Abilita eventi integrati" -#: common/models.py:1661 +#: common/models.py:1829 msgid "Enable plugins to respond to internal events" msgstr "Abilita plugin per rispondere agli eventi interni" -#: common/models.py:1668 +#: common/models.py:1836 msgid "Enable project codes" msgstr "" -#: common/models.py:1669 +#: common/models.py:1837 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1675 +#: common/models.py:1843 msgid "Stocktake Functionality" msgstr "Funzionalità Dell'Inventario" -#: common/models.py:1676 +#: common/models.py:1844 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Abilita la funzionalità d'inventario per la registrazione dei livelli di magazzino e il calcolo del valore di magazzino" -#: common/models.py:1682 +#: common/models.py:1850 +msgid "Exclude External Locations" +msgstr "" + +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "" + +#: common/models.py:1857 msgid "Automatic Stocktake Period" msgstr "Inventario periodico automatico" -#: common/models.py:1683 +#: common/models.py:1858 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Numero di giorni tra la registrazione automatica dell'inventario (imposta 0 per disabilitare)" -#: common/models.py:1692 +#: common/models.py:1867 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1693 +#: common/models.py:1868 msgid "Stocktake reports will be deleted after specified number of days" msgstr "I rapporti d'inventario verranno eliminati dopo il numero specificato di giorni" -#: common/models.py:1710 common/models.py:2147 +#: common/models.py:1885 common/models.py:2314 msgid "Settings key (must be unique - case insensitive" msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" -msgstr "Nessuna stampante (Esporta in PDF)" - -#: common/models.py:1751 +#: common/models.py:1925 msgid "Hide inactive parts" -msgstr "" +msgstr "Nascondi Articoli Inattivi" -#: common/models.py:1752 +#: common/models.py:1926 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1758 +#: common/models.py:1932 msgid "Show subscribed parts" msgstr "Mostra articoli sottoscritti" -#: common/models.py:1759 +#: common/models.py:1933 msgid "Show subscribed parts on the homepage" msgstr "Mostra gli articoli sottoscritti nella homepage" -#: common/models.py:1765 +#: common/models.py:1939 msgid "Show subscribed categories" msgstr "Mostra le categorie sottoscritte" -#: common/models.py:1766 +#: common/models.py:1940 msgid "Show subscribed part categories on the homepage" msgstr "Mostra le categorie dei componenti sottoscritti nella homepage" -#: common/models.py:1772 +#: common/models.py:1946 msgid "Show latest parts" msgstr "Mostra ultimi articoli" -#: common/models.py:1773 +#: common/models.py:1947 msgid "Show latest parts on the homepage" msgstr "Mostra gli ultimi articoli sulla homepage" -#: common/models.py:1779 -msgid "Recent Part Count" -msgstr "Conteggio Ultimi Articoli" - -#: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "Numero di articoli da visualizzare sulla pagina indice" - -#: common/models.py:1786 +#: common/models.py:1953 msgid "Show unvalidated BOMs" msgstr "Mostra distinta base non convalidata" -#: common/models.py:1787 +#: common/models.py:1954 msgid "Show BOMs that await validation on the homepage" msgstr "Mostra le distinte base che attendono la convalida sulla homepage" -#: common/models.py:1793 +#: common/models.py:1960 msgid "Show recent stock changes" msgstr "Mostra le modifiche recenti alle giacenze" -#: common/models.py:1794 +#: common/models.py:1961 msgid "Show recently changed stock items on the homepage" msgstr "Mostra le giacenze modificate di recente nella homepage" -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "Recente Conteggio Giacenze" - -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "Numero di giacenze recenti da visualizzare sulla pagina indice" - -#: common/models.py:1807 +#: common/models.py:1967 msgid "Show low stock" msgstr "Mostra disponibilità scarsa delle giacenze" -#: common/models.py:1808 +#: common/models.py:1968 msgid "Show low stock items on the homepage" msgstr "Mostra disponibilità scarsa degli articoli sulla homepage" -#: common/models.py:1814 +#: common/models.py:1974 msgid "Show depleted stock" msgstr "Mostra scorte esaurite" -#: common/models.py:1815 +#: common/models.py:1975 msgid "Show depleted stock items on the homepage" msgstr "Mostra disponibilità scarsa delle scorte degli articoli sulla homepage" -#: common/models.py:1821 +#: common/models.py:1981 msgid "Show needed stock" msgstr "Mostra scorte necessarie" -#: common/models.py:1822 +#: common/models.py:1982 msgid "Show stock items needed for builds on the homepage" msgstr "Mostra le scorte degli articoli necessari per la produzione sulla homepage" -#: common/models.py:1828 +#: common/models.py:1988 msgid "Show expired stock" msgstr "Mostra scorte esaurite" -#: common/models.py:1829 +#: common/models.py:1989 msgid "Show expired stock items on the homepage" msgstr "Mostra gli articoli stock scaduti nella home page" -#: common/models.py:1835 +#: common/models.py:1995 msgid "Show stale stock" msgstr "Mostra scorte obsolete" -#: common/models.py:1836 +#: common/models.py:1996 msgid "Show stale stock items on the homepage" msgstr "Mostra gli elementi obsoleti esistenti sulla home page" -#: common/models.py:1842 +#: common/models.py:2002 msgid "Show pending builds" msgstr "Mostra produzioni in attesa" -#: common/models.py:1843 +#: common/models.py:2003 msgid "Show pending builds on the homepage" msgstr "Mostra produzioni in attesa sulla homepage" -#: common/models.py:1849 +#: common/models.py:2009 msgid "Show overdue builds" msgstr "Mostra produzioni in ritardo" -#: common/models.py:1850 +#: common/models.py:2010 msgid "Show overdue builds on the homepage" msgstr "Mostra produzioni in ritardo sulla home page" -#: common/models.py:1856 +#: common/models.py:2016 msgid "Show outstanding POs" msgstr "Mostra ordini di produzione inevasi" -#: common/models.py:1857 +#: common/models.py:2017 msgid "Show outstanding POs on the homepage" msgstr "Mostra ordini di produzione inevasi sulla home page" -#: common/models.py:1863 +#: common/models.py:2023 msgid "Show overdue POs" msgstr "Mostra Ordini di Produzione in ritardo" -#: common/models.py:1864 +#: common/models.py:2024 msgid "Show overdue POs on the homepage" msgstr "Mostra Ordini di Produzione in ritardo sulla home page" -#: common/models.py:1870 +#: common/models.py:2030 msgid "Show outstanding SOs" msgstr "Mostra Ordini di Vendita inevasi" -#: common/models.py:1871 +#: common/models.py:2031 msgid "Show outstanding SOs on the homepage" msgstr "Mostra Ordini di Vendita inevasi sulla home page" -#: common/models.py:1877 +#: common/models.py:2037 msgid "Show overdue SOs" msgstr "Mostra Ordini di Vendita in ritardo" -#: common/models.py:1878 +#: common/models.py:2038 msgid "Show overdue SOs on the homepage" msgstr "Mostra Ordini di Vendita in ritardo sulla home page" -#: common/models.py:1884 +#: common/models.py:2044 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:1885 +#: common/models.py:2045 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:1891 +#: common/models.py:2051 msgid "Show News" msgstr "Mostra Notizie" -#: common/models.py:1892 +#: common/models.py:2052 msgid "Show news on the homepage" msgstr "Mostra notizie sulla home page" -#: common/models.py:1898 +#: common/models.py:2058 msgid "Inline label display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:1899 +#: common/models.py:2059 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Visualizza le etichette PDF nel browser, invece di scaricare come file" -#: common/models.py:1905 +#: common/models.py:2065 msgid "Default label printer" msgstr "Stampante per etichette predefinita" -#: common/models.py:1906 +#: common/models.py:2066 msgid "Configure which label printer should be selected by default" msgstr "Configura quale stampante di etichette deve essere selezionata per impostazione predefinita" -#: common/models.py:1912 +#: common/models.py:2072 msgid "Inline report display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:1913 +#: common/models.py:2073 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Visualizza le etichette PDF nel browser, invece di scaricare come file" -#: common/models.py:1919 +#: common/models.py:2079 msgid "Search Parts" msgstr "Cerca Articoli" -#: common/models.py:1920 +#: common/models.py:2080 msgid "Display parts in search preview window" msgstr "Mostra articoli della ricerca nella finestra di anteprima" -#: common/models.py:1926 +#: common/models.py:2086 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:1927 +#: common/models.py:2087 msgid "Display supplier parts in search preview window" msgstr "Mostra articoli del fornitore nella finestra di anteprima" -#: common/models.py:1933 +#: common/models.py:2093 msgid "Search Manufacturer Parts" msgstr "Cerca Articoli Produttore" -#: common/models.py:1934 +#: common/models.py:2094 msgid "Display manufacturer parts in search preview window" msgstr "Mostra articoli del produttore nella finestra di anteprima" -#: common/models.py:1940 +#: common/models.py:2100 msgid "Hide Inactive Parts" msgstr "Nascondi Articoli Inattivi" -#: common/models.py:1941 +#: common/models.py:2101 msgid "Excluded inactive parts from search preview window" msgstr "Escludi articoli inattivi dalla finestra di anteprima della ricerca" -#: common/models.py:1947 +#: common/models.py:2107 msgid "Search Categories" msgstr "Cerca Categorie" -#: common/models.py:1948 +#: common/models.py:2108 msgid "Display part categories in search preview window" msgstr "Mostra categorie articolo nella finestra di anteprima di ricerca" -#: common/models.py:1954 +#: common/models.py:2114 msgid "Search Stock" msgstr "Cerca Giacenze" -#: common/models.py:1955 +#: common/models.py:2115 msgid "Display stock items in search preview window" msgstr "Mostra articoli in giacenza nella finestra di anteprima della ricerca" -#: common/models.py:1961 +#: common/models.py:2121 msgid "Hide Unavailable Stock Items" msgstr "Nascondi elementi non disponibili" -#: common/models.py:1962 +#: common/models.py:2122 msgid "Exclude stock items which are not available from the search preview window" msgstr "Escludi gli elementi stock che non sono disponibili dalla finestra di anteprima di ricerca" -#: common/models.py:1968 +#: common/models.py:2128 msgid "Search Locations" msgstr "Cerca Ubicazioni" -#: common/models.py:1969 +#: common/models.py:2129 msgid "Display stock locations in search preview window" msgstr "Mostra ubicazioni delle giacenze nella finestra di anteprima di ricerca" -#: common/models.py:1975 +#: common/models.py:2135 msgid "Search Companies" msgstr "Cerca Aziende" -#: common/models.py:1976 +#: common/models.py:2136 msgid "Display companies in search preview window" msgstr "Mostra le aziende nella finestra di anteprima di ricerca" -#: common/models.py:1982 +#: common/models.py:2142 msgid "Search Build Orders" msgstr "Cerca Ordini Di Produzione" -#: common/models.py:1983 +#: common/models.py:2143 msgid "Display build orders in search preview window" msgstr "Mostra gli ordini di produzione nella finestra di anteprima di ricerca" -#: common/models.py:1989 +#: common/models.py:2149 msgid "Search Purchase Orders" msgstr "Cerca Ordini di Acquisto" -#: common/models.py:1990 +#: common/models.py:2150 msgid "Display purchase orders in search preview window" msgstr "Mostra gli ordini di acquisto nella finestra di anteprima di ricerca" -#: common/models.py:1996 +#: common/models.py:2156 msgid "Exclude Inactive Purchase Orders" msgstr "Escludi Ordini D'Acquisto Inattivi" -#: common/models.py:1997 +#: common/models.py:2157 msgid "Exclude inactive purchase orders from search preview window" msgstr "Escludi ordini di acquisto inattivi dalla finestra di anteprima di ricerca" -#: common/models.py:2003 +#: common/models.py:2163 msgid "Search Sales Orders" msgstr "Cerca Ordini Di Vendita" -#: common/models.py:2004 +#: common/models.py:2164 msgid "Display sales orders in search preview window" msgstr "Visualizzazione degli ordini di vendita nella finestra di anteprima della ricerca" -#: common/models.py:2010 +#: common/models.py:2170 msgid "Exclude Inactive Sales Orders" msgstr "Escludi Ordini Di Vendita Inattivi" -#: common/models.py:2011 +#: common/models.py:2171 msgid "Exclude inactive sales orders from search preview window" msgstr "Escludi ordini di vendita inattivi dalla finestra di anteprima di ricerca" -#: common/models.py:2017 +#: common/models.py:2177 msgid "Search Return Orders" msgstr "Cerca Ordini Di Reso" -#: common/models.py:2018 +#: common/models.py:2178 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2024 +#: common/models.py:2184 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2025 +#: common/models.py:2185 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2031 +#: common/models.py:2191 msgid "Search Preview Results" msgstr "Risultati Dell'Anteprima Di Ricerca" -#: common/models.py:2032 +#: common/models.py:2192 msgid "Number of results to show in each section of the search preview window" msgstr "Numero di risultati da visualizzare in ciascuna sezione della finestra di anteprima della ricerca" -#: common/models.py:2038 +#: common/models.py:2198 msgid "Regex Search" msgstr "Ricerca con regex" -#: common/models.py:2039 +#: common/models.py:2199 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2045 +#: common/models.py:2205 msgid "Whole Word Search" msgstr "" -#: common/models.py:2046 +#: common/models.py:2206 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2052 +#: common/models.py:2212 msgid "Show Quantity in Forms" msgstr "Mostra quantità nei moduli" -#: common/models.py:2053 +#: common/models.py:2213 msgid "Display available part quantity in some forms" msgstr "Visualizzare la quantità di pezzi disponibili in alcuni moduli" -#: common/models.py:2059 +#: common/models.py:2219 msgid "Escape Key Closes Forms" msgstr "Il tasto Esc chiude i moduli" -#: common/models.py:2060 +#: common/models.py:2220 msgid "Use the escape key to close modal forms" msgstr "Utilizzare il tasto Esc per chiudere i moduli modali" -#: common/models.py:2066 +#: common/models.py:2226 msgid "Fixed Navbar" msgstr "Barra di navigazione fissa" -#: common/models.py:2067 +#: common/models.py:2227 msgid "The navbar position is fixed to the top of the screen" msgstr "La posizione della barra di navigazione è fissata nella parte superiore dello schermo" -#: common/models.py:2073 +#: common/models.py:2233 msgid "Date Format" msgstr "Formato Data" -#: common/models.py:2074 +#: common/models.py:2234 msgid "Preferred format for displaying dates" msgstr "Formato predefinito per visualizzare le date" -#: common/models.py:2088 part/templates/part/detail.html:41 +#: common/models.py:2248 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Programmazione Prodotto" -#: common/models.py:2089 +#: common/models.py:2249 msgid "Display part scheduling information" msgstr "Mostra informazioni sulla pianificazione del prodotto" -#: common/models.py:2095 part/templates/part/detail.html:62 +#: common/models.py:2255 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventario Prodotto" -#: common/models.py:2096 +#: common/models.py:2256 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Visualizza le informazioni d'inventario dell'articolo (se la funzionalità d'inventario è abilitata)" -#: common/models.py:2102 +#: common/models.py:2262 msgid "Table String Length" msgstr "Lunghezza Stringa Tabella" -#: common/models.py:2103 +#: common/models.py:2263 msgid "Maximimum length limit for strings displayed in table views" msgstr "Limite massimo di lunghezza per le stringhe visualizzate nelle viste della tabella" -#: common/models.py:2112 +#: common/models.py:2272 msgid "Default part label template" msgstr "" -#: common/models.py:2113 +#: common/models.py:2273 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2121 +#: common/models.py:2281 msgid "Default stock item template" msgstr "" -#: common/models.py:2122 +#: common/models.py:2282 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2130 +#: common/models.py:2290 msgid "Default stock location label template" msgstr "" -#: common/models.py:2131 +#: common/models.py:2291 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2177 +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "Quantità prezzo limite" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Prezzo" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "Prezzo unitario in quantità specificata" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "Scadenza" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "Scadenza in cui questa notifica viene ricevuta" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "Nome per questa notifica" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "Attivo" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "È questa notifica attiva" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "Token" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "Token per l'accesso" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "Segreto" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "Segreto condiviso per HMAC" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "ID Messaggio" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "Identificatore unico per questo messaggio" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "Host" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "Host da cui questo messaggio è stato ricevuto" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "Intestazione" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "Intestazione di questo messaggio" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "Contenuto" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "Contenuto di questo messaggio" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "Scadenza in cui questo messaggio è stato ricevuto" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "Lavorato il" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "Il lavoro su questo messaggio è terminato?" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "Id" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "Titolo" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "Pubblicato" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "Autore" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "Riepilogo" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "Letto" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "Queste notizie sull'elemento sono state lette?" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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 "Immagine" -#: common/models.py:2737 +#: common/models.py:2902 msgid "Image file" msgstr "File immagine" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "Nuovo {verbose_name}" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "Un nuovo ordine è stato creato e assegnato a te" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "Elemento ricevuto" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "Gli elementi sono stati ricevuti a fronte di un ordine di acquisto" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "Errore generato dal plugin" @@ -3478,7 +3580,7 @@ msgstr "Corrispondenza campi non riuscita" msgid "Parts imported" msgstr "Articoli importati" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "Descrizione azienda" msgid "Description of the company" msgstr "Descrizione dell'azienda" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "Sito Web" @@ -3507,331 +3609,395 @@ msgstr "Sito Web" msgid "Company website URL" msgstr "Sito web aziendale" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Indirizzo" - -#: company/models.py:119 -msgid "Company address" -msgstr "Indirizzo dell'azienda" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Telefono" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "Numero di telefono di contatto" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "Email" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "Indirizzo email" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Contatto" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "Punto di contatto" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "Collegamento alle informazioni aziendali esterne" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "è un cliente" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "Vendi oggetti a questa azienda?" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "è un fornitore" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "Acquistate articoli da questa azienda?" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "è un produttore" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "Questa azienda produce articoli?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "Valuta predefinita utilizzata per questa azienda" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Azienda" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Articolo di base" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "Seleziona articolo" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Produttore" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Seleziona Produttore" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "Codice articolo produttore (MPN)" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "Codice articolo produttore" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "URL dell'articolo del fornitore" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "Descrizione articolo costruttore" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Codice articolo produttore" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "Nome parametro" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Valore" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "Valore del parametro" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "Unità" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "Unità parametri" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Fornitore" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "Seleziona fornitore" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "SKU" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "Unità di giacenza magazzino fornitore" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "Selezionare un produttore" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "URL dell'articolo del fornitore" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "Descrizione articolo fornitore" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "Nota" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "costo base" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "Onere minimo (ad esempio tassa di stoccaggio)" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Confezionamento" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "Imballaggio del pezzo" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "Quantità Confezione" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "multiplo" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "Ordine multiplo" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "Disponibile" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "Quantità disponibile dal fornitore" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "Disponibilità Aggiornata" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "Data dell’ultimo aggiornamento dei dati sulla disponibilità" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "Valuta predefinita utilizzata per questo fornitore" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "Crea ordine d'acquisto" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "Azioni Azienda" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "Modifica le informazioni dell'azienda" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "Modifica azienda" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "Elimina azienda" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "Elimina Azienda" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "Elimina Azienda" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Carica nuova immagine" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Scarica immagine dall'URL" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "Elimina immagine" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Cliente" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "Valuta predefinita" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Indirizzo" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "Telefono" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "Rimuovi immagine" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "Rimuovi l'immagine associata a questa azienda" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "Rimuovi" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "Carica immagine" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "Download Immagine" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "Articoli fornitore" @@ -3916,156 +4089,144 @@ msgstr "Crea nuovo fornitore" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "Nuovo fornitore articolo" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "Articoli ordinati" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "Cancella articoli" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "Cancella articoli" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "Articoli Produttore" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "Crea nuovo articolo produttore" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "Nuovo Produttore Articoli" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "Giacenza Fornitore" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "Ordine di acquisto" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "Crea nuovo ordine di acquisto" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "Nuovo Ordine di Acquisto" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "Ordini di Vendita" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "Crea nuovo ordine di vendita" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "Nuovo Ordine di Vendita" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "Assegna Giacenza" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "Ordini di reso" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "Crea nuovo ordine di reso" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "Nuovo Ordine Di Reso" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "Note Dell'Azienda" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "Contatti Azienda" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "Aggiungi contatti" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "Elenco dei fornitori" +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "Produttori" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "Articoli ordinati" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "Modifica articolo produttore" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "Cancella articolo produttore" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "Articolo interno" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "Nessuna informazione sul produttore disponibile" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "Fornitori" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "Elimina articolo fornitore" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "Elimina" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parametri" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "Nuovo Parametro" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "Elimina il parametro" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "Aggiungi parametro" @@ -4137,106 +4280,111 @@ msgstr "Elementi in Giacenza Impegnati" msgid "Contacts" msgstr "Contatti" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "Articolo Fornitore" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "Azioni Articolo Fornitore" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "Ordine Articolo" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "Aggiorna Disponibilità" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "Modifica fornitore articolo" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "Duplica Articoli Fornitore" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "Cancella Articolo Fornitore" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "Elimina Articolo Fornitore" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "Nessuna informazione sul fornitore disponibile" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "Fornitore articolo in giacenza" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "Crea nuova allocazione magazzino" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Nuovo Elemento in giacenza" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "Ordini articoli fornitore" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "Informazioni Prezzi" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "Aggiungi riduzione prezzo" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "Codice Articolo Fornitore QR" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "Collega Codice a Barre con l'Articolo Fornitore" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "Aggiorna Disponibilità Articolo" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "Articoli in magazzino" @@ -4244,102 +4392,95 @@ msgstr "Articoli in magazzino" msgid "Supplier Part Pricing" msgstr "Prezzo articolo del fornitore" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "Nuovo Fornitore" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "Nuovo Produttore" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "Clienti" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "Nuovo cliente" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "Aziende" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "Nuova Azienda" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "Nome etichetta" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "Descrizione etichetta" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "Etichetta" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "File modello etichetta" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "Abilitato" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "Modello di etichetta abilitato" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "Larghezza [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "Larghezza dell'etichetta, specificata in mm" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "Altezza [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "Larghezza dell'etichetta, specificata in mm" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "Formato del nome file" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "Formato del nome file per la generazione etichetta" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," -msgstr "Filtri di ricerca (elenco separato da virgole key=coppia di valori)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "Filtri" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "Filtri di ricerca (elenco separato da virgole key=coppia di valori" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "Articolo Filtri di ricerca (elenco separato da virgole key=coppia di valori)" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "Prezzo Totale" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "Nessun ordine di acquisto corrispondente trovato" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "Ordine D'Acquisto" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "Restituisci ordine" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "Sconosciuto" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "Prezzo totale dell'ordine" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "Il contatto non corrisponde all'azienda selezionata" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "Descrizione dell'ordine (opzionale)" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "Seleziona il codice del progetto per questo ordine" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "Collegamento a un sito web esterno" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Data prevista per la consegna dell'ordine. L'ordine scadrà dopo questa data." -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "Creato Da" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "Utente o gruppo responsabile di questo ordine" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "Punto di contatto per questo ordine" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "Riferimento ordine" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "Stato ordine d'acquisto" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "Azienda da cui sono stati ordinati gli articoli" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "Riferimento fornitore" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "Codice di riferimento ordine fornitore" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "ricevuto da" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "Data di emissione" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "Data di emissione ordine" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "Data ordine completato" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "Il fornitore dell'articolo deve corrispondere al fornitore dell'ordine di produzione" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "La quantità deve essere un numero positivo" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "Azienda da cui sono stati ordinati gli elementi" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "Riferimento Cliente " -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "Codice di riferimento Ordine del Cliente" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "Data di spedizione" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "spedito da" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "L'ordine non può essere completato perché nessun articolo è stato assegnato" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "Solo un ordine aperto può essere contrassegnato come completo" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "L'ordine non può essere completato in quanto ci sono spedizioni incomplete" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "L'ordine non può essere completato perché ci sono elementi di riga incompleti" @@ -4519,398 +4664,398 @@ msgstr "L'ordine non può essere completato perché ci sono elementi di riga inc msgid "Item quantity" msgstr "Quantità Elementi" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "Riferimento Linea Elemento" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "Note linea elemento" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "Data di destinazione per questa voce di riga (lasciare vuoto per utilizzare la data di destinazione dall'ordine)" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "Contesto" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "Contesto aggiuntivo per questa voce" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "Prezzo unitario" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "L'articolo del fornitore deve corrispondere al fornitore" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "eliminato" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "Ordine" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "Articolo Fornitore" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "Ricevuto" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "Numero di elementi ricevuti" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Prezzo di Acquisto" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "Prezzo di acquisto unitario" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "Dove l'Acquirente desidera che questo elemento venga immagazzinato?" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "Un articolo virtuale non può essere assegnato ad un ordine di vendita" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "Solo gli articoli vendibili possono essere assegnati a un ordine di vendita" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Prezzo di Vendita" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "Prezzo unitario di vendita" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "Quantità spedita" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "Data di spedizione" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "Verificato Da" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "Utente che ha controllato questa spedizione" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Spedizione" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "Numero di spedizione" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "Numero di monitoraggio" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "Informazioni di monitoraggio della spedizione" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "Numero Fattura" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "Numero di riferimento per la fattura associata" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "La spedizione è già stata spedita" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "La spedizione non ha articoli di stock assegnati" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "L'elemento di magazzino non è stato assegnato" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "Impossibile allocare l'elemento stock a una linea con un articolo diverso" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "Impossibile allocare stock a una riga senza un articolo" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "La quantità di ripartizione non puo' superare la disponibilità della giacenza" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "La quantità deve essere 1 per l'elemento serializzato" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "L'ordine di vendita non corrisponde alla spedizione" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "La spedizione non corrisponde all'ordine di vendita" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "Linea" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "Riferimento della spedizione ordine di vendita" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "Elemento" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "Seleziona elemento stock da allocare" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "Inserisci la quantità assegnata alla giacenza" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "Seleziona l'elemento da restituire dal cliente" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "Data di ricezione" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Risultati" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "L'ordine non può essere cancellato" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "Consenti di chiudere l'ordine con elementi di riga incompleti" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "L'ordine ha elementi di riga incompleti" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "L'ordine non è aperto" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "Valuta prezzo d'acquisto" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "L'articolo del fornitore deve essere specificato" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "L'ordine di acquisto deve essere specificato" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "Il fornitore deve essere abbinato all'ordine d'acquisto" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "L'ordine di acquisto deve essere abbinato al fornitore" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "Elemento Riga" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "L'elemento di riga non corrisponde all'ordine di acquisto" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "Seleziona la posizione di destinazione per gli elementi ricevuti" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "Inserisci il codice univoco per gli articoli in arrivo" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "Inserisci i numeri di serie per gli articoli stock in arrivo" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Codice a Barre" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "Codice a barre scansionato" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "Il codice a barre è già in uso" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "Deve essere fornita una quantità intera per gli articoli rintracciabili" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "Gli elementi di linea devono essere forniti" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "La destinazione deve essere specificata" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "I valori dei codici a barre forniti devono essere univoci" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "Valuta prezzo di vendita" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "Nessun dettaglio di spedizione fornito" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "L'elemento di riga non è associato a questo ordine" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "La quantità deve essere positiva" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "Inserisci i numeri di serie da assegnare" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "La spedizione è già stata spedita" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "La spedizione non è associata con questo ordine" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "Nessuna corrispondenza trovata per i seguenti numeri di serie" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "I seguenti numeri di serie sono già assegnati" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "Ordine D'Acquisto in ritardo" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "L'ordine d'acquisto {po} è in ritardo" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "Ordini Di Vendita in ritardo" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "L'ordine di vendita {so} è ora in ritardo" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "Stampa report ordine acquisto" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "Esportare File Ordine" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "Azioni Ordine" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "Modifica ordine" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "Annulla l'ordine" @@ -4949,90 +5094,82 @@ msgstr "Duplica Ordine" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "Ricevere articoli" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "Ricevi elementi" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "Contrassegna ordine come completato" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "Completa l'ordine" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "Riferimento ordine" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "Descrizione Dell'Ordine" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "Stato dell'ordine" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "Nessuna informazione sul fornitore disponibile" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "Elementi della linea completati" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "Incompleto" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "Emesso" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "Costo totale" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "Il costo totale non può essere calcolato" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "Collega il codice a barre all'ordine d'acquisto" @@ -5085,13 +5222,13 @@ msgstr "Duplica selezionati" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Elimina riga" @@ -5152,9 +5289,9 @@ msgstr "Elementi D'Ordine D'Acquisto" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "Aggiungi Elemento Riga" @@ -5165,30 +5302,25 @@ msgstr "Aggiungi Elemento Riga" msgid "Receive Line Items" msgstr "Ricevi Oggetti Riga" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "Elimina Elementi Riga" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "Linee Extra" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "Aggiungi Linea Extra" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "Elementi Ricevuti" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "Note dell'Ordine" @@ -5197,40 +5329,40 @@ msgstr "Note dell'Ordine" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "Stampa rapporto ordine di reso" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "Stampa lista d'imballaggio" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "Riferimento Cliente" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "Costo Totale" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "Dettagli dell'ordine" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "Stampa il rapporto dell'ordine delle vendite" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "Spedisci oggetti" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "Completa Ordine Di Vendita" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "Questo Ordine di Vendita non è stato assegnato completamente" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "Spedizioni Completate" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "Elementi Ordine di Vendita" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "Spedizione in sospeso" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Azioni" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "Nuova spedizione" @@ -5293,64 +5424,65 @@ msgstr "Nuova spedizione" msgid "Match Supplier Parts" msgstr "Corrispondenza Articoli del Fornitore" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "Ordine di Vendita non trovato" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "Prezzo non trovato" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "Aggiornato {part} prezzo unitario a {price}" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "Aggiornato {part} unità prezzo a {price} e quantità a {qty}" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "Codice Articolo" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "Nome Articolo" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "Descrizione Articolo" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "IPN - Numero di riferimento interno" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "Revisione" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Parole Chiave" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "Id Categoria" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "Nome Categoria" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "Posizione Predefinita ID" @@ -5358,24 +5490,24 @@ msgstr "Posizione Predefinita ID" msgid "Default Supplier ID" msgstr "ID Fornitore Predefinito" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variante Di" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Scorta Minima" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "In magazzino" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "Ordinato" @@ -5383,115 +5515,108 @@ msgstr "Ordinato" msgid "Used In" msgstr "Utilizzato In" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "Allocato" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "In Costruzione" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "Costo Minimo" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "Costo Massimo" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "ID principale" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "Nome Principale" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "Percorso Categoria" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "Articoli" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "Livello Distinta Base" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "ID Elemento Distinta Base" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "IPN Principale" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "IPN Articolo" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Prezzo Minimo" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Prezzo Massimo" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "Ordine D'Acquisto In Arrivo" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "Ordine di Vendita in Uscita" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "Giacenza prodotta dall'Ordine di Costruzione" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "Giacenza richiesta per l'Ordine di Produzione" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "Valido" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "Convalida l'intera Fattura dei Materiali" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "Questa opzione deve essere selezionata" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Posizione Predefinita" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Giacenze Totali" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "Disponibilità in magazzino" @@ -5499,461 +5624,468 @@ msgstr "Disponibilità in magazzino" msgid "Input quantity for price calculation" msgstr "Digita la quantità per il calcolo del prezzo" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Categoria Articoli" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "Categorie Articolo" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "Posizione predefinita per gli articoli di questa categoria" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Strutturale" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Le parti non possono essere assegnate direttamente a una categoria strutturale, ma possono essere assegnate a categorie subordinate." -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "Keywords predefinite" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "Parole chiave predefinite per gli articoli in questa categoria" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "Icona" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "Icona (facoltativa)" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "Non puoi rendere principale questa categoria di articoli perché alcuni articoli sono già assegnati!" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "Scelta non valida per l'articolo principale" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" -msgstr "L'articolo '{p1}' è usato nella Distinta Base per '{p2}' (ricorsivo)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "IPN deve corrispondere al modello regex {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "Esiste già un elemento stock con questo numero seriale" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "Non è consentito duplicare IPN nelle impostazioni dell'articolo" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "Un articolo con questo Nome, IPN e Revisione esiste già." -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "Gli articoli non possono essere assegnati a categorie articolo principali!" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "Nome articolo" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "È Template" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "Quest'articolo è un articolo di template?" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "Questa parte è una variante di un altro articolo?" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "Categoria" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "Categoria articolo" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "Numero Dell'articolo Interno" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "Numero di revisione o di versione" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "Dove viene normalmente immagazzinato questo articolo?" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Fornitore predefinito" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "Articolo fornitore predefinito" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "Scadenza Predefinita" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "Scadenza (in giorni) per gli articoli in giacenza di questo pezzo" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "Livello minimo di giacenza consentito" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "Unita di misura per questo articolo" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Questo articolo può essere costruito da altri articoli?" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Questo articolo può essere utilizzato per costruire altri articoli?" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "Questo articolo ha il tracciamento per gli elementi unici?" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "Quest'articolo può essere acquistato da fornitori esterni?" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "Questo pezzo può essere venduto ai clienti?" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "Quest'articolo è attivo?" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "È una parte virtuale, come un prodotto software o una licenza?" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "Somma di controllo Distinta Base" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "Somma di controllo immagazzinata Distinta Base" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "Distinta Base controllata da" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "Data di verifica Distinta Base" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "Creazione Utente" -#: part/models.py:1042 -msgid "User responsible for this part" -msgstr "Utente responsabile di questo articolo" +#: part/models.py:1014 +msgid "Owner responsible for this part" +msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "Ultimo Inventario" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "Vendita multipla" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "Valuta utilizzata per calcolare i prezzi" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "Costo Minimo Distinta Base" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "Costo minimo dei componenti dell'articolo" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "Costo Massimo Distinta Base" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "Costo massimo dei componenti dell'articolo" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "Importo Acquisto Minimo" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "Costo minimo di acquisto storico" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "Importo massimo acquisto" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "Costo massimo di acquisto storico" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "Prezzo Interno Minimo" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "Costo minimo basato su interruzioni di prezzo interne" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "Prezzo Interno Massimo" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "Costo massimo basato su interruzioni di prezzo interne" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "Prezzo Minimo Fornitore" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "Prezzo minimo articolo da fornitori esterni" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "Prezzo Massimo Fornitore" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "Prezzo massimo dell'articolo proveniente da fornitori esterni" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "Variazione di costo minimo" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "Costo minimo calcolato di variazione dell'articolo" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "Massima variazione di costo" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "Costo massimo calcolato di variazione dell'articolo" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "Costo minimo totale calcolato" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "Costo massimo totale calcolato" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "Prezzo Di Vendita Minimo" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "Prezzo minimo di vendita basato sulle interruzioni di prezzo" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "Prezzo Di Vendita Massimo" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "Prezzo massimo di vendita basato sulle interruzioni di prezzo" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "Costo Di Vendita Minimo" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "Prezzo storico minimo di vendita" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "Costo Di Vendita Minimo" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "Prezzo storico massimo di vendita" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "Articolo per l'inventario" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "Contatore Elemento" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "Numero di scorte individuali al momento dell'inventario" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "Totale delle scorte disponibili al momento dell'inventario" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "Data" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "Data in cui è stato effettuato l'inventario" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "Note aggiuntive" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "Utente che ha eseguito questo inventario" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "Costo Minimo Scorta" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "Costo minimo stimato di magazzino a disposizione" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "Costo Massimo Scorte" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "Costo massimo stimato di magazzino a disposizione" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "Report" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "File Report Inventario (generato internamente)" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "Conteggio Articolo" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "Numero di articoli oggetto d'inventario" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "Utente che ha richiesto questo report inventario" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "Il modello di prova può essere creato solo per gli articoli rintracciabili" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "Una prova con questo nome esiste già per questo articolo" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "Nome Test" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "Inserisci un nome per la prova" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "Descrizione Di Prova" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "Inserisci descrizione per questa prova" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Richiesto" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "Questa prova è necessaria per passare?" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "Valore richiesto" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "Questa prova richiede un valore quando si aggiunge un risultato di prova?" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "Allegato Richiesto" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "Questa prova richiede un file allegato quando si aggiunge un risultato di prova?" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "Il nome del modello del parametro deve essere univoco" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "Nome Parametro" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "Descrizione del parametro" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "Articolo principale" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "Modello Parametro" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "Dati" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "Valore del Parametro" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "Valore Predefinito" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "Valore Parametro Predefinito" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "ID articolo o nome articolo" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "Valore ID articolo univoco" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "Valore IPN articolo" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "Livello" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "Livello distinta base" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "Distinta base (Bom)" + +#: part/models.py:3771 msgid "Select parent part" msgstr "Seleziona articolo principale" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "Articolo subordinato" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "Seleziona l'articolo da utilizzare nella Distinta Base" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "Quantità Distinta Base per questo elemento Distinta Base" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "Opzionale" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "Questo elemento della Distinta Base è opzionale" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "Consumabile" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "Questo elemento della Distinta Base è consumabile (non è tracciato negli ordini di produzione)" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Eccedenza" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Quantità stimata scarti di produzione (assoluta o percentuale)" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "Riferimento Elemento Distinta Base" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "Note Elemento Distinta Base" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "Codice di controllo" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "Codice di controllo Distinta Base" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Convalidato" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Questo elemento della Distinta Base viene ereditato dalle Distinte Base per gli articoli varianti" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Consenti Le Varianti" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Gli elementi in giacenza per gli articoli varianti possono essere utilizzati per questo elemento Distinta Base" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "La quantità deve essere un valore intero per gli articoli rintracciabili" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "L'articolo subordinato deve essere specificato" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "Elemento Distinta Base Sostituito" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "La parte sostituita non può essere la stessa dell'articolo principale" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "Elemento principale Distinta Base" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "Sostituisci l'Articolo" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "Articolo 1" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "Articolo 2" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "Seleziona Prodotto Relativo" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "Non si può creare una relazione tra l'articolo e sé stesso" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "La relazione duplicata esiste già" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "Valuta di acquisto di questo articolo in stock" -#: part/serializers.py:302 +#: part/serializers.py:346 +msgid "No parts selected" +msgstr "" + +#: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 msgid "Original Part" msgstr "Articolo Originale" -#: part/serializers.py:302 +#: part/serializers.py:384 msgid "Select original part to duplicate" msgstr "Seleziona l'articolo originale da duplicare" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy Image" msgstr "Copia immagine" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy image from original part" msgstr "Copia immagine dall'articolo originale" -#: part/serializers.py:312 part/templates/part/detail.html:296 +#: part/serializers.py:394 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Copia Distinta Base" -#: part/serializers.py:312 +#: part/serializers.py:394 msgid "Copy bill of materials from original part" msgstr "Copia fattura dei materiali dall'articolo originale" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy Parameters" msgstr "Copia parametri" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy parameter data from original part" msgstr "Copia i dati dei parametri dall'articolo originale" -#: part/serializers.py:327 +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 msgid "Initial Stock Quantity" msgstr "Quantità iniziale" -#: part/serializers.py:327 +#: part/serializers.py:414 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "Specificare la quantità iniziale disponibile per questo Articolo. Se la quantità è zero, non viene aggiunta alcuna quantità." -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Initial Stock Location" msgstr "Ubicazione Iniziale Magazzino" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Specify initial stock location for this Part" msgstr "Specificare l'ubicazione iniziale del magazzino per questo Articolo" -#: part/serializers.py:343 +#: part/serializers.py:430 msgid "Select supplier (or leave blank to skip)" msgstr "Seleziona il fornitore (o lascia vuoto per saltare)" -#: part/serializers.py:354 +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "Seleziona il produttore (o lascia vuoto per saltare)" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "Codice articolo Produttore" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "L'azienda selezionata non è un fornitore valido" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "L'azienda selezionata non è un produttore valido" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "L'articolo del produttore che corrisponde a questo MPN esiste già" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "L'articolo del fornitore che corrisponde a questo SKU esiste già" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "Duplica articolo" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "Copia i dati iniziali da un altro Articolo" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Stock iniziale" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "Crea Articolo con quantità di scorta iniziale" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "Informazioni Fornitore" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "Aggiungi le informazioni iniziali del fornitore per questo articolo" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "Copia Parametri Categoria" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "Copia i parametri dai modelli della categoria articolo selezionata" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "Limitare il report d'inventario ad un articolo particolare e a eventuali articoli varianti" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "Limita il report d'inventario ad una particolare categoria articolo, e a eventuali categorie secondarie" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "Limita il report d'inventario ad una particolare ubicazione di magazzino, e a eventuali ubicazioni secondarie" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "Genera Report" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "Genera file di report contenente dati di inventario calcolati" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "Aggiorna Articoli" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "Aggiorna gli articoli specificati con i dati calcolati di inventario" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "La funzione Inventario non è abilitata" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "Aggiorna" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "Aggiorna i prezzi per questo articolo" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "Seleziona l'articolo da cui copiare la distinta base" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "Rimuovi Dati Esistenti" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "Rimuovi elementi distinta base esistenti prima di copiare" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "Includi Ereditato" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "Includi gli elementi Distinta Base ereditati da prodotti template" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "Salta Righe Non Valide" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "Abilita questa opzione per saltare le righe non valide" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "Copia Articoli sostitutivi" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "Copia articoli sostitutivi quando duplichi gli elementi distinta base" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "Cancella Distinta Base esistente" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "Rimuovi elementi distinta base esistenti prima del caricamento" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "Nessuna colonna articolo specificata" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "Trovati più articoli corrispondenti" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "Nessun articolo corrispondente trovato" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "L'articolo non è indicato come componente" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "Quantità non fornita" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "Quantità non valida" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "Almeno un elemento della distinta base è richiesto" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "Notifica di magazzino bassa" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "Lo stock disponibile per {part.name} è sceso sotto il livello minimo configurato" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "Quantità Totale" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "Costo Minimo Totale" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "Costo Massimo Totale" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "Report Inventario Disponibile" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "Un nuovo report di inventario è disponibile per il download" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "Notifica di magazzino bassa" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "Lo stock disponibile per {part.name} è sceso sotto il livello minimo configurato" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "Non hai il permesso di modificare la distinta base." @@ -6461,90 +6605,70 @@ msgstr "La distinta base per %(part)s è stato controllato da %(checker msgid "The BOM for %(part)s has not been validated." msgstr "La distinta base per %(part)s non è stata convalidata." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "Azioni Distinta Base" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "Elimina Elementi" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "Esegui inventario per questa categoria articolo" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "Sei iscritto alle notifiche di questa categoria" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "Sottoscrivi notifiche per questa categoria" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "Azioni Categoria" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "Modifica categoria" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "Modifica Categoria" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "Elimina la categoria" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "Cancella categoria" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "Categoria articolo di livello superiore" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Sottocategorie" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "Articoli (incluse le sottocategorie)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "Crea nuovo articolo" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "Nuovo articolo" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "Opzioni" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "Imposta categoria" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "Imposta Categoria" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "Parametri articolo" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "Crea nuova categoria articoli" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "Nuova categoria" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "Aggiorna i dati di pianificazione" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "Aggiorna" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "Aggiungi informazioni inventario" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "Inventario" @@ -6604,101 +6728,101 @@ msgstr "Modelli Articoli Test" msgid "Add Test Template" msgstr "Aggiungi Modelli Test" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "Assegnazione Ordine Di Vendita" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "Note Articolo" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "Varianti articolo" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "Crea nuova variante" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "Nuova variante" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "Aggiungi un nuovo parametro" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "Articoli correlati" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "Aggiungi Correlato" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "Distinta base" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "Esporta azioni" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "Esporta Distinta Base" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "Stampa il report Distinta Base" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "Azioni Distinta Base" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "Carica Distinta Base" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "Valida Distinta Base" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "Aggiungi elemento Distinta Base" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "Assembla" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "Articoli prodotti" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "Costruisci le ubicazioni degli ordini" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "Fornitori articoli" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "Componenti Produttori" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "Elimina articoli produttore" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "Articoli correlati" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "Aggiungi articolo correlato" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "Aggiungi risultato modello test" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "Scarica il Modello Articolo Importato" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "Formato" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "Seleziona il formato del file" @@ -6747,158 +6871,158 @@ msgstr "Seleziona il formato del file" msgid "Part List" msgstr "Elenco Articolo" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "Sei iscritto alle notifiche per questo articolo" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "Sottoscrivi le notifiche per questo articolo" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "Stampa Etichetta" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "Mostra informazioni sui prezzi" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "Azioni magazzino" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "Conta articoli magazzino" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "Trasferisci giacenza" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "Azioni articolo" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "Duplica articolo" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "Modifica articolo" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "Cancella articolo" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "L'articolo è una articolo modello (le varianti possono essere fatte da questo articolo)" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "L'articolo può essere assemblato da altri articoli" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "L'articolo può essere utilizzato negli assemblaggi" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "Lo stock dell'articolo è tracciato dal numero di serie" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "L'articolo può essere acquistato da fornitori esterni" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "La parte può essere venduta ai clienti" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "L'articolo non è attivo" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "Inattivo" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "L'Articolo è virtuale (non è un articolo fisico)" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "Mostra i Dettagli Articolo" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "Assegnato agli Ordini di Produzione" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "Assegnato agli Ordini di Vendita" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "Puoi produrre" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "Livello minimo di giacenza" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "Fascia di Prezzo" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "Ultimo Numero Di Serie" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "Ricerca per numero seriale" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "QR Code Articolo" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "Collega il codice a barre all'Articolo" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "Calcola" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "Rimuovi l'immagine associata all'articolo" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "Nessuna immagine corrispondente trovata" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "Nascondi Dettagli dell'Articolo" @@ -6955,15 +7079,15 @@ msgstr "Varianti" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "Magazzino" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "Prezzi" @@ -6987,11 +7111,11 @@ msgstr "Panoramica prezzi" msgid "Refresh Part Pricing" msgstr "Aggiorna prezzo articolo" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "Ultimo aggiornamento" @@ -7054,12 +7178,12 @@ msgstr "Prezzo di Vendita" msgid "Add Sell Price Break" msgstr "Aggiungi Prezzo Ribassato di Vendita" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "Nessuna giacenza" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "Disponibilità scarsa" @@ -7108,37 +7232,36 @@ msgstr "Crea nuove varianti dell'articolo" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "Database sconosciuto" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" -msgstr "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" +msgstr "" #: part/views.py:110 msgid "Match References" msgstr "Riferimenti Corrispondenza" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" -msgstr "Impossibile importare l'articolo {name} perché non c'è nessuna categoria assegnata" +msgid "Can't import part {new_part.name} because there is no category assigned" +msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "Seleziona l'immagine dell'Articolo" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "Immagine articolo aggiornata" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "Immagine articolo non trovata" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "Prezzo Articolo" @@ -7150,20 +7273,21 @@ msgstr "Nessuna azione specificata" msgid "No matching action found" msgstr "Nessuna azione corrispondente trovata" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "Codice a barre mancante" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "Nessuna corrispondenza trovata per i dati del codice a barre" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "Corrispondenza trovata per i dati del codice a barre" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "Il codice a barre corrisponde a un elemento esistente" @@ -7171,7 +7295,53 @@ msgstr "Il codice a barre corrisponde a un elemento esistente" msgid "No match found for provided value" msgstr "Nessuna corrispondenza trovata per il valore fornito" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "Stampa etichetta fallita" @@ -7185,6 +7355,11 @@ msgstr "Fornisce supporto nativo per codici a barre" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "Contributi d'InvenTree" @@ -7222,242 +7397,409 @@ msgstr "Rallentamenti in entrata notifiche url" msgid "URL that is used to send messages to a slack channel" msgstr "Questo URL è stato utilizzato per inviare messaggi a un canale rallentato" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "Apri collegamento" -#: plugin/models.py:27 +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" +msgstr "" + +#: plugin/models.py:28 msgid "Plugin Configuration" msgstr "Configurazione Plugin" -#: plugin/models.py:28 +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "Configurazioni Plugin" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "Key" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "Key dei plugin" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "PluginName del plugin" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "Il plugin è attivo" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "Installato" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "Plugin di esempio" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "Plugin Integrato" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "Plugin" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "Metodo" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "Nessun autore trovato" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "Abilita PO" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "Abilita funzionalità PO nell'interfaccia InvenTree" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "API Key" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "Key richiesta per accedere alle API esterne" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "Numerico" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "Un'impostazione numerica" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "Scegli l'impostazione" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "Un'impostazione con scelte multiple" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "URL di origine" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Fonte per il pacchetto - questo può essere un registro personalizzato o un percorso VCS" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "Nome Pacchetto" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Nome per il Pacchetto Plugin - può anche contenere un indicatore di versione" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "Conferma installazione plugin" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Questo plugin verrà installato ora nell'istanza corrente. L'istanza andrà in manutenzione." -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "Installazione non confermata" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "Deve essere fornito uno dei nomi del pacchetto URL" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "Nessun oggetto valido fornito nel modello" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Il file del modello '{template}' è mancante o non esiste" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "Report test" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "Nome modello" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "File modello di report" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "Descrizione del modello report" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "Numero di revisione del rapporto (auto-incrementi)" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "Sequenza per generare i nomi dei file report" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "Modello report abilitato" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Filtri di ricerca elementi di stock (elenco separato da virgole key=coppia di valori)" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "Includi Test Installati" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "Includi i risultati dei test per gli elementi stock installati all'interno dell'elemento assemblato" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "Filtri di produzione" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Filtri di ricerca produzione (elenco separato da virgole key=coppia di valori" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "Filtri Articolo" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Filtri di ricerca articolo (elenco separato da virgole key=coppia di valori" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "Ordine di Acquisto filtra la ricerca" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "Ordine di Vendita filtra la ricerca" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "Snippet" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "Report file snippet" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "Descrizione file snippet" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "Risorsa" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "Report file risorsa" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "File risorsa descrizione" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "Materiali necessari" @@ -7474,9 +7816,9 @@ msgstr "Il fornitore è stato eliminato" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "Prezzo Unitario" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 msgid "Total" msgstr "Totale" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Numero Seriale" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "Test Report Elemento Stock" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "Risultati Test" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "Test" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "Risultato" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "Elementi installati" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Seriale" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "ID Posizione" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "Nome Ubicazione" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Percorso Ubicazione" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "ID Elemento Stock" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "Codici di stato" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "ID Articolo Fornitore" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "ID Fornitore" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "Nome Fornitore" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "ID Cliente" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Installato In" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "ID Costruttore" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "ID Ordine Vendita" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "ID Ordine D'acquisto" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "Revisione Necessaria" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "Elimina al esaurimento" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "Data di Scadenza" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "Ubicazione Esterna" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "La quantità è richiesta" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "Deve essere fornita un articolo valido" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "I numeri di serie non possono essere forniti per un articolo non tracciabile" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Ubicazione magazzino" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "Posizioni magazzino" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Proprietario" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "Seleziona Owner" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "Gli elementi di magazzino non possono essere direttamente situati in un magazzino strutturale, ma possono essere situati in ubicazioni secondarie." -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Esterno" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "Si tratta di una posizione esterna al magazzino" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "Non puoi rendere strutturale questa posizione di magazzino perché alcuni elementi di magazzino sono già posizionati al suo interno!" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "Gli articoli di magazzino non possono essere ubicati in posizioni di magazzino strutturali!" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "Non è possibile creare un elemento di magazzino per articoli virtuali" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" -msgstr "Il tipo di articolo ('{pf}') deve essere {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "La quantità deve essere 1 per elementi con un numero di serie" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Il numero di serie non può essere impostato se la quantità è maggiore di 1" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "L'elemento non può appartenere a se stesso" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "L'elemento deve avere un riferimento di costruzione se is_building=True" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "Il riferimento di costruzione non punta allo stesso oggetto dell'articolo" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "Elemento di magazzino principale" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "Articolo base" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "Seleziona un fornitore articolo corrispondente per questo elemento di magazzino" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "Dove si trova questo articolo di magazzino?" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "Imballaggio di questo articolo di magazzino è collocato in" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "Questo elemento è stato installato su un altro elemento?" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "Numero di serie per questo elemento" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "Codice lotto per questo elemento di magazzino" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "Quantità disponibile" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "Genera Costruzione" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "Costruisci per questo elemento di magazzino" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "Origina Ordine di Acquisto" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "Ordine d'acquisto per questo articolo in magazzino" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "Destinazione Ordine di Vendita" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Data di scadenza per l'elemento di magazzino. Le scorte saranno considerate scadute dopo questa data" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "Elimina al esaurimento" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "Cancella questo Elemento di Magazzino quando la giacenza è esaurita" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "Prezzo di acquisto unitario al momento dell’acquisto" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "Convertito in articolo" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "L'articolo non è impostato come tracciabile" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "La quantità deve essere un numero intero" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" -msgstr "La quantità non deve superare la quantità disponibile ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "I numeri di serie devono essere numeri interi" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "La quantità non corrisponde ai numeri di serie" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "Numeri di serie già esistenti" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "L'elemento di magazzino è stato assegnato a un ordine di vendita" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "L'elemento di magazzino è installato in un altro elemento" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "L'elemento di magazzino contiene altri elementi" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "L'elemento di magazzino è stato assegnato a un cliente" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "L'elemento di magazzino è attualmente in produzione" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "Il magazzino serializzato non può essere unito" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "Duplica elementi di magazzino" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "Gli elementi di magazzino devono riferirsi allo stesso articolo" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "Gli elementi di magazzino devono riferirsi allo stesso articolo fornitore" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "I codici di stato dello stock devono corrispondere" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "Le giacenze non possono essere spostate perché non disponibili" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "Note d'ingresso" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "Il valore deve essere fornito per questo test" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "L'allegato deve essere caricato per questo test" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "Nome Test" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "Risultato Test" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "Test valore output" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "Risultato della prova allegato" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "Note del test" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "Il numero di serie è troppo grande" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "Inserisci il numero di elementi di magazzino da serializzare" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "La quantità non deve superare la quantità disponibile ({q})" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "Inserisci i numeri di serie per i nuovi elementi" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "Posizione magazzino di destinazione" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "Note opzionali elemento" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "Numeri di serie non possono essere assegnati a questo articolo" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "Seleziona elementi di magazzino da installare" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" -msgstr "Elemento di magazzino non disponibile" +#: stock/serializers.py:496 +msgid "Quantity to Install" +msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" -msgstr "L'articolo selezionato non è nella Fattura dei Materiali" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" +msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "Posizione di destinazione per gli elementi disinstallati" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "Aggiungi nota di transazione (opzionale)" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "Elemento di magazzino non disponibile" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "L'articolo selezionato non è nella Fattura dei Materiali" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "Posizione di destinazione per gli elementi disinstallati" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "Seleziona l'articolo in cui convertire l'elemento di magazzino" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "L'articolo selezionato non è una valida opzione per la conversione" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "Posizione di destinazione per l'elemento restituito" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "L'articolo deve essere vendibile" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "L'elemento è assegnato a un ordine di vendita" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "Elemento assegnato a un ordine di costruzione" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "Cliente a cui assegnare elementi di magazzino" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "L'azienda selezionata non è un cliente" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "Note sull'assegnazione delle scorte" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "Deve essere fornito un elenco degli elementi di magazzino" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "Note di fusione di magazzino" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "Consenti fornitori non corrispondenti" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "Consenti di unire gli elementi di magazzino che hanno fornitori diversi" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "Consenti stato non corrispondente" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "Consenti di unire gli elementi di magazzino con diversi codici di stato" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "Devono essere riforniti almeno due elementi in magazzino" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "Valore di chiave primaria StockItem" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "Note sugli spostamenti di magazzino" @@ -8034,263 +8434,271 @@ msgstr "Note sugli spostamenti di magazzino" msgid "Stock Tracking Information" msgstr "Informazioni di Tracciamento Magazzino" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "Elementi Secondari Magazzino" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "Questo elemento di magazzino non ha nessun elemento secondario" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "Dati di Test" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "Rapporto del Test" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "Elimina Dati di Test" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "Aggiungi Dati Di Test" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "Note Elemento di magazzino" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "Elementi di magazzino installati" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "Installa Elemento Magazzino" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "Elimina tutti i risultati del test per questo elemento di magazzino" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "Aggiungi Risultato Test" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "Individua elemento di magazzino" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "Scansiona nella posizione" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "Impostazioni di stampa" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "Azioni adeguamento giacenza" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "Conta giacenza" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "Aggiungi giacenza" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "Rimuovi giacenza" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "Serializza magazzino" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "Trasferisci giacenza" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "Assegna al cliente" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "Torna al magazzino" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "Disinstalla elemento di magazzino" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "Disinstalla" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "Installa elementi stock" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "Installa" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "Converti in variante" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "Duplica elemento di magazzino" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "Modifica elemento di magazzino" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "Cancella elemento di magazzino" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Produzione" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "Elemento principale" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "Nessun produttore impostato" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "Non sei nell'elenco dei proprietari di questo elemento. Questo elemento di magazzino non può essere modificato." -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "Sola lettura" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "Elemento di magazzino non disponibile" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "Questo elemento di magazzino è in produzione e non può essere modificato." -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "Modifica l'elemento di magazzino dalla visualizzazione generata." -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "Questo elemento di magazzino è stato assegnato all'Ordine di Vendita" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "Questo elemento di magazzino è stato assegnato all'Ordine di Produzione" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "pagina precedente" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "Vai al numero di serie precedente" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "pagina successiva" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "Vai al numero di serie successivo" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "Quantità Disponibile" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "Nessuna posizione impostata" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "Test" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "Questo elemento di magazzino non ha superato i test richiesti" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "Questo Elemento Stock è scaduto il %(item.expiry_date)s" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "Scaduto" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "Questo Elemento Stock scade il %(item.expiry_date)s" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Obsoleto" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "Nessun inventario eseguito" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "Modifica Stato Magazzino" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "Stock Item QR Code" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "Collega il codice a barre all'Elemento Stock" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "Selezionare una delle varianti dell'articolo elencate sotto." -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "Attenzione" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "Questa azione non può essere facilmente annullata" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "Converti Elemento Stock" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "Torna al Magazzino" @@ -8302,82 +8710,86 @@ msgstr "Crea elementi serializzati da questo elemento di magazzino." msgid "Select quantity to serialize, and unique serial numbers." msgstr "Seleziona la quantità da serializzare e i numeri di serie univoci." -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "Esegui inventario per questa ubicazione di magazzino" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "Individua ubicazione di magazzino" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "Scansiona gli elementi in magazzino in questa ubicazione" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "Scansiona Elementi Stock" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "Scansiona il contenitore magazzino in questa posizione" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "Scansiona container" -#: stock/templates/stock/location.html:102 +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 msgid "Location actions" msgstr "Azioni posizione" -#: stock/templates/stock/location.html:104 +#: stock/templates/stock/location.html:106 msgid "Edit location" msgstr "Modifica la posizione" -#: stock/templates/stock/location.html:106 +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "Elimina la posizione" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "Posizione stock di livello superiore" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "Proprietario Posizione" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "Non sei nell'elenco dei proprietari di questa posizione. Questa posizione di giacenza non può essere modificata." -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Sottoallocazioni" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "Crea nuova posizione di magazzino" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "Nuova Posizione" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "Container magazzino scansionato in questa posizione" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "Codice QR Ubicazione Magazzino" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "Collega il Codice a Barre alla Posizione Magazzino" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "Sei stato disconnesso da InvenTree." #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "Accedi" @@ -8451,71 +8863,71 @@ msgstr "Il sito è attualmente in manutenzione e dovrebbe essere online presto!" msgid "Index" msgstr "Indice" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "Articoli Sottoscritti" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "Categoria sottoscritta" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "Articoli Recenti" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "Distinta base In Attesa Di Convalida" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "Aggiornamento Recente" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "Stock esaurito" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "Richiesto per gli Ordini di Produzione" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "Stock Scaduto" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "Stock obsoleto" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "Ordini di Produzione Attivi" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "Ordini Di Produzione Scaduti" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "Ordini Di Acquisto In Corso" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "Ordini Di Acquisto In Ritardo" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "Ordini Di Vendita In Corso" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "Ordini Di Vendita in ritardo" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "Novità InvenTree" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "Notizie Attuali" @@ -8541,7 +8953,7 @@ msgstr "Segna tutte come lette" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "Notifiche" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "Elimina tutte le notifiche lette" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "Elimina notifica" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "Accesso singolo" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "Impostazioni" @@ -8651,7 +9063,7 @@ msgstr "Importa Articolo" msgid "Import Part" msgstr "Importa Articolo" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "Modelli parametro articolo" @@ -8659,12 +9071,21 @@ msgstr "Modelli parametro articolo" msgid "Stocktake Settings" msgstr "Impostazioni Inventario" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "Report Inventario" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "Impostazioni Plugin" @@ -8672,30 +9093,30 @@ msgstr "Impostazioni Plugin" msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." msgstr "Cambiando le impostazioni qui sotto, si richiede di riavviare immediatamente il server. Non cambiare le impostazioni durante l'utilizzo." -#: templates/InvenTree/settings/plugin.html:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "Plugin" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "Installa Plugin" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "I plugin esterni non sono abilitati per questa installazione InvenTree" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "Plugin Errore Stack" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "Stage" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "Messaggio" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "Informazioni Plugin" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "Versione" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "Percorso d'installazione" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "Integrato" @@ -8749,32 +9171,34 @@ msgstr "Integrato" msgid "This is a builtin plugin which cannot be disabled" msgstr "Questo è un plugin integrato che non può essere disabilitato" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "Esempio" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "Autore Commit" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "Data d'impegno" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "Commit Hash" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "Commit Messaggio" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "Stato Firma" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "Chiave Di Firma" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "Impostazioni Ordine di Acquisto" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "Codice del progetto" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "Nuovo Codice Del Progetto" @@ -8827,7 +9251,7 @@ msgstr "Impostazioni Ordine Di Reso" msgid "No value set" msgstr "Nessun valore impostato" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "Modifica impostazioni" @@ -8851,50 +9275,103 @@ msgstr "Modifica Impostazioni Utente" msgid "Rate" msgstr "Voto" -#: templates/InvenTree/settings/settings_staff_js.html:64 +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "Modifica" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Elimina" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" msgstr "Nessun codice progetto trovato" -#: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 msgid "Edit Project Code" msgstr "Modifica Codice Progetto" -#: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "Elimina Codice Progetto" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "Nessun parametro di categoria trovato" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "Modifica Template" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "Elimina Template" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "Elimina Modello Parametro Categoria" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "Crea Template Parametro Categoria" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "Crea Parametro Articolo Template" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "Home Page" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "Cerca" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "Rapporti" @@ -8932,11 +9409,11 @@ msgstr "Impostazioni Globali" msgid "Server" msgstr "Server" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "Categorie" @@ -8948,6 +9425,10 @@ msgstr "Impostazioni Ordine di Vendita" msgid "Stock Settings" msgstr "Impostazioni Magazzino" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "Impostazioni Account" @@ -8958,13 +9439,6 @@ msgstr "Impostazioni Account" msgid "Change Password" msgstr "Modifica Password" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "Modifica" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "Nome utente" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "Non verificato" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "Principale" @@ -9204,44 +9679,48 @@ msgstr "Aggiornato" msgid "Update Available" msgstr "Aggiornamento Disponibile" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "Documentazione InvenTree" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "Versione API" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "Versione di Python" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "Versione Django" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "Visualizza codice sorgente su GitHub" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "Crediti" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "App Mobile" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "Invia Segnalazione Bug" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "copia negli appunti" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "copia informazioni versione" @@ -9259,7 +9738,7 @@ msgstr "Conferma l'indirizzo e-mail" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "Si prega di confermare che %(email)s è un indirizzo email per l'utente %(user_display)s." -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Conferma" @@ -9435,30 +9914,30 @@ msgstr "Aggiungi Collegamento" msgid "Add Attachment" msgstr "Aggiungi allegato" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "Elimina allegati selezionati" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "Elimina Allegati" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "Codice a Barre Identificativo" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "È necessario riavviare il server" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "È stata modificata un'impostazione che richiede un riavvio del server" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "Contatta l'amministratore per maggiori informazioni" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "I seguenti articoli sono pochi nel magazzino richiesto" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "Quantità richiesta" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "Clicca il seguente link per visualizzare questo articolo" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "Quantità minima" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "Nessuna Risposta" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "Nessuna risposta dal server InvenTree" @@ -9521,27 +10000,27 @@ msgstr "Errore 400: Richiesta Errata" msgid "API request returned error code 400" msgstr "Richiesta API restituito codice di errore 400" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "Errore 401: Non Autenticato" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "Credenziali di autenticazione non fornite" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "Errore 403 - Permesso negato" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "Non hai i permessi necessari per accedere a questa funzione" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "Errore 404: Risorsa Non Trovata" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "La risorsa richiesta non può essere localizzata sul server" @@ -9553,19 +10032,27 @@ msgstr "Errore 405: Metodo Non Consentito" msgid "HTTP method not allowed at URL" msgstr "Metodo HTTP non consentito all'URL" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "Errore 408: Timeout" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "Timeout connessione durante la richiesta di dati dal server" #: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 msgid "Unhandled Error Code" msgstr "Codice Di Errore Non Gestito" -#: templates/js/translated/api.js:262 +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "Codice errore" @@ -9573,23 +10060,35 @@ msgstr "Codice errore" msgid "All selected attachments will be deleted" msgstr "Tutti gli allegati selezionati saranno eliminati" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "Elimina Allegati" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "Allegati non trovati" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "Modifica allegato" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "Data di Upload" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "Modifica allegato" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "Cancella allegato" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "Risposta sconosciuta dal server" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "Risposta del server non valida" @@ -9646,7 +10145,7 @@ msgstr "Questo rimuoverà il collegamento al codice a barre associato" msgid "Unlink" msgstr "Scollega" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "Rimuovere l'articolo in magazzino" @@ -9704,743 +10203,839 @@ msgstr "Controlla Nella Posizione" msgid "Barcode does not match a valid location" msgstr "Il codice a barre non corrisponde a una posizione valida" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "Creare un elemento della distinta base" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "Visualizzare i dati" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "Dati" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "Chiudi" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "Scarica il modello di distinta base" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "Distinta base multilivello" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "Includere i dati della distinta base per i sottoassiemi" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "Livelli" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "Selezionare il numero massimo di livelli di distinta base da esportare (0 = tutti i livelli)" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "Includere Articoli Alternativi" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "Includere articoli alternativi nella distinta base esportata" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "Includere i dati dei parametri" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "Includere i dati dei parametri degli articoli nella distinta base esportata" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "Includere i dati delle scorte" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "Includere i dati delle scorte dei pezzi nella distinta base esportata" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "Includere i dati del produttore" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "Includere i dati del produttore delle parti nella distinta base esportata" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "Includere i dati dei fornitori" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "Includere i dati del fornitore di parti nella distinta base esportata" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "Includere i prezzi" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "Includere i prezzi delle parti nella distinta base esportata" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "Rimuovi articolo sostitutivo" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "Seleziona e aggiungi un nuovo articolo sostitutivo utilizzando l'input qui sotto" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "Sei sicuro di voler rimuovere questo collegamento all' articolo sostitutivo?" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "Rimuovi Articolo Sostitutivo" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "Aggiungi Sostitutivo" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "Modifica Elementi Sostitutivi Distinta Base" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "Tutti gli elementi selezionati della Distinta Base saranno eliminati" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "Elimina gli Elementi selezionati della Distinta Base?" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "Carica la Distinta Base per il sotto assemblaggio" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "Sostituti Disponibili" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "Variante stock consentita" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "Sostituti" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "I prezzi Distinta Base sono completi" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "I prezzi Distinta Base sono incompleti" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "Nessun prezzo disponibile" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "Nessuna Scorta Disponibile" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "Include variante e scorte sostitutive" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "Comprende varianti magazzino" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "Comprende le scorte sostitutive" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "Elementi consumabili" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "Convalida elemento Distinta Base" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "Questa linea è stata convalidata" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "Modifica articoli sostitutivi" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "Modifica elemento Distinta Base" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "Cancella elemento Distinta Base" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "Visualizza Distinta Base" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "Nessun elemento trovato in Distinta Base" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "Articolo richiesto" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "Ereditato dalla Distinta Base principale" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "Modifica Ordine di produzione" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "Crea Ordine di Produzione" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "Annulla Ordine Di Produzione" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "Sei sicuro di voler annullare questa produzione?" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "Gli elementi di magazzino è stata assegnata a questo ordine di produzione" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "Ci sono output incompleti rimanenti per questo ordine di produzione" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "L'ordine di produzione è pronto per essere completato" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "Questo ordine di produzione non può essere completato in quanto ci sono output incompleti" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "L'Ordine di Produzione è incompleto" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "Completa l'Ordine di Produzione" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "Il prossimo numero di serie disponibile è" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "Ultimo Numero Di Serie" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "La distinta base contiene articoli tracciabili" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "Gli outputs della produzione devono essere generati singolarmente" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "Gli articoli tracciabili possono avere numeri di serie specificati" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "Inserisci i numeri seriali per generare più output di produzione" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "Crea Output di Produzione" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "Assegna gli elementi di magazzino a questo output di produzione" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" -msgstr "Non assegnare stock all'output di produzione" - #: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" +msgstr "" + +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "Completa output di produzione" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "Cancella output di produzione" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" -msgstr "Sei sicuro di voler annullare l'allocazione degli elementi stock da questa produzione?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" +msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" -msgstr "Non assegnare Elementi Stock" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" +msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "Seleziona Output di produzione" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "Almeno un output di produzione deve essere selezionato" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "Output" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "Completa l'output di produzione" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "Cancella l'output di produzione" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "Nessuna allocazione per l'ordine di produzione trovato" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "Posizione non specificata" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "Completa gli outputs" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "Cancella l'output" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "Nessun output di produzione attivo trovato" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" -msgstr "Scorte Assegnate" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" +msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" -msgstr "Nessun elemento Distinta Base tracciato per questa produzione" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" +msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "Test Completati" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "Nessun test richiesto per questa produzione" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "Modifica allocazione magazzino" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "Elimina posizione giacenza" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "Modifica Posizione" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "Rimuovi Posizione" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "Articoli sostitutivi disponibili" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "Quantità Per" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "Scorte insufficienti disponibili" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "Scorte sufficienti disponibili" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "Produci scorta" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "Ordina scorta" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "Assegna scorta" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "Seleziona Articoli" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "È necessario selezionare almeno un articolo da assegnare" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "Specificare il quantitativo assegnato allo stock" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "Tutti gli articoli assegnati" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "Tutti gli articoli selezionati sono stati completamente assegnati" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "Seleziona la posizione di origine (lascia vuoto per prendere da tutte le posizioni)" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "Assegna gli Elementi Stock all'Ordine di Produzione" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "Nessuna posizione di magazzino corrispondente" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "Nessun elemento corrispondente trovato" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "Assegna Automaticamente Scorte" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "Gli elementi in magazzino saranno automaticamente assegnati a questo ordine di produzione, secondo le linee guida fornite" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "Se viene specificata una posizione, le scorte saranno assegnate solo da quella ubicazione" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "Se lo stock è considerato intercambiabile, sarà assegnato dal primo luogo in cui viene trovato" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" msgstr "Se lo stock sostitutivo è ammesso, sarà utilizzato nel caso in cui lo stock dell'articolo primario non possa essere trovato" -#: templates/js/translated/build.js:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "Assegna Elementi di Magazzino" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "Nessuna produzione corrispondente alla ricerca" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "Seleziona" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "L'ordine di produzione è in ritardo" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "Avanzamento" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "Nessuna informazione utente" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "gruppo" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" -msgstr "Nessun articolo assegnato per" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" +msgstr "Modifica allocazione magazzino" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "Elimina posizione giacenza" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "Modifica Posizione" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "Rimuovi Posizione" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "Parte tracciabile" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "Scorte insufficienti disponibili" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "Scorte sufficienti disponibili" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "Produci scorta" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "Ordina scorta" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "Assegna scorta" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "Aggiungi Produttore" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "Aggiungi Articolo Produttore" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "Modifica Articolo Produttore" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "Aggiungi fornitore" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "Aggiungi fornitore articolo" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "Tutte gli articoli del fornitore selezionati saranno eliminati" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "Cancella Articoli Fornitore" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "Aggiungi nuova Azienda" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "Fornitori articoli" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "Articoli prodotti" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "Nessuna informazione azienda trovata" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "Crea nuovo contatto" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "Modifica contatto" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "Ruolo" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "Nessun contatto trovato" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "Numero di telefono" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "Indirizzo email" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "Elimina contatto" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "Tutti gli articoli del produttore selezionati saranno eliminati" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "Elimina Articoli Produttore" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "Tutti i parametri selezionati saranno cancellati" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "Elimina Parametri" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "Articoli ordinati" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "Elimina articoli produttore" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "Nessun articolo produttore trovato" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "Modello Articolo" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "Articolo assemblato" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "Nessun parametro trovato" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "Modifica parametro" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "Elimina il parametro" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "Modifica parametro" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "Elimina Parametri" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "Elimina articolo fornitore" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "Nessun fornitore trovato" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "Disponibilità" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "Modifica articolo fornitore" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "Elimina articolo fornitore" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "Elimina riduzione di prezzo" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "Modifica Prezzo Limite" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "Nessuna informazione di riduzione di prezzo trovata" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "Ultimo aggiornamento" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "Modifica riduzione di prezzo" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "Cancella riduzione di prezzo" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "vero" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "falso" @@ -10448,89 +11043,89 @@ msgstr "falso" msgid "Select filter" msgstr "Seleziona filtro" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "Stampa Etichette" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "Stampa report" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "Aggiungi nuovo filtro" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "Cancella tutti i filtri" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "Crea filtro" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "Azione Vietata" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "Crea operazione non consentita" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "Operazione di aggiornamento non consentita" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "Operazione di eliminazione non consentita" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "Mostra operazione non consentita" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "Mantieni aperto questo modulo" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "Inserisci un numero valido" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "Esistono errori nel modulo" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "Nessun risultato trovato" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "Ricerca" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "Cancella input" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "Colonna File" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "Nome del campo" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "Seleziona Colonne" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" -msgstr "Seleziona Stampante" - -#: templates/js/translated/label.js:62 -msgid "Export to PDF" -msgstr "Esporta in PDF" - -#: templates/js/translated/label.js:114 -msgid "selected" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "Seleziona Modello Etichetta" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "Nessuna etichetta trovata" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "Etichette inviate alla stampante" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "Annulla" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "Invia" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "Titolo modulo" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "In attesa del server..." -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "Informazioni sull'errore" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "Accetta" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "Caricamento Dati" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "Risposta dal server non valida" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "Dati del modulo mancanti dalla risposta server" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "Errore nel pubblicare i dati del modulo" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "Dati del modulo mancanti di risposta JSON" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "Errore 400: Richiesta Non Valida" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "Il server ha restituito codice di errore 400" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "Errore nella richiesta di dati modulo" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "Nessuna notizia trovata" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "ID" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "Età" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "Notifiche" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "Segna come non letto" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "Segna come letto" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "Nessuna notifica non letta" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "Le notifiche verranno caricate qui" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "Cancella Linea" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "Nessuna linea elementi trovata" @@ -10716,363 +11331,355 @@ msgstr "Modifica linea" msgid "Delete line" msgstr "Cancella linea" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "Attributi Articolo" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "Opzioni Creazione Articolo" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "Opzioni Duplicazione Articolo" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "Aggiungi Categoria Articolo" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "Categoria articolo principale" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "Icona (opzionale) - Esplora tutte le icone disponibili su" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "Crea Categoria Articolo" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "Crea una nuvoa categoria dopo questa" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "Modifica Categoria Articoli" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "Sei sicuro di voler eliminare questa categoria articolo?" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "Sposta nella categoria superiore" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "Elimina categoria" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "Azione articoli in questa categoria" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "Azione per categorie secondarie" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "Crea Articolo" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "Crea un altro articolo dopo questo" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "Articolo creato con successo" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "Modifica l'articolo" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "Articolo modificato" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "Crea Varianti Articolo" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "Articolo Attivo" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "L'articolo non può essere eliminato poiché è attualmente attivo" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "L'eliminazione di questo articolo non è reversibile" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "Tutte le giacenze per questo articolo verranno eliminate" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "Questo articolo verrà eliminato da qualsiasi Fattura dei Materiali" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "Tutte le informazioni del produttore e del fornitore per questo articolo verranno eliminate" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "Cancella Articolo" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "Sei iscritto alle notifiche per questo elemento" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "Hai sottoscritto le notifiche per questo elemento" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "Sottoscrivi le notifiche per questo elemento" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "Hai annullato l'iscrizione alle notifiche per questo elemento" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "La convalida della Distinta Base segnerà ogni voce di riga come valida" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "Convalida la distinta dei materiali" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "Valida Fattura dei Materiali" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "Copia Fattura dei Materiali" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "In esaurimento" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "Nessuno stock disponibile" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "Richieste" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "Unità" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "Parte tracciabile" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "Parte virtuale" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "Parte sottoscritta" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "Parte vendibile" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "Programmare la generazione di un nuovo report inventario." -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "Una volta completato, il report inventario sarà disponibile per il download." -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "Genera Report Inventario" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "Programma report inventario" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "Nessuna informazione sull'inventario disponibile" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "Modifica Voce Inventario" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "Elimina Voce Inventario" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "Nessuna variante trovata" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "Nessun parametro dell'articolo templates trovato" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "Modifica Parametro Articolo Template" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "Ogni parametro che fa riferimento a questo modello verrà eliminato" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "Elimina Parametro Articolo Template" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "Nessun ordine d'acquisto trovato" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "Questo elemento è in ritardo" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "Ricevi linea elemento" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "Elimina relazione tra i componenti" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "Elimina Relazione Articolo" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "Nessun articolo trovato" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "Nessuna categoria" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "Visualizza come elenco" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "Visualizza come griglia" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "Imposta la categoria prodotto per i prodotti selezionati" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "Imposta categoria articolo" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" -msgstr "Seleziona Categoria Articolo" +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "Imposta categoria" -#: templates/js/translated/part.js:2495 -msgid "Category is required" -msgstr "Carica Sotto Categorie" +#: templates/js/translated/part.js:2283 +msgid "parts" +msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "Nessuna categoria" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "Visualizza come elenco" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "Visualizza come griglia" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "Visualizza come struttura ad albero" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "Carica Sotto Categorie" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "Categoria sottoscritta" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "Nessun modello di test corrispondente" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "Modificare il risultato del test" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "Cancellare il risultato del test" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "Questo test è definito per un articolo principale" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "Modifica Modello Risultato Test" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "Elimina Modello Risultato Test" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "Nessuna data specificata" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "La data specificata è nel passato" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "Speculativo" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "Nessuna informazione di pianificazione disponibile per questo prodotto" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "Errore nel recupero delle informazioni di programmazione per questo articolo" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "Quantità Di Scorte Programmate" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "Quantità Massima" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "Livello Minimo Stock" @@ -11080,51 +11687,47 @@ msgstr "Livello Minimo Stock" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "Esempio" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "Il Plugin è stato installato" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "Nessun dato disponibile prezzo limite" msgid "No purchase history data available" msgstr "Nessun dato della cronologia di acquisto disponibile" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "Cronologia Prezzi Acquisto" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "Nessun dato della cronologia di vendita disponibile" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "Cronologia Prezzo Vendita" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "Non sono disponibili dati varianti" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "Variante Articolo" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "Selezione l'ordine di acquisto da duplicare" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "Duplica linee degli elementi" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "Duplica tutte le linee elementi dall'ordine selezionato" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "Duplica Linee Extra" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "Duplica elementi linee extra dall'ordine selezionato" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "Modifica ordine d'acquisto" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "Opzioni Duplicazione" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "Completa Ordine D'Acquisto" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "Contrassegnare questo ordine come completato?" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "Tutti gli elementi della riga sono stati ricevuti" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "Questo ordine ha elementi di riga che non sono stati contrassegnati come ricevuti." -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "Completare questo ordine significa che l'ordine e gli elementi della riga non saranno più modificabili." -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "Annulla Ordine di Acquisto" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "Sei sicuro di voler annullare questo ordine di acquisto?" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "Questo ordine d'acquisto non può essere cancellato" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "Dopo aver effettuato questo ordine, gli elementi della riga non saranno più modificabili." -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "Problema Ordine di Acquisto" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "Deve essere selezionata almeno un articolo acquistabile" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "Quantità da ordinare" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "Nuovo articolo fornitore" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "Nuovo ordine d'acquisto" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "Aggiungi ordine d'acquisto" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "Nessun fornitore articolo corrispondente" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "Nessun ordine di acquisto corrispondente trovato" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "Seleziona Linee Elementi" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "È necessario selezionare almeno una linea elemento" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "Quantità Ricevuta" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "Quantità da ricevere" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "Stato giacenza" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "Aggiungi codice a barre" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "Rimuovi il codice a barre" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "Specifica la posizione" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "Aggiungi codice lotto" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "Aggiungi numeri seriali" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "Seriale" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "Codice ordine" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "Quantità da Ricevere" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "Conferma la ricezione degli elementi" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "Ricevi Elementi Ordine D'Acquisto" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "Scansiona codice a barre" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "Scansiona il codice a barre sull'elemento in arrivo (non deve corrispondere a nessun articolo disponibile esistente)" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "Dati codice a barre non validi" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "L'Ordine è in ritardo" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "Elementi" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "Duplica Linee Elementi" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "Modifica Linee Elementi" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "Cancella Linea Elemento" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "Duplica linea elemento" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "Modifica linea elemento" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "Cancella linea elemento" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "Aggiungi cliente" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "Crea Ordine Di Reso" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "Modifica Ordine Di Reso" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "Cliente non valido" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "Nessun elemento di riga corrispondente" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "Crea Ordine di Vendita" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "Modifica Ordine di Vendita" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "Nessun elemento di magazzino disponibile è stato assegnato a questa spedizione" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "I seguenti elementi in magazzino saranno spediti" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "Completa Spedizione" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "Conferma Spedizione" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "Nessuna spedizione in sospeso trovata" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "Nessun elemento di magazzino disponibile è stato assegnato a questa spedizione" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "Spedizioni Completate" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "Salta" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "Questo ordine ha elementi di riga che non sono stati completati." -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "Annulla Ordine di Vendita" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "Cancellando questo ordine, l'ordine non sarà più modificabile." -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "Crea Nuova Spedizione" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "Non sono state trovati ordini di vendita" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "Modifica spedizione" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "Completa spedizione" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "Elimina spedizione" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "Modifica spedizione" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "Elimina Spedizione" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "Nessuna spedizione corrispondente trovata" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "Riferimento della spedizione" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "Non spedito" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "Tracciamento" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "Fattura" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "Aggiungi Spedizione" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "Conferma l'assegnazione della giacenza" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "Assegna Elementi di Magazzino all'Ordine di Vendita" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "Nessun ordine di vendita trovato" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "Modifica posizione giacenza" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "Conferma Operazione Eliminazione" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "Elimina posizione giacenza" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "Spedito al cliente" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "Nessun posizione specificata" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "Assegna Numeri di Serie" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "Prezzo d'acquisto" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "Calcola il prezzo" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "Non può essere eliminato perché gli elementi sono stati spediti" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "Non può essere eliminato perché gli elementi sono stati assegnati" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "Assegna Numeri di Serie" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "Aggiorna Prezzo Unitario" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "Nessun risultato" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "risultato" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "risultati" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "Minimizza risultati" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "Rimuovi risultati" @@ -11679,686 +12282,726 @@ msgstr "Serializza Elementi di Magazzino" msgid "Confirm Stock Serialization" msgstr "Conferma Serializzazione Magazzino" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "Posizione giacenza principale" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "Modifica Posizione Giacenza" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "Nuova posizione giacenza" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "Crea un'altra posizione dopo questa" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "Posizione magazzino creata" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "Sei sicuro di voler eliminare questa posizione?" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "Sposta nella posizione principale magazzino" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "Elimina Posizione di Giacenza" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "Azione per gli elementi stock in questa posizione magazzino" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "Azione per sotto-ubicazioni" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "Questo articolo non può essere serializzato" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "Inserisci quantità iniziale per questo articolo in giacenza" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "Inserire i numeri di serie per la nuova giacenza (o lasciare vuoto)" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "Elemento di magazzino duplicato" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "Duplica elemento di magazzino" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "Sei sicuro di voler rimuovere questo elemento di magazzino?" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "Cancella Elemento di Magazzino" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "Modifica elemento magazzino" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "Crea un altro oggetto dopo questo" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "Crea nuova allocazione magazzino" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "Creato più elementi stock" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "Trova Numero Di Serie" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "Inserisci numero di serie" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "Inserisci un numero di serie" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "Nessun numero di serie corrispondente" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "Trovati più di un risultato corrispondente" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "Conferma l'assegnazione delle scorte" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "Assegnare la scorta al cliente" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "Attenzione: L'operazione di unione non può essere annullata" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "Alcune informazioni andranno perse durante la fusione degli articoli di magazzino" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "La cronologia delle transazioni di magazzino verrà eliminata per gli articoli uniti" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "Le informazioni sulle parti del fornitore verranno eliminate per gli articoli uniti" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "Confermare l'unione degli articoli di magazzino" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "Unire gli articoli di magazzino" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "Trasferisci giacenza" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "Sposta" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "Conta giacenza" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "Conta" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "Rimuovi giacenza" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "Prendi" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "Aggiungi giacenza" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "Aggiungi" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "Elimina Stock" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "La quantità non può essere regolata per le scorte serializzate" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "Specificare la quantità di magazzino" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "Seleziona Elementi Magazzino" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" -msgstr "Devi selezionare almeno un articolo disponibile" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "Confermare l'adeguamento delle scorte" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "OK" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "FALLITO" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "NESSUN RISULTATO" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "Test OK" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "Aggiungi risultato test" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "Nessun risultato di prova trovato" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "Data del test" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "Modifica del risultato del test" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "Cancellare il risultato del test" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "In produzione" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "Installato nell'elemento stock" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "Assegnato all'ordine di vendita" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "Nessuna giacenza impostata" -#: templates/js/translated/stock.js:1746 +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "Unisce la giacenza" + +#: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "Elimina Stock" + +#: templates/js/translated/stock.js:1923 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1850 +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 msgid "Stock item is in production" msgstr "L'articolo di magazzino è in produzione" -#: templates/js/translated/stock.js:1855 +#: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" msgstr "Articolo di magazzino assegnato all'ordine di vendita" -#: templates/js/translated/stock.js:1858 +#: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" msgstr "Articolo stock assegnato al cliente" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" msgstr "L'articolo di magazzino serializzato è stato assegnato" -#: templates/js/translated/stock.js:1863 +#: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" msgstr "La voce di magazzino è stata completamente assegnata" -#: templates/js/translated/stock.js:1865 +#: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" msgstr "La voce di magazzino è stata parzialmente allocata" -#: templates/js/translated/stock.js:1868 +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "L'elemento stock è stato installato in un altro articolo" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "L'articolo stock è scaduto" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "Articolo in giacenza prossimo alla scadenza" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "L'articolo stock è stato rifiutato" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "L'articolo di magazzino è andato perso" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "Articolo di magazzino distrutto" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "Esaurito" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "Fornitore dell'articolo non specificato" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "Valore Scorte" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "Nessun articolo in magazzino corrispondente alla richiesta" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" -msgstr "Caricare sublocazioni" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" +msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "Dettagli" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "Informazioni sull'articolo non disponibili" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "La posizione non esiste più" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "L'ordine di acquisto non esiste più" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "L'ordine di vendita non esiste più" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "L'ordine di ritorno non esiste più" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "Il cliente non esiste più" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "L'articolo in magazzino non esiste più" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "Aggiunto" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "Rimosso" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "Nessun elemento installato" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "Disinstallare l'articolo di magazzino" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "Selezionare l'articolo di magazzino da disinstallare" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "Installare un altro articolo di magazzino in questo articolo" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "Gli articoli in magazzino possono essere installati solo se soddisfano i seguenti criteri" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "L'articolo di magazzino si collega a un'articolo che è la distinta base di questo articolo di magazzino" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "L'articolo in stock è attualmente disponibile in magazzino" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "L'articolo di magazzino non è già installato in un altro articolo" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "L'articolo di magazzino è tracciato da un codice di lotto o da un numero di serie" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "Selezionare la parte da installare" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "Ha il codice del progetto" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "Stato dell'ordine" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "In Sospeso" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "Assegnato a me" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "Articolo tracciabile" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "Articolo assemblato" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "Ha scorte disponibili" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "Varianti consentite" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "Prezzo" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "Includi sottoallocazioni/posizioni" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "Includi posizioni" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "Includi sottocategorie" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "Sottoscritto" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "E' Serializzato" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "Numero di serie GTE" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "Numero di serie maggiore di o uguale a" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "Numero di serie LTE" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "Numero di serie inferiore di o uguale a" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "Numero di serie" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "Codice Lotto" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "Elementi attivi" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "Mostra stock per gli articoli attivi" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "L'articolo è un assemblato" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "È assegnato" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "L'elemento è stato posizionato" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "Stock disponibile per l'utilizzo" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "Includi elementi in giacenza nelle sottoallocazioni" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "Mostra gli elementi di magazzino che sono esauriti" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "Mostra gli elementi che sono in giacenza" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "In Produzione" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "Mostra gli elementi in produzione" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "Includi Varianti" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "Includi gli articoli stock per le varianti degli articoli" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "Installato" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "Mostra gli elementi stock che sono installati in un altro elemento" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "Mostra elementi che sono stati assegnati a un cliente" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "Stato magazzino" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "Ha codice lotto" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "Monitorato" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "L'articolo stock è monitorato dal codice lotto o dal numero di serie" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "Ha il prezzo d'acquisto" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "Mostra gli articoli di magazzino che hanno un prezzo di acquisto impostato" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "Data di scadenza precedente" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "Data di scadenza successiva" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "Mostra gli elementi in giacenza scaduti" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "Mostra giacenza prossima alla scadenza" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "Test superato" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "Includi Elementi Installati" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "Stato Build" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "Includi articoli nelle sottocategorie" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "Visualizza articoli attivi" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "Stock disponibile" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "Ha IPN" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "L'articolo possiede un part number interno" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "In giacenza" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "Acquistabile" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "Ha voci d'inventario" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "Esporta Dati Tabella" msgid "Select File Format" msgstr "Seleziona Formato File" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "Caricamento dati" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "righe per pagina" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "Mostra tutte le righe" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "Visualizzo" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "a" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "di" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "righe" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "Nessun risultato corrispondente" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "Mostra/nascondi la paginazione" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "Attiva/disattiva" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "Colonne" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "Tutti" @@ -12454,11 +13097,11 @@ msgstr "Mostra Notifiche" msgid "New Notifications" msgstr "Nuove Notifiche" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "Amministratore" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "Esci" @@ -12474,11 +13117,11 @@ msgstr "Mostra tutte le notifiche e la cronologia" msgid "QR data not provided" msgstr "Dati QR non forniti" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "Sei stato disconnesso con successo." -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "Accedi di nuovo" @@ -12617,50 +13260,6 @@ msgstr "Impostazioni e-mail" msgid "Email settings not configured" msgstr "Impostazioni dell'email non configurate" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "Azioni Barcode" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "Opzioni Magazzino" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "Aggiungi alle voci stock selezionate" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "Rimuovi dagli elementi stock selezionati" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "Inventario articoli di magazzino selezionati" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "Sposta gli elementi stock selezionati" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "Unisce gli articoli di magazzino selezionati" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "Unisce la giacenza" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "Ordina articolo selezionato" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "Elimina articoli selezionati" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "Elimina Stock" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "Si" @@ -12669,59 +13268,99 @@ msgstr "Si" msgid "No" msgstr "No" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "Utenti" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "Selezionare quali utenti sono assegnati a questo gruppo" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" -msgstr "Gli utenti seguenti sono membri di più gruppi:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "Informazioni personali" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "Permessi" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "Date Importanti" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "Impostazione autorizzazioni" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "Gruppo" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "Visualizza" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "Autorizzazione a visualizzare gli articoli" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "Autorizzazione ad aggiungere elementi" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "Modificare" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "Permessi per modificare gli elementi" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "Autorizzazione ad eliminare gli elementi" diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po index 880aabe65c..b7802c81fb 100644 --- a/InvenTree/locale/ja/LC_MESSAGES/django.po +++ b/InvenTree/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:54\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "APIエンドポイントが見つかりません" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "ユーザーにこのモデルを表示する権限がありません" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "値がありません" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" -msgstr "指定された値は有効な数値ではありません。" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "指定された値に無効な単位があります" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "指定された値は指定された単位に変換できませんでした" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "エラーの詳細は管理者パネルで確認できます" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "日付を入力する" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "メモ" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "値 '{name}' はパターン形式で表示されません" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "指定された値が必要なパターンと一致しません: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "パスワードを入力してください" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "新しいパスワードを入力してください。" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "パスワードの確認" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "新しいパスワードの確認" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "古いパスワード" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "メールアドレス(確認用)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "メールアドレスの確認" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "毎回同じメールアドレスを入力する必要があります。" -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "指定されたプライマリEメールアドレスは無効です。" -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "指定されたメールドメインは承認されていません。" -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "数量コードが無効です" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "シリアル番号は空です" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "グループ範囲が無効です: {g}" +msgid "Invalid group range: {group}" +msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "グループ範囲 {g} が許可された数量を超えています ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "無効なグループシーケンスです: {g}" +msgid "Invalid group sequence: {group}" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "シリアル番号が見つかりません" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" -msgstr "" +msgstr "この値からHTMLタグを削除" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "接続エラー" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "サーバは無効なステータスコードで応答しました" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "例外が発生しました" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "サーバーが無効なContent-Length値で応答しました" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "画像サイズが大きすぎます" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "画像のダウンロードが最大サイズを超えました" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "リモートサーバーが空のレスポンスを返しました" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "指定されたURLは有効な画像ファイルではありません" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "メールアドレス" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" -msgstr "" +msgstr "プラグインメタデータ" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" -msgstr "" +msgstr "外部プラグインで使用するためのJSONメタデータフィールド" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "ファイルがありません" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "外部リンクが見つかりません。" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "添付ファイル" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "添付ファイルを選択" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "リンク" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "外部 サイト へのリンク" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "コメント:" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "ファイルコメント" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "ユーザー" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "アップロード日時" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "ファイル名は空欄にできません" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "添付ファイルのディレクトリが正しくありません" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "ファイル名に無効な文字'{c}'が含まれています" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "ファイル名に拡張子がありません" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "この名前の貼付ファイルは既に存在します" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "ファイル名の変更に失敗しました" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "無効な選択です" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "お名前" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "説明" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "説明 (オプション)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "親" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "マークダウンメモ (オプション)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "バーコード情報" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "サードパーティ製バーコードデータ" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "有効な数字でなければなりません" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -484,143 +509,155 @@ msgstr "必須の列がありません: {name}" msgid "Duplicate column: '{col}'" msgstr "{col} 列が重複しています。" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "" +msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" -msgstr "" +msgstr "外部画像ファイルのURL" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" +msgstr "外部URLからの画像ダウンロードは許可されていません" + +#: InvenTree/settings.py:819 +msgid "Bulgarian" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:820 msgid "Czech" -msgstr "" +msgstr "チェコ語" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "ドイツ語" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "ギリシャ語" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "英語" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "スペイン語" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "スペイン語(メキシコ)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "フランス語" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "ヘブライ語" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "ヒンディー語" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "ハンガリー語" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "イタリア語" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "日本語" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "韓国語" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "オランダ語" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "ノルウェー語" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "ポーランド語" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "ポルトガル語" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "ポルトガル語 (ブラジル)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "ロシア語" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "スロベニア語" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "スウェーデン語" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "タイ語" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "トルコ語" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "ベトナム語" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "中国語" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "バックグラウンドワーカーのチェックに失敗しました" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "メールアドレスが未設定です" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "InvenTree システムのヘルスチェックに失敗しました" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "処理待ち" @@ -630,8 +667,8 @@ msgstr "設置済" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "完了" @@ -654,10 +691,10 @@ msgstr "返品済" msgid "In Progress" msgstr "処理中" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "発送済み" @@ -689,7 +726,7 @@ msgstr "" msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "在庫商品を作成しました" @@ -745,7 +782,7 @@ msgstr "親アイテムから分割する" msgid "Split child item" msgstr "子項目を分割" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "商品在庫をマージしました" @@ -765,7 +802,7 @@ msgstr "組立注文の出力が完了しました" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "顧客に送信されました" @@ -813,119 +850,165 @@ msgstr "" msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "ユーザー情報を編集" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "パスワードを設定" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" -msgstr "" +msgstr "パスワードが一致しません" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" -msgstr "" +msgstr "パスワードが間違っています" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "システム情報" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "InvenTree について" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "オプション" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" -msgstr "" +msgstr "組立注文" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" +msgstr "組立注文" + +#: build/models.py:115 +msgid "Build order part cannot be changed" msgstr "" -#: build/models.py:111 +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "パーツ" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" -msgstr "" +msgstr "組立状況" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "作成日時" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" -msgstr "" +msgstr "外部リンク" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" -msgstr "" +msgstr "組立優先度" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "組立" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "パーツを割り当てるためにビルドする" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "在庫商品" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "数量" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "在庫商品" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" -msgstr "" +msgstr "シリアル番号" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "ステータス" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "組立ライン" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" -msgstr "" +msgstr "組立を編集" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" -msgstr "" +msgstr "組立をキャンセル" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" -msgstr "" +msgstr "組立を削除" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1766,147 +1864,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "注文必須パーツ" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "パーツの注文" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1914,14 +1971,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "外部URLからの画像ダウンロードを許可する" + +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" -msgstr "" - -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" -msgstr "テンプレート" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "外部URL画像の最大サイズ" #: common/models.py:1163 -msgid "Parts are templates by default" -msgstr "パーツはデフォルトのテンプレートです" - -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" -msgstr "アセンブリ" - -#: common/models.py:1170 -msgid "Parts can be assembled from other components by default" -msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます" - -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" -msgstr "コンポーネント" - -#: common/models.py:1177 -msgid "Parts can be used as sub-components by default" -msgstr "パーツはデフォルトでサブコンポーネントとして使用できます" - -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" -msgstr "購入可能" - -#: common/models.py:1184 -msgid "Parts are purchaseable by default" -msgstr "パーツはデフォルトで購入可能です" - -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "パーツはデフォルトで販売可能です" +#: common/models.py:1164 +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:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" -msgstr "追跡可能" +#: common/models.py:1169 +msgid "Require confirm" +msgstr "" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "" + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "" + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" + +#: common/models.py:1197 +msgid "Automatic Backup" +msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" -msgstr "パーツはデフォルトで追跡可能です" +msgid "Enable automatic backup of database and media files" +msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" +#: common/models.py:1204 +msgid "Auto Backup Interval" msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" -msgstr "" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" +msgstr "テンプレート" -#: common/models.py:1332 -msgid "Internal Prices" -msgstr "" +#: common/models.py:1328 +msgid "Parts are templates by default" +msgstr "パーツはデフォルトのテンプレートです" -#: common/models.py:1333 -msgid "Enable internal prices for parts" -msgstr "" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" +msgstr "アセンブリ" -#: common/models.py:1339 -msgid "Internal Price Override" -msgstr "" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" +msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" -msgstr "" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" +msgstr "コンポーネント" -#: common/models.py:1346 -msgid "Enable label printing" -msgstr "" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" +msgstr "パーツはデフォルトでサブコンポーネントとして使用できます" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" -msgstr "" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" +msgstr "購入可能" -#: common/models.py:1353 -msgid "Label Image DPI" -msgstr "" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" +msgstr "パーツはデフォルトで購入可能です" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" -msgstr "" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "販売可能" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "パーツはデフォルトで販売可能です" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" +msgstr "追跡可能" #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" +msgstr "パーツはデフォルトで追跡可能です" + +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1370 +msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" -msgstr "デバッグモード" - -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1378 -msgid "Default page size for PDF reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1388 -msgid "Enable Test Reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" -msgstr "" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" +msgstr "デバッグモード" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" msgstr "" #: common/models.py:1550 -msgid "Enable SSO on the login pages" +msgid "Default page size for PDF reports" msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" +msgid "Attach Test Reports" msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" -msgstr "" +msgid "Autofill Serial Numbers" +msgstr "シリアル番号を自動入力" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "メールアドレスは必須です" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" -msgstr "" +#: common/models.py:1925 +msgid "Hide inactive parts" +msgstr "非アクティブな部品を非表示" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" -msgstr "" +#: common/models.py:1932 +msgid "Show subscribed parts" +msgstr "購読中の部品を表示" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" -msgstr "" +#: common/models.py:1939 +msgid "Show subscribed categories" +msgstr "購読中のカテゴリを表示" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "メッセージ ID:" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3507,331 +3609,395 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" - -#: company/models.py:119 -msgid "Company address" -msgstr "" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" -msgstr "" +msgstr "連絡先メールアドレス" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "製造元" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "メーカー・パーツ" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "仕入先" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" -msgstr "" +msgstr "顧客" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "サプライヤー・パーツ" @@ -3916,156 +4089,144 @@ msgstr "新しいサプライヤー・パーツを作成" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "新しいサプライヤー・パーツ" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "パーツの注文" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "パーツを削除" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "パーツを削除" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "メーカー・パーツ" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "新しいメーカー・パーツを作成" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "新しいメーカ―・パーツ" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" -msgstr "" +msgstr "メーカー" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "パーツの注文" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "メーカー・パーツの編集" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "メーカー・パーツを削除" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "内部パーツ" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "仕入先" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" -msgstr "" +msgstr "パラメータ" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" -msgstr "" +msgstr "新規パラメータ" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4137,209 +4280,207 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" -msgstr "" +msgstr "在庫商品" #: company/templates/company/supplier_part_sidebar.html:9 msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" -msgstr "" +msgstr "外部ページへのリンク" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "購入金額" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" -msgstr "" +msgstr "割り当てるシリアル番号を入力" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" -msgstr "" +msgstr "キーワード" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" -msgstr "" +msgstr "カテゴリID" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" -msgstr "" +msgstr "カテゴリ名" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "パーツ" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" -msgstr "" +msgstr "パーツカテゴリ" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" -msgstr "" +msgstr "パーツカテゴリ" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "カテゴリ" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" -msgstr "" +msgstr "パーツカテゴリ" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "カテゴリを選択" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,96 +6605,76 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" -msgstr "" +msgstr "このカテゴリの通知を受け取る" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 -msgid "Edit category" -msgstr "" - #: part/templates/part/category.html:60 -msgid "Edit Category" -msgstr "" +msgid "Edit category" +msgstr "カテゴリを編集" -#: part/templates/part/category.html:64 -msgid "Delete category" -msgstr "" +#: part/templates/part/category.html:61 +msgid "Edit Category" +msgstr "カテゴリを編集" #: part/templates/part/category.html:65 +msgid "Delete category" +msgstr "カテゴリを削除" + +#: part/templates/part/category.html:66 msgid "Delete Category" -msgstr "" +msgstr "カテゴリを削除" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" -msgstr "" +msgstr "トップレベルのパーツカテゴリ" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" -msgstr "" +msgstr "サブカテゴリ" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" -msgstr "" +msgstr "パーツ (サブカテゴリを含む)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" -msgstr "" +msgstr "新規パーツを作成" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "新規パーツ" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" -msgstr "" +msgstr "パーツパラメータ" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" -msgstr "" +msgstr "新しいパーツカテゴリを作成" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "新規カテゴリ" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" -msgstr "" +msgstr "パーツをインポート" #: part/templates/part/copy_part.html:10 #, python-format @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" -msgstr "" +msgstr "このパーツの通知を受け取る" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" -msgstr "" +msgstr "シリアル番号で検索" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "在庫" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6987,17 +7111,17 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" #: part/templates/part/prices.html:34 part/templates/part/prices.html:116 msgid "Price Category" -msgstr "" +msgstr "価格カテゴリ" #: part/templates/part/prices.html:35 part/templates/part/prices.html:117 msgid "Minimum" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "在庫切れ" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "アクションが指定されていません" msgid "No matching action found" msgstr "一致するアクションが見つかりませんでした" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,24 +7830,28 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" +msgstr "シリアル番号" + +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" msgstr "" #: report/templates/report/inventree_test_report_base.html:21 @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" -msgstr "" +msgstr "シリアル番号が既に存在します" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" -msgstr "" +msgstr "シリアル番号が大きすぎます" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 -msgid "Part must be salable" +#: stock/serializers.py:713 +msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 +msgid "Part must be salable" +msgstr "パーツは販売可能でなければなりません" + +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "組立" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "期限切れ" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "" +msgstr "購読中のパーツ" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "" +msgstr "購読中のカテゴリ" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "期限切れ在庫" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8584,7 +8996,7 @@ msgstr "" #: templates/InvenTree/settings/category.html:7 msgid "Category Settings" -msgstr "" +msgstr "カテゴリ設定" #: templates/InvenTree/settings/global.html:8 msgid "Server Settings" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,48 +9275,101 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" -msgstr "" +msgstr "カテゴリパラメータテンプレートはありません" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" -msgstr "" +msgstr "カテゴリパラメータテンプレートを編集" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" -msgstr "" +msgstr "カテゴリパラメータテンプレートを削除" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" +msgstr "カテゴリパラメータテンプレートを作成" + +#: templates/InvenTree/settings/settings_staff_js.html:398 +msgid "Create Part Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 -msgid "Create Part Parameter Template" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" msgstr "" #: templates/InvenTree/settings/sidebar.html:6 @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9015,7 +9490,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:110 msgid "Add Email" -msgstr "" +msgstr "メールアドレスを追加" #: templates/InvenTree/settings/user.html:120 msgid "Multifactor" @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9259,7 +9738,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "確認" @@ -9435,30 +9914,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9498,18 +9977,18 @@ msgstr "" #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" -msgstr "" +msgstr "このパーツを表示するには、次のリンクをクリックしてください" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" -msgstr "" +msgstr "最小在庫" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" -msgstr "" +msgstr "在庫がありません" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "" +msgstr "最新のシリアル番号" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" -msgstr "" +msgstr "進捗" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "メーカー・パーツの編集" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "パーツの注文" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11043,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "" +msgstr "パーツカテゴリを追加" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" -msgstr "" +msgstr "パーツカテゴリを作成" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" -msgstr "" +msgstr "カテゴリ作成後に新しいパーツカテゴリーを作成" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" -msgstr "" +msgstr "パーツカテゴリを作成しました" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" -msgstr "" +msgstr "パーツカテゴリを編集" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" -msgstr "" +msgstr "このパーツカテゴリを削除してもよろしいですか?" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" -msgstr "" +msgstr "親カテゴリに移動" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" -msgstr "" +msgstr "パーツカテゴリを削除" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "続けて別のパーツを作る" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" -msgstr "" +msgstr "購読中のパーツ" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" -msgstr "" +msgstr "販売可能パーツ" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 +#: templates/js/translated/part.js:2195 +msgid "Set the part category for the selected parts" +msgstr "選択した部品にパーツカテゴリを設定します" + +#: templates/js/translated/part.js:2200 +msgid "Set Part Category" +msgstr "パーツカテゴリを設定" + +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "カテゴリを設定" + +#: templates/js/translated/part.js:2283 msgid "parts" msgstr "" -#: templates/js/translated/part.js:2276 +#: templates/js/translated/part.js:2379 msgid "No category" -msgstr "" +msgstr "カテゴリがありません" -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2406 +#: templates/js/translated/part.js:2542 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2472 -msgid "Set the part category for the selected parts" -msgstr "" - -#: templates/js/translated/part.js:2477 -msgid "Set Part Category" -msgstr "" - -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" -msgstr "" - -#: templates/js/translated/part.js:2495 -msgid "Category is required" -msgstr "" - -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2640 msgid "No subcategories found" -msgstr "" +msgstr "サブカテゴリがありません" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" -msgstr "" +msgstr "サブカテゴリを読み込み" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" -msgstr "" +msgstr "購読中のカテゴリ" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "" +msgstr "シリアル番号を入力" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "" +msgstr "シリアル番号を入力" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 -msgid "Include subcategories" +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 +msgid "Include subcategories" +msgstr "サブカテゴリを含む" + +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: 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 "シリアル番号" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" -msgstr "" +msgstr "サブカテゴリのパーツを含む" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12610,56 +13253,12 @@ msgstr "" #: templates/stats.html:75 msgid "Email Settings" -msgstr "" +msgstr "メール設定" #: templates/stats.html:78 msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12668,59 +13267,99 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "個人情報" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "許可" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "重要な日付" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "パーミッション設定" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "グループ" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "表示" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "項目を表示する権限" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "項目を追加する権限" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "変更" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "項目を編集する権限" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "項目を削除する権限" diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po index f4ff874d4c..e3bd5d313b 100644 --- a/InvenTree/locale/ko/LC_MESSAGES/django.po +++ b/InvenTree/locale/ko/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:54\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API endpoint 없음" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "이 모델을 볼 수 있는 권한이 없습니다." -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "{original} 을 {unit} 으로 전환할 수 없음." + +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "" - -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "오류 세부 정보는 관리자 패널에서 찾을 수 있습니다." -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "날짜 입력" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "메모" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "" -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "비밀번호를 입력하세요" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "새로운 비밀번호를 입력하세요" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "비밀번호 확인" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "새 비밀번호 확인" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "이전 암호" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "이메일 (다시 입력)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "이메일 주소 확인" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" +msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" +msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" -msgstr "" +msgstr "연결 오류" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" -msgstr "" +msgstr "사진 크기 초과" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" -msgstr "" +msgstr "사진 다운로드 수가 최대치를 초과함." -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "이메일" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" -msgstr "" +msgstr "존재하지 않는 파일" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" -msgstr "" +msgstr "존재하지 않는 외부 링크" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "첨부파일" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "첨부할 파일을 선택하세요" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "링크" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "외부 URL로 링크" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "사용자" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "업로드 날짜" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "파일명은 비워둘 수 없습니다" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "파일명에 허용되지 않은 문자 '{c}'가 포함되어 있습니다" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "같은 이름의 첨부파일이 이미 존재합니다" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "파일 이름 바꾸기 오류" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "이름" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "설명" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "설명 (선택 사항)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" -msgstr "" +msgstr "마크다운 노트 (선택사항)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" -msgstr "" +msgstr "바코드 데이터" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" -msgstr "" +msgstr "제3 자 바코드 데이터" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "바코드 해시" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "유효한 숫자여야 합니다" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -452,7 +477,7 @@ msgstr "" #: InvenTree/serializers.py:445 msgid "Unsupported file type" -msgstr "" +msgstr "지원하지 않는 파일 형식" #: InvenTree/serializers.py:451 msgid "File is too large" @@ -460,169 +485,181 @@ msgstr "파일이 너무 큽니다" #: InvenTree/serializers.py:472 msgid "No columns found in file" -msgstr "" +msgstr "파일에서 발견된 세로열 없음." #: InvenTree/serializers.py:475 msgid "No data rows found in file" -msgstr "" +msgstr "파일에서 발견된 가로열 없음" #: InvenTree/serializers.py:598 msgid "No data rows provided" -msgstr "" +msgstr "데이터 가로열이 제공되지 않음" #: InvenTree/serializers.py:601 msgid "No data columns supplied" -msgstr "" +msgstr "데이터 세로열이 제공되지 않음" #: InvenTree/serializers.py:678 #, python-brace-format msgid "Missing required column: '{name}'" -msgstr "" +msgstr "사라진 필수 세로열: {name}" #: InvenTree/serializers.py:687 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "" +msgstr "URL 주소" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" -msgstr "" +msgstr "원격 이미지 파일의 URL" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" +msgstr "원격 URL 에서 이미지 다운로드가 활성화되지 않음" + +#: InvenTree/settings.py:819 +msgid "Bulgarian" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:820 msgid "Czech" msgstr "체코어" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" -msgstr "" +msgstr "덴마크어" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "독일어" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "그리스어" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "영어" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "스페인어" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "스페인어 (멕시코)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "파르시어/페르시아어" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" -msgstr "" +msgstr "핀란드어" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "프랑스어" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "히브리어" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "힌디어" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "헝가리어" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "이탈리아어" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "일본어" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "한국어" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "네덜란드어" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "노르웨이어" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "폴란드어" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" -msgstr "" +msgstr "포르투갈어" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" -msgstr "" +msgstr "포르투갈어 (브라질)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "러시아어" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" -msgstr "" +msgstr "슬로베니아어" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "스웨덴어" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "태국어" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "터키어" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "베트남어" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "중국어" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "중국어 (간체)" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "중국어 (번체)" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" -msgstr "" +msgstr "Background worker 확인 실패" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" -msgstr "" +msgstr "이메일 백엔드가 구성되지 않음" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" -msgstr "" +msgstr "보류" #: InvenTree/status_codes.py:13 generic/states/tests.py:17 msgid "Placed" @@ -630,10 +667,10 @@ msgstr "" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" -msgstr "" +msgstr "완료" #: InvenTree/status_codes.py:15 InvenTree/status_codes.py:43 #: InvenTree/status_codes.py:150 InvenTree/status_codes.py:173 @@ -643,7 +680,7 @@ msgstr "취소됨" #: InvenTree/status_codes.py:16 InvenTree/status_codes.py:44 #: InvenTree/status_codes.py:71 msgid "Lost" -msgstr "" +msgstr "실패" #: InvenTree/status_codes.py:17 InvenTree/status_codes.py:45 #: InvenTree/status_codes.py:73 @@ -652,22 +689,22 @@ msgstr "" #: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 msgid "In Progress" -msgstr "" +msgstr "진행 중" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "" #: InvenTree/status_codes.py:66 msgid "OK" -msgstr "" +msgstr "확인" #: InvenTree/status_codes.py:67 msgid "Attention needed" -msgstr "" +msgstr "주의 요망" #: InvenTree/status_codes.py:68 msgid "Damaged" @@ -679,31 +716,31 @@ msgstr "파괴됨" #: InvenTree/status_codes.py:70 msgid "Rejected" -msgstr "" +msgstr "거부됨" #: InvenTree/status_codes.py:72 msgid "Quarantined" -msgstr "" +msgstr "격리된 파일" #: InvenTree/status_codes.py:91 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" -msgstr "" +msgstr "재고 항목 생성됨" #: InvenTree/status_codes.py:96 msgid "Edited stock item" -msgstr "" +msgstr "수정된 재고 항목" #: InvenTree/status_codes.py:97 msgid "Assigned serial number" -msgstr "" +msgstr "일련 번호 지정됨" #: InvenTree/status_codes.py:100 msgid "Stock counted" -msgstr "" +msgstr "재고 측정됨" #: InvenTree/status_codes.py:101 msgid "Stock manually added" @@ -715,11 +752,11 @@ msgstr "" #: InvenTree/status_codes.py:105 msgid "Location changed" -msgstr "" +msgstr "위치 변경됨" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "" +msgstr "재고 업데이트 완료" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" @@ -745,7 +782,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "" @@ -765,7 +802,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "" @@ -813,119 +850,165 @@ msgstr "" msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "사용자 정보 수정" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "비밀번호 설정" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "비밀번호가 일치해야 합니다" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "시스템 정보" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "외부 링크" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "수량 값은 0보다 커야 합니다" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "수량" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "일련번호" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "위치" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "상태" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "QR 코드 보기" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1766,147 +1864,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1914,14 +1971,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "{name.title()} 파일" msgid "Select {name} file to upload" msgstr "업로드할 {name} 파일을 선택하세요" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "재시작 필요" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "회사명" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "기본 통화" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "URL에서 다운로드" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "바코드 지원" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" +msgstr "URL에서 다운로드" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" -msgstr "" - -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" -msgstr "구입 가능" - -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "판매 가능" - -#: common/models.py:1191 -msgid "Parts are salable by default" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" +#: common/models.py:1197 +msgid "Automatic Backup" msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" +msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" +#: common/models.py:1204 +msgid "Auto Backup Interval" msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "바코드 지원" + +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1299 +msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" +msgstr "구입 가능" + +#: common/models.py:1349 +msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "판매 가능" + +#: common/models.py:1356 +msgid "Parts are salable by default" msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" -msgstr "디버그 모드" +#: common/models.py:1370 +msgid "Parts are virtual by default" +msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" -msgstr "페이지 크기" - -#: common/models.py:1378 -msgid "Default page size for PDF reports" -msgstr "PDF 보고서 기본 페이지 크기" - -#: common/models.py:1388 -msgid "Enable Test Reports" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" -msgstr "" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" +msgstr "디버그 모드" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" -msgstr "SSO 활성화" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" +msgstr "페이지 크기" #: common/models.py:1550 -msgid "Enable SSO on the login pages" -msgstr "로그인 페이지에서 SSO 활성화" +msgid "Default page size for PDF reports" +msgstr "PDF 보고서 기본 페이지 크기" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" -msgstr "이메일 필요" +msgid "Attach Test Reports" +msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" -msgstr "두 번 보내기" +msgid "Autofill Serial Numbers" +msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "SSO 활성화" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "로그인 페이지에서 SSO 활성화" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "이메일 필요" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" -msgstr "" +msgid "Mail twice" +msgstr "두 번 보내기" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "작성자" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "회사 소개" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "웹사이트" @@ -3507,331 +3609,395 @@ msgstr "웹사이트" msgid "Company website URL" msgstr "회사 웹사이트 URL" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "주소" - -#: company/models.py:119 -msgid "Company address" -msgstr "회사 주소" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "전화번호" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "이메일" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "회사" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "회사 정보 수정" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "회사 수정" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "회사 삭제" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "회사 삭제" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "회사 삭제" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "새 이미지 업로드" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "URL에서 이미지 다운로드" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "고객" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "주소" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "전화번호" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "이미지 업로드" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "이미지 다운로드" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3916,156 +4089,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "삭제" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4244,102 +4392,95 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "신규 고객" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "새 회사" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "너비 [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "높이 [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "바코드" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "이미 사용 중인 바코드입니다" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "데이터" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "이미지 복사" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "이미지 복사" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "부품 명세서" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "일련번호 검색" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "" msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "키" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "API 키" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "단가" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "일련번호" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "일련번호가 이미 존재합니다" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "경고" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "설정" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "메시지" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "버전" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "삭제" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "홈페이지" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "계정 설정" @@ -8958,13 +9439,6 @@ msgstr "계정 설정" msgid "Change Password" msgstr "비밀번호 변경" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "InvenTree 문서" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "API 버전" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "Python 버전" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "Django 버전" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "GitHub에서 코드 보기" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "모바일 앱" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "버전 정보 복사" @@ -9259,7 +9738,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "확인" @@ -9435,30 +9914,30 @@ msgstr "링크 추가" msgid "Add Attachment" msgstr "첨부파일 추가" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "서버 재시작 필요" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "오류 408: 시간 초과" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "선택" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11043,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "취소" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "제출" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "부품 명세서 복사" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "일련번호 찾기" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "일련번호를 입력하세요" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "일련번호를 입력하세요" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "일치하는 일련번호가 없습니다" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "일련번호" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "관리자" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12616,50 +13259,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12668,59 +13267,99 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po index 0af7efebbb..79ed384907 100644 --- a/InvenTree/locale/nl/LC_MESSAGES/django.po +++ b/InvenTree/locale/nl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:54\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API eindpunt niet gevonden" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "Gebruiker heeft geen rechten om dit model te bekijken" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" -msgstr "" +msgstr "Geen waarde opgegeven" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" -msgstr "" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "{original} kon niet worden omgezet naar {unit}" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "Ongeldige hoeveelheid ingegeven" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "Ongeldige hoeveelheid ingegeven ({exc})" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Error details kunnen worden gevonden in het admin scherm" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Voer datum in" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Opmerkingen" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "Waarde '{name}' verschijnt niet in patroonformaat" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Opgegeven waarde komt niet overeen met vereist patroon: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Voer wachtwoord in" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Voer een nieuw wachtwoord in" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Wachtwoord bevestigen" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Nieuw wachtwoord bevestigen" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Oude wachtwoord" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "E-mailadres (opnieuw)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "E-mailadres bevestiging" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Er moet hetzelfde e-mailadres ingevoerd worden." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Het opgegeven primaire e-mailadres is ongeldig." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Het ingevoerde e-maildomein is niet goedgekeurd." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "Registratie is uitgeschakeld." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Ongeldige hoeveelheid ingevoerd" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Leeg serienummer" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Duplicaat serienummer" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Ongeldig groepsbereik: {g}" +msgid "Invalid group range: {group}" +msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "Groepsbereik {g} overschrijdt toegestane hoeveelheid ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Ongeldig groepsbereik: {g}" +msgid "Invalid group sequence: {group}" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Geen serienummers gevonden" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Hoeveelheid van unieke serienummers ({s}) moet overeenkomen met de hoeveelheid ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Verwijder HTML tags van deze waarde" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Verbindingsfout" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Server reageerde met ongeldige statuscode" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Uitzondering opgetreden" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Server reageerde met ongeldige Content-Length waarde" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Afbeeldingsformaat is te groot" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Beelddownload overschrijdt de maximale grootte" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Externe server heeft lege reactie teruggegeven" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "Opgegeven URL is geen geldig afbeeldingsbestand" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "[{site.name}] Log in bij de app" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "Email" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" -msgstr "" +msgstr "Metadata moeten een python dict object zijn" + +#: InvenTree/models.py:85 +msgid "Plugin Metadata" +msgstr "Plugin Metadata" #: InvenTree/models.py:86 -msgid "Plugin Metadata" -msgstr "" - -#: InvenTree/models.py:87 msgid "JSON metadata field, for use by external plugins" -msgstr "" +msgstr "JSON metadata veld, voor gebruik door externe plugins" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Onjuist opgemaakt patroon" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Onbekende opmaaksleutel gespecificeerd" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Vereiste opmaaksleutel ontbreekt" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Referentieveld mag niet leeg zijn" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "Referentie moet overeenkomen met verplicht patroon" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Referentienummer is te groot" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Ontbrekend bestand" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Externe link ontbreekt" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Bijlage" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Bestand als bijlage selecteren" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Link" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Link naar externe URL" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Opmerking" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Bestand opmerking" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Gebruiker" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "uploaddatum" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Bestandsnaam mag niet leeg zijn" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Foute bijlagemap" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Bestandsnaam bevat illegale teken '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Bestandsnaam mist extensie" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Bijlage met deze bestandsnaam bestaat al" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Fout bij hernoemen bestand" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "Dubbele namen kunnen niet bestaan onder hetzelfde bovenliggende object" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Ongeldige keuze" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Naam" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Omschrijving" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Omschrijving (optioneel)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "bovenliggende" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Pad" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" -msgstr "" +msgstr "Markdown notitie (optioneel)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Streepjescode gegevens" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Streepjescode van derden" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Hash van Streepjescode" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Unieke hash van barcode gegevens" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Bestaande barcode gevonden" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Serverfout" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "Er is een fout gelogd door de server." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Moet een geldig nummer zijn" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "Selecteer valuta uit beschikbare opties" @@ -484,143 +509,155 @@ msgstr "Verplichte kolom ontbreekt: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Dubbele kolom: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "URL van extern afbeeldingsbestand" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Afbeeldingen van externe URL downloaden is niet ingeschakeld" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Tsjechisch" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Deens" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Duits" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Grieks" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Engels" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Spaans" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Spaans (Mexicaans)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Farsi / Perzisch" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" -msgstr "" +msgstr "Fins" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Frans" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Hebreeuws" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Hongaars" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Italiaans" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japans" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Koreaans" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Nederlands" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Noors" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Pools" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portugees" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portugees (Braziliaans)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Russisch" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Sloveens" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Zweeds" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Thais" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Turks" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnamees" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Chinees" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "Chinees (vereenvoudigd)" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "Chinees (traditioneel)" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Achtergrondwerker check is gefaald" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "E-mailbackend niet geconfigureerd" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "InvenTree gezondsheidschecks mislukt" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Bezig" @@ -630,8 +667,8 @@ msgstr "Geplaatst" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Voltooid" @@ -654,10 +691,10 @@ msgstr "Retour" msgid "In Progress" msgstr "In Behandeling" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Verzonden" @@ -689,7 +726,7 @@ msgstr "In quarantaine geplaatst" msgid "Legacy stock tracking entry" msgstr "Verouderde volgcode" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Voorraaditem gemaakt" @@ -719,7 +756,7 @@ msgstr "Locatie veranderd" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "" +msgstr "Voorraad bijgewerkt" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" @@ -745,7 +782,7 @@ msgstr "Splits van bovenliggend item" msgid "Split child item" msgstr "Splits onderliggende item" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Samengevoegde voorraadartikelen" @@ -763,9 +800,9 @@ msgstr "Product voltooid" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "" +msgstr "Build order uitvoer afgewezen" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Verbruikt door productieorder" @@ -781,7 +818,7 @@ msgstr "Ontvangen onder verkooporder" msgid "Returned against Return Order" msgstr "Geretourneerd onder retourorder" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Naar klant verzonden" @@ -813,119 +850,165 @@ msgstr "Restitutie" msgid "Reject" msgstr "Afwijzen" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" -msgstr "" +msgstr "Ongeldige fysieke eenheid" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Geen geldige valutacode" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Overschotwaarde mag niet negatief zijn" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Overschot mag niet groter zijn dan 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Ongeldige waarde voor overschot" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Gebruikersgegevens bewerken" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Wachtwoord instellen" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Wachtwoordvelden komen niet overeen" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Onjuist wachtwoord opgegeven" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Systeeminformatie" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Over InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "Productie moet geannuleerd worden voordat het kan worden verwijderd" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "Verbruiksartikelen" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "Optioneel" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "Gevolgd" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "Toegewezen" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Beschikbaar" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Productieorder" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Productieorders" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Ongeldige keuze voor bovenliggende productie" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Productieorderreferentie" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Referentie" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" -msgstr "" +msgstr "Korte beschrijving van de build (optioneel)" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Bovenliggende Productie" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Productieorder waar deze productie aan is toegewezen" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Productieorder waar deze productie aan is toegewezen" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Onderdeel" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Selecteer onderdeel om te produceren" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Verkooporder Referentie" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Verkooporder waar deze productie aan is toegewezen" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Bronlocatie" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Selecteer de locatie waar de voorraad van de productie vandaan moet komen (laat leeg om vanaf elke standaard locatie te nemen)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Bestemmings Locatie" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Selecteer locatie waar de voltooide items zullen worden opgeslagen" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Productiehoeveelheid" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Aantal voorraaditems om te produceren" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Voltooide voorraadartikelen" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Aantal voorraadartikelen die zijn voltooid" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Productiestatus" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Productiestatuscode" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Batchcode" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Batchcode voor deze productieuitvoer" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Aanmaakdatum" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Verwachte opleveringsdatum" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Doeldatum voor productie voltooiing. Productie zal achterstallig zijn na deze datum." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Opleveringsdatum" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "voltooid door" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Uitgegeven door" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Gebruiker die de productieorder heeft gegeven" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Verantwoordelijke" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "Gebruiker of groep verantwoordelijk voor deze bouwopdracht" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Externe Link" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "Bouw prioriteit" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "Prioriteit van deze bouwopdracht" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "Project Code" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "Project code voor deze build order" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Productieorder {build} is voltooid" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "Een productieorder is voltooid" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Geen productie uitvoer opgegeven" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Productie uitvoer is al voltooid" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "Productuitvoer komt niet overeen met de Productieorder" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "Hoeveelheid moet groter zijn dan nul" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" -msgstr "" +msgstr "Hoeveelheid kan niet groter zijn dan aantal" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Productieartikel moet een productieuitvoer specificeren, omdat het hoofdonderdeel gemarkeerd is als traceerbaar" +#: build/models.py:1266 +msgid "Build object" +msgstr "Bouw object" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "Toegewezen hoeveelheid ({q}) mag de beschikbare voorraad ({a}) niet overschrijden" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "Voorraad item is te veel toegewezen" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Toewijzing hoeveelheid moet groter zijn dan nul" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "Hoeveelheid moet 1 zijn voor geserialiseerde voorraad" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Geselecteerd voorraadartikel niet gevonden in stuklijst" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Product" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "Product om onderdelen toe te wijzen" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Voorraadartikel" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Bron voorraadartikel" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Hoeveelheid" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "Vereiste hoeveelheid voor bouwopdracht" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "Productieartikel moet een productieuitvoer specificeren, omdat het hoofdonderdeel gemarkeerd is als traceerbaar" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "Toegewezen hoeveelheid ({q}) mag de beschikbare voorraad ({a}) niet overschrijden" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "Voorraad item is te veel toegewezen" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Toewijzing hoeveelheid moet groter zijn dan nul" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Hoeveelheid moet 1 zijn voor geserialiseerde voorraad" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "Geselecteerde voorraadartikelen komen niet overeen met de BOM-regel" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Voorraadartikel" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Bron voorraadartikel" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Voorraad hoeveelheid toe te wijzen aan productie" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Installeren in" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Bestemming voorraadartikel" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "Productieuitvoer" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "Productieuitvoer komt niet overeen met de bovenliggende productie" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "Uitvoeronderdeel komt niet overeen met productieorderonderdeel" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "Deze productieuitvoer is al voltooid" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "Deze productieuitvoer is niet volledig toegewezen" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "Voer hoeveelheid in voor productie uitvoer" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Geheel getal vereist omdat de stuklijst traceerbare onderdelen bevat" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Serienummers" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "Voer serienummers in voor productieuitvoeren" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "Serienummers automatisch toewijzen" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "Vereiste artikelen automatisch toewijzen met overeenkomende serienummers" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "De volgende serienummers bestaan al of zijn ongeldig" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "Een lijst van productieuitvoeren moet worden verstrekt" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Locatie" -#: build/serializers.py:416 -msgid "Stock location for scrapped outputs" -msgstr "" - #: build/serializers.py:422 -msgid "Discard Allocations" -msgstr "" - -#: build/serializers.py:423 -msgid "Discard any stock allocations for scrapped outputs" -msgstr "" +msgid "Stock location for scrapped outputs" +msgstr "Voorraadlocatie voor geannuleerde outputs" #: build/serializers.py:428 -msgid "Reason for scrapping build output(s)" -msgstr "" +msgid "Discard Allocations" +msgstr "Toewijzingen weggooien" -#: build/serializers.py:489 +#: build/serializers.py:429 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "Verwijder alle voorraadtoewijzingen voor geannuleerde outputs" + +#: build/serializers.py:434 +msgid "Reason for scrapping build output(s)" +msgstr "Reden voor annulering van bouworder(s)" + +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "Locatie van voltooide productieuitvoeren" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Status" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "Incomplete Toewijzing Accepteren" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "Voltooi de uitvoer als de voorraad niet volledig is toegewezen" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "Toegewezen Voorraad Verwijderen" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "Verminder alle voorraad die al is toegewezen aan deze productie" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "Verwijder Incomplete Uitvoeren" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "Verwijder alle productieuitvoeren die niet zijn voltooid" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" -msgstr "" +msgstr "Niet toegestaan" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "Accepteer zoals geconsumeerd onder deze bouwopdracht" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "De-alloceren voordat deze bouwopdracht voltooid wordt" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "Overgealloceerde voorraad" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Hoe wilt u omgaan met extra voorraaditems toegewezen aan de bouworder" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "Sommige voorraadartikelen zijn overalloceerd" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "Accepteer Niet-toegewezen" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Accepteer dat voorraadartikelen niet volledig zijn toegewezen aan deze productieorder" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "Vereiste voorraad is niet volledig toegewezen" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "Accepteer Onvolledig" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "Accepteer dat het vereist aantal productieuitvoeren niet is voltooid" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "Vereiste productiehoeveelheid is voltooid" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "Productieorder heeft onvolledige uitvoeren" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "Stuklijstartikel" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "Productielijn" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "Productieuitvoer" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "Productieuitvoer moet naar dezelfde productie wijzen" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "Bouw lijn-item" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part moet naar hetzelfde onderdeel wijzen als de productieorder" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "Artikel moet op voorraad zijn" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Beschikbare hoeveelheid ({q}) overschreden" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "Productieuitvoer moet worden opgegeven voor de toewijzing van gevolgde onderdelen" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Productieuitvoer kan niet worden gespecificeerd voor de toewijzing van niet gevolgde onderdelen" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "Dit voorraadartikel is al toegewezen aan deze productieoutput" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "Allocaties voor artikelen moeten worden opgegeven" @@ -1515,106 +1613,107 @@ msgstr "Optionele Items" msgid "Allocate optional BOM items to build order" msgstr "Alloceer optionele BOM items om bestelling te bouwen" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "Voorraad vereist voor productieorder" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "Achterstallige Productieorder" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "Productieorder {bo} is nu achterstallig" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" -msgstr "" +msgstr "Miniatuurweergave van onderdeel" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "Barcode acties" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "QR-code weergeven" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "Barcode loskoppelen" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "Koppel Barcode" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "Afdruk acties" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "Print productieorderrapport" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "Productie acties" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Bewerk Productie" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Annuleer Productie" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "Dupliceer Bouw" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "Verwijder Productie" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "Voltooi Productie" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "Productiebeschrijving" @@ -1639,18 +1738,18 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Voorraad is niet volledig toegewezen aan deze productieorder" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "Streefdatum" @@ -1661,47 +1760,46 @@ msgstr "Deze productie was verwacht op %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "Achterstallig" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Voltooid" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "Voltooide Uitvoeren" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "Verkooporder" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Uitgegeven door" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "Prioriteit" @@ -1729,8 +1827,8 @@ msgstr "Voorraadbron" msgid "Stock can be taken from any available location." msgstr "Voorraad kan worden genomen van elke beschikbare locatie." -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "Bestemming" @@ -1742,23 +1840,23 @@ msgstr "Bestemmingslocatie niet opgegeven" msgid "Allocated Parts" msgstr "Toegewezen Onderdelen" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "Batch" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "Gecreëerd" @@ -1766,147 +1864,106 @@ msgstr "Gecreëerd" msgid "No target date set" msgstr "Geen doeldatum ingesteld" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Voltooid" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "Productie niet compleet" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "Onderliggende Productieorders" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "Voorraad toewijzen aan Product" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" -msgstr "Voorraadtoewijzing ongedaan maken" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "Voorraad niet meer toewijzen" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "Voorraad niet meer toewijzen" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "Voorraadtoewijzing ongedaan maken" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "Automatisch voorraad toewijzen aan productie" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "Automatisch Toewijzen" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "Handmatig voorraad toewijzen aan productie" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "Voorraad Toewijzen" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "Vereiste onderdelen bestellen" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "Onderdelen bestellen" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "Niet-gevolgde voorraad is volledig toegewezen aan deze Productieorder" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "Niet-gevolgde voorraad is niet volledig toegewezen aan deze Productieorder" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "Geselecteerde items toewijzen" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "Deze Productieorder heeft geen bijbehorende niet-gevolgde BOM-artikelen" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "Onvolledige Productieuitvoeren" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "Nieuwe productieuitvoer aanmaken" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "Nieuwe Productieuitvoer" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "Uitvoer Acties" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "Voltooi geselecteerde productieuitvoeren" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "Voltooi uitvoeren" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "Voltooi geselecteerde productieuitvoeren" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "Verwijder uitvoeren" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" -msgstr "" +msgstr "Verbruikte voorraad" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "Voltooide Productieuitvoeren" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Bijlagen" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "Productie notities" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "Toewijzing Voltooid" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" -msgstr "Alle niet gevolgde voorraadartikelen zijn toegewezen" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "Alle regels zijn volledig toegewezen" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "Nieuwe Productieorder" @@ -1914,18 +1971,14 @@ msgstr "Nieuwe Productieorder" msgid "Build Order Details" msgstr "Productieorderdetails" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "Onvolledige Productieuitvoeren" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "Voltooide Uitvoeren" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" -msgstr "" +msgstr "Niet-ondersteunde bestandsindeling: {fmt}" #: common/files.py:65 msgid "Error reading file (invalid encoding)" @@ -1960,1494 +2013,1543 @@ msgstr "{name.title()} Bestand" msgid "Select {name} file to upload" msgstr "Kies {name} bestand om te uploaden" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "Bijgewerkt" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" -msgstr "" +msgstr "Tijdstempel van laatste update" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" -msgstr "" +msgstr "Unieke projectcode" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" -msgstr "" +msgstr "Projectbeschrijving" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig)" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "Instellingswaarde" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "Gekozen waarde is geen geldige optie" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "Waarde moet een booleaanse waarde zijn" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "Waarde moet een geheel getal zijn" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "Sleutelreeks moet uniek zijn" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "Geen groep" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." -msgstr "" +msgstr "Een leeg domein is niet toegestaan." -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" -msgstr "" +msgstr "Ongeldige domeinnaam: {domain}" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "Geen plug-in gevonden" + +#: common/models.py:1068 msgid "Restart required" msgstr "Opnieuw opstarten vereist" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "Een instelling is gewijzigd waarvoor een herstart van de server vereist is" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "ID Serverinstantie" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "Stringbeschrijving voor de server instantie" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "Gebruik de instantie naam" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "Gebruik de naam van de instantie in de titelbalk" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "Tonen `over` beperken" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" -msgstr "" +msgstr "Toon de `over` modal alleen aan superusers" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Bedrijfsnaam" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "Interne bedrijfsnaam" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "Basis-URL" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "Basis URL voor serverinstantie" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Standaard Valuta" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" +msgstr "Selecteer basisvaluta voor de berekening van prijzen" + +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "Download van URL" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "Download van afbeeldingen en bestanden vanaf een externe URL toestaan" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "Download limiet" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "Maximale downloadgrootte voor externe afbeelding" - -#: common/models.py:998 -msgid "User-agent used to download from URL" +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "Boomstructuur Diepte" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 msgid "days" msgstr "dagen" -#: common/models.py:1032 +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Download van URL" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Download van afbeeldingen en bestanden vanaf een externe URL toestaan" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "Download limiet" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "Maximale downloadgrootte voor externe afbeelding" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "User-agent gebruikt om te downloaden van URL" + +#: common/models.py:1164 +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "Sta toe om de user-agent te overschrijven die gebruikt wordt om afbeeldingen en bestanden van externe URL te downloaden (laat leeg voor de standaard)" + +#: common/models.py:1169 +msgid "Require confirm" +msgstr "Bevestiging vereist" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "Vereis expliciete bevestiging van de gebruiker voor bepaalde actie." + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "Boomstructuur Diepte" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "Standaard diepte voor treeview. Diepere niveaus kunnen geladen worden wanneer ze nodig zijn." + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "Interval voor update" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "Hoe vaak te controleren op updates (nul om uit te schakelen)" + +#: common/models.py:1197 msgid "Automatic Backup" -msgstr "" +msgstr "Automatische backup" -#: common/models.py:1033 +#: common/models.py:1198 msgid "Enable automatic backup of database and media files" -msgstr "" +msgstr "Automatische back-up van database- en mediabestanden inschakelen" -#: common/models.py:1039 +#: common/models.py:1204 msgid "Auto Backup Interval" -msgstr "" +msgstr "Automatische backup interval" -#: common/models.py:1040 +#: common/models.py:1205 msgid "Specify number of days between automated backup events" -msgstr "" +msgstr "Geef het aantal dagen op tussen geautomatiseerde backup" -#: common/models.py:1050 +#: common/models.py:1215 msgid "Task Deletion Interval" -msgstr "" +msgstr "Interval Taak Verwijderen" -#: common/models.py:1051 +#: common/models.py:1216 msgid "Background task results will be deleted after specified number of days" msgstr "Resultaten van achtergrondtaken worden verwijderd na het opgegeven aantal dagen" -#: common/models.py:1061 +#: common/models.py:1226 msgid "Error Log Deletion Interval" -msgstr "" +msgstr "Error Log Verwijderings Interval" -#: common/models.py:1062 +#: common/models.py:1227 msgid "Error logs will be deleted after specified number of days" msgstr "Resultaten van achtergrondtaken worden verwijderd na het opgegeven aantal dagen" -#: common/models.py:1072 +#: common/models.py:1237 msgid "Notification Deletion Interval" -msgstr "" +msgstr "Interval Verwijderen Notificatie" -#: common/models.py:1073 +#: common/models.py:1238 msgid "User notifications will be deleted after specified number of days" -msgstr "" +msgstr "Meldingen van gebruikers worden verwijderd na het opgegeven aantal dagen" -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Streepjescodeondersteuning" -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "Streepjescodescanner ondersteuning inschakelen" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" -#: common/models.py:1090 +#: common/models.py:1255 msgid "Barcode Input Delay" -msgstr "" +msgstr "Barcode Invoer Vertraging" -#: common/models.py:1091 +#: common/models.py:1256 msgid "Barcode input processing delay time" -msgstr "" +msgstr "Barcode invoerverwerking vertraging" -#: common/models.py:1101 +#: common/models.py:1266 msgid "Barcode Webcam Support" msgstr "Barcode Webcam Ondersteuning" -#: common/models.py:1102 +#: common/models.py:1267 msgid "Allow barcode scanning via webcam in browser" msgstr "Barcode via webcam scannen in browser toestaan" -#: common/models.py:1108 +#: common/models.py:1273 msgid "Part Revisions" -msgstr "" +msgstr "Herzieningen onderdeel" -#: common/models.py:1109 +#: common/models.py:1274 msgid "Enable revision field for Part" -msgstr "" +msgstr "Revisieveld voor onderdeel inschakelen" -#: common/models.py:1115 +#: common/models.py:1280 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:1116 +#: common/models.py:1281 msgid "Regular expression pattern for matching Part IPN" msgstr "Regulier expressiepatroon voor het overeenkomende Onderdeel IPN" -#: common/models.py:1120 +#: common/models.py:1285 msgid "Allow Duplicate IPN" msgstr "Duplicaat IPN toestaan" -#: common/models.py:1121 +#: common/models.py:1286 msgid "Allow multiple parts to share the same IPN" msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken" -#: common/models.py:1127 +#: common/models.py:1292 msgid "Allow Editing IPN" msgstr "Bewerken IPN toestaan" -#: common/models.py:1128 +#: common/models.py:1293 msgid "Allow changing the IPN value while editing a part" msgstr "Sta het wijzigen van de IPN toe tijdens het bewerken van een onderdeel" -#: common/models.py:1134 +#: common/models.py:1299 msgid "Copy Part BOM Data" msgstr "Kopieer Onderdeel Stuklijstgegevens" -#: common/models.py:1135 +#: common/models.py:1300 msgid "Copy BOM data by default when duplicating a part" msgstr "Kopieer standaard stuklijstgegevens bij het dupliceren van een onderdeel" -#: common/models.py:1141 +#: common/models.py:1306 msgid "Copy Part Parameter Data" msgstr "Kopieer Onderdeel Parametergegevens" -#: common/models.py:1142 +#: common/models.py:1307 msgid "Copy parameter data by default when duplicating a part" msgstr "Parametergegevens standaard kopiëren bij het dupliceren van een onderdeel" -#: common/models.py:1148 +#: common/models.py:1313 msgid "Copy Part Test Data" msgstr "Kopieer Onderdeel Testdata" -#: common/models.py:1149 +#: common/models.py:1314 msgid "Copy test data by default when duplicating a part" msgstr "Testdata standaard kopiëren bij het dupliceren van een onderdeel" -#: common/models.py:1155 +#: common/models.py:1320 msgid "Copy Category Parameter Templates" msgstr "Kopiëer Categorieparameter Sjablonen" -#: common/models.py:1156 +#: common/models.py:1321 msgid "Copy category parameter templates when creating a part" msgstr "Kopieer categorieparameter sjablonen bij het aanmaken van een onderdeel" -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Sjabloon" -#: common/models.py:1163 +#: common/models.py:1328 msgid "Parts are templates by default" msgstr "Onderdelen zijn standaard sjablonen" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Samenstelling" -#: common/models.py:1170 +#: common/models.py:1335 msgid "Parts can be assembled from other components by default" msgstr "Onderdelen kunnen standaard vanuit andere componenten worden samengesteld" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Component" -#: common/models.py:1177 +#: common/models.py:1342 msgid "Parts can be used as sub-components by default" msgstr "Onderdelen kunnen standaard worden gebruikt als subcomponenten" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 +#: common/models.py:1348 part/admin.py:53 part/models.py:981 msgid "Purchaseable" msgstr "Koopbaar" -#: common/models.py:1184 +#: common/models.py:1349 msgid "Parts are purchaseable by default" msgstr "Onderdelen kunnen standaard gekocht worden" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Verkoopbaar" -#: common/models.py:1191 +#: common/models.py:1356 msgid "Parts are salable by default" msgstr "Onderdelen kunnen standaard verkocht worden" -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Volgbaar" -#: common/models.py:1198 +#: common/models.py:1363 msgid "Parts are trackable by default" msgstr "Onderdelen kunnen standaard gevolgd worden" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtueel" -#: common/models.py:1205 +#: common/models.py:1370 msgid "Parts are virtual by default" msgstr "Onderdelen zijn standaard virtueel" -#: common/models.py:1211 +#: common/models.py:1376 msgid "Show Import in Views" msgstr "Toon Import in Weergaven" -#: common/models.py:1212 +#: common/models.py:1377 msgid "Display the import wizard in some part views" msgstr "Toon de importwizard in sommige onderdelenweergaven" -#: common/models.py:1218 +#: common/models.py:1383 msgid "Show related parts" msgstr "Verwante onderdelen tonen" -#: common/models.py:1219 +#: common/models.py:1384 msgid "Display related parts for a part" msgstr "Verwante onderdelen voor een onderdeel tonen" -#: common/models.py:1225 +#: common/models.py:1390 msgid "Initial Stock Data" -msgstr "" +msgstr "Initiële voorraadgegevens" -#: common/models.py:1226 +#: common/models.py:1391 msgid "Allow creation of initial stock when adding a new part" -msgstr "" +msgstr "Aanmaken van eerste voorraad toestaan bij het toevoegen van een nieuw onderdeel" -#: common/models.py:1232 templates/js/translated/part.js:108 +#: common/models.py:1397 templates/js/translated/part.js:107 msgid "Initial Supplier Data" -msgstr "" +msgstr "Initiële leveranciergegevens" -#: common/models.py:1233 +#: common/models.py:1398 msgid "Allow creation of initial supplier data when adding a new part" -msgstr "" +msgstr "Aanmaken van eerste leveranciersgegevens toestaan bij het toevoegen van een nieuw onderdeel" -#: common/models.py:1239 +#: common/models.py:1404 msgid "Part Name Display Format" msgstr "Onderdelennaam Weergaveopmaak" -#: common/models.py:1240 +#: common/models.py:1405 msgid "Format to display the part name" msgstr "Opmaak om de onderdeelnaam weer te geven" -#: common/models.py:1247 +#: common/models.py:1412 msgid "Part Category Default Icon" -msgstr "" +msgstr "Standaardicoon voor onderdeel catagorie" -#: common/models.py:1248 +#: common/models.py:1413 msgid "Part category default icon (empty means no icon)" -msgstr "" +msgstr "Standaardicoon voor onderdeel catagorie (leeg betekent geen pictogram)" -#: common/models.py:1253 +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "Forceer Parameter Eenheden" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "Als er eenheden worden opgegeven, moeten parameterwaarden overeenkomen met de opgegeven eenheden" + +#: common/models.py:1425 msgid "Minimum Pricing Decimal Places" -msgstr "" +msgstr "Minimaal aantal prijs decimalen" -#: common/models.py:1254 +#: common/models.py:1426 msgid "Minimum number of decimal places to display when rendering pricing data" -msgstr "" +msgstr "Minimaal aantal decimalen om weer te geven bij het weergeven van prijsgegevens" -#: common/models.py:1264 +#: common/models.py:1436 msgid "Maximum Pricing Decimal Places" -msgstr "" +msgstr "Maximum prijs decimalen" -#: common/models.py:1265 +#: common/models.py:1437 msgid "Maximum number of decimal places to display when rendering pricing data" -msgstr "" +msgstr "Maximum aantal decimalen om weer te geven bij het weergeven van prijsgegevens" -#: common/models.py:1275 +#: common/models.py:1447 msgid "Use Supplier Pricing" -msgstr "" +msgstr "Gebruik leveranciersprijzen" -#: common/models.py:1276 +#: common/models.py:1448 msgid "Include supplier price breaks in overall pricing calculations" -msgstr "" +msgstr "Prijsvoordelen leveranciers opnemen in de totale prijsberekening" -#: common/models.py:1282 +#: common/models.py:1454 msgid "Purchase History Override" -msgstr "" +msgstr "Aankoopgeschiedenis overschrijven" -#: common/models.py:1283 +#: common/models.py:1455 msgid "Historical purchase order pricing overrides supplier price breaks" -msgstr "" +msgstr "Historische order prijzen overschrijven de prijzen van de leverancier" -#: common/models.py:1289 +#: common/models.py:1461 msgid "Use Stock Item Pricing" -msgstr "" +msgstr "Gebruik voorraaditem prijzen" -#: common/models.py:1290 +#: common/models.py:1462 msgid "Use pricing from manually entered stock data for pricing calculations" -msgstr "" +msgstr "Gebruik prijzen van handmatig ingevoerde voorraadgegevens voor prijsberekeningen" -#: common/models.py:1296 +#: common/models.py:1468 msgid "Stock Item Pricing Age" -msgstr "" +msgstr "Voorraad artikelprijs leeftijd" -#: common/models.py:1297 +#: common/models.py:1469 msgid "Exclude stock items older than this number of days from pricing calculations" -msgstr "" +msgstr "Voorraaditems ouder dan dit aantal dagen uitsluiten van prijsberekeningen" -#: common/models.py:1307 +#: common/models.py:1479 msgid "Use Variant Pricing" -msgstr "" +msgstr "Gebruik variantprijzen" -#: common/models.py:1308 +#: common/models.py:1480 msgid "Include variant pricing in overall pricing calculations" -msgstr "" +msgstr "Variantenprijzen opnemen in de totale prijsberekening" -#: common/models.py:1314 +#: common/models.py:1486 msgid "Active Variants Only" -msgstr "" +msgstr "Alleen actieve varianten" -#: common/models.py:1315 +#: common/models.py:1487 msgid "Only use active variant parts for calculating variant pricing" -msgstr "" +msgstr "Gebruik alleen actieve variantonderdelen voor het berekenen van variantprijzen" -#: common/models.py:1321 +#: common/models.py:1493 msgid "Pricing Rebuild Interval" -msgstr "" +msgstr "Prijzen Herbouw interval" -#: common/models.py:1322 +#: common/models.py:1494 msgid "Number of days before part pricing is automatically updated" -msgstr "" +msgstr "Aantal dagen voordat de prijzen voor onderdelen automatisch worden bijgewerkt" -#: common/models.py:1332 +#: common/models.py:1504 msgid "Internal Prices" msgstr "Interne Prijzen" -#: common/models.py:1333 +#: common/models.py:1505 msgid "Enable internal prices for parts" msgstr "Inschakelen van interne prijzen voor onderdelen" -#: common/models.py:1339 +#: common/models.py:1511 msgid "Internal Price Override" -msgstr "" +msgstr "Interne prijs overschrijven" -#: common/models.py:1340 +#: common/models.py:1512 msgid "If available, internal prices override price range calculations" -msgstr "" +msgstr "Indien beschikbaar, interne prijzen overschrijven berekeningen van prijsbereik" -#: common/models.py:1346 +#: common/models.py:1518 msgid "Enable label printing" msgstr "Printen van labels Inschakelen" -#: common/models.py:1347 +#: common/models.py:1519 msgid "Enable label printing from the web interface" msgstr "Printen van labels via de webinterface inschakelen" -#: common/models.py:1353 +#: common/models.py:1525 msgid "Label Image DPI" msgstr "Label Afbeelding DPI" -#: common/models.py:1354 +#: common/models.py:1526 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "DPI resolutie bij het genereren van afbeelginsbestanden voor label printer plugins" -#: common/models.py:1363 +#: common/models.py:1535 msgid "Enable Reports" msgstr "Activeer Rapportages" -#: common/models.py:1364 +#: common/models.py:1536 msgid "Enable generation of reports" msgstr "Activeer het genereren van rapporten" -#: common/models.py:1370 templates/stats.html:25 +#: common/models.py:1542 templates/stats.html:25 msgid "Debug Mode" msgstr "Foutopsporingsmodus" -#: common/models.py:1371 +#: common/models.py:1543 msgid "Generate reports in debug mode (HTML output)" msgstr "Rapporten genereren in debug modus (HTML uitvoer)" -#: common/models.py:1377 +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 msgid "Page Size" msgstr "Paginagrootte" -#: common/models.py:1378 +#: common/models.py:1550 msgid "Default page size for PDF reports" msgstr "Standaard paginagrootte voor PDF rapporten" -#: common/models.py:1388 +#: common/models.py:1556 msgid "Enable Test Reports" msgstr "Activeer Testrapporten" -#: common/models.py:1389 +#: common/models.py:1557 msgid "Enable generation of test reports" msgstr "Activeer het genereren van testrapporten" -#: common/models.py:1395 +#: common/models.py:1563 msgid "Attach Test Reports" msgstr "Testrapporten Toevoegen" -#: common/models.py:1396 +#: common/models.py:1564 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Bij het afdrukken van een Testrapport, voeg een kopie van het Testrapport toe aan het bijbehorende Voorraadartikel" -#: common/models.py:1402 +#: common/models.py:1570 msgid "Globally Unique Serials" -msgstr "" +msgstr "Globaal unieke serienummers" -#: common/models.py:1403 +#: common/models.py:1571 msgid "Serial numbers for stock items must be globally unique" -msgstr "" +msgstr "Serienummers voor voorraaditems moeten globaal uniek zijn" -#: common/models.py:1409 +#: common/models.py:1577 msgid "Autofill Serial Numbers" -msgstr "" +msgstr "Serienummers automatisch invullen" -#: common/models.py:1410 +#: common/models.py:1578 msgid "Autofill serial numbers in forms" -msgstr "" +msgstr "Automatisch invullen van serienummer in formulieren" -#: common/models.py:1416 +#: common/models.py:1584 msgid "Delete Depleted Stock" -msgstr "" +msgstr "Verwijder uitgeputte voorraad" -#: common/models.py:1417 +#: common/models.py:1585 msgid "Determines default behaviour when a stock item is depleted" -msgstr "" +msgstr "Bepaalt standaard gedrag wanneer een voorraaditem is uitgeput" -#: common/models.py:1423 +#: common/models.py:1591 msgid "Batch Code Template" msgstr "Batchcode Sjabloon" -#: common/models.py:1424 +#: common/models.py:1592 msgid "Template for generating default batch codes for stock items" msgstr "Sjabloon voor het genereren van standaard batchcodes voor voorraadartikelen" -#: common/models.py:1429 +#: common/models.py:1597 msgid "Stock Expiry" msgstr "Verlopen Voorraad" -#: common/models.py:1430 +#: common/models.py:1598 msgid "Enable stock expiry functionality" msgstr "Verlopen voorraad functionaliteit inschakelen" -#: common/models.py:1436 +#: common/models.py:1604 msgid "Sell Expired Stock" msgstr "Verkoop Verlopen Voorraad" -#: common/models.py:1437 +#: common/models.py:1605 msgid "Allow sale of expired stock" msgstr "Verkoop verlopen voorraad toestaan" -#: common/models.py:1443 +#: common/models.py:1611 msgid "Stock Stale Time" msgstr "Voorraad Vervaltijd" -#: common/models.py:1444 +#: common/models.py:1612 msgid "Number of days stock items are considered stale before expiring" msgstr "Aantal dagen voordat voorraadartikelen als verouderd worden beschouwd voor ze verlopen" -#: common/models.py:1451 +#: common/models.py:1619 msgid "Build Expired Stock" msgstr "Produceer Verlopen Voorraad" -#: common/models.py:1452 +#: common/models.py:1620 msgid "Allow building with expired stock" msgstr "Sta productie met verlopen voorraad toe" -#: common/models.py:1458 +#: common/models.py:1626 msgid "Stock Ownership Control" msgstr "Voorraad Eigenaar Toezicht" -#: common/models.py:1459 +#: common/models.py:1627 msgid "Enable ownership control over stock locations and items" msgstr "Eigenaarstoezicht over voorraadlocaties en items inschakelen" -#: common/models.py:1465 +#: common/models.py:1633 msgid "Stock Location Default Icon" -msgstr "" +msgstr "Voorraadlocatie standaard icoon" -#: common/models.py:1466 +#: common/models.py:1634 msgid "Stock location default icon (empty means no icon)" -msgstr "" +msgstr "Standaard locatie pictogram (leeg betekent geen icoon)" -#: common/models.py:1471 +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "Geïnstalleerde voorraad items weergeven" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "Geïnstalleerde voorraadartikelen in voorraadtabellen tonen" + +#: common/models.py:1646 msgid "Build Order Reference Pattern" msgstr "Productieorderreferentiepatroon" -#: common/models.py:1472 +#: common/models.py:1647 msgid "Required pattern for generating Build Order reference field" msgstr "Vereist patroon voor het genereren van het Bouworderreferentieveld" -#: common/models.py:1478 +#: common/models.py:1653 msgid "Enable Return Orders" -msgstr "" +msgstr "Retourorders inschakelen" -#: common/models.py:1479 +#: common/models.py:1654 msgid "Enable return order functionality in the user interface" -msgstr "" +msgstr "Retourorder functionaliteit inschakelen in de gebruikersinterface" -#: common/models.py:1485 +#: common/models.py:1660 msgid "Return Order Reference Pattern" -msgstr "" +msgstr "Retourorder referentie patroon" -#: common/models.py:1486 +#: common/models.py:1661 msgid "Required pattern for generating Return Order reference field" -msgstr "" +msgstr "Verplicht patroon voor het genereren van Retour Order referentie veld" -#: common/models.py:1492 +#: common/models.py:1667 msgid "Edit Completed Return Orders" -msgstr "" +msgstr "Bewerk voltooide retourorders" -#: common/models.py:1493 +#: common/models.py:1668 msgid "Allow editing of return orders after they have been completed" -msgstr "" +msgstr "Bewerken van retourorders toestaan nadat deze zijn voltooid" -#: common/models.py:1499 +#: common/models.py:1674 msgid "Sales Order Reference Pattern" msgstr "Verkooporderreferentiepatroon" -#: common/models.py:1500 +#: common/models.py:1675 msgid "Required pattern for generating Sales Order reference field" msgstr "Vereist patroon voor het genereren van het Verkooporderreferentieveld" -#: common/models.py:1506 +#: common/models.py:1681 msgid "Sales Order Default Shipment" msgstr "Standaard Verzending Verkooporder" -#: common/models.py:1507 +#: common/models.py:1682 msgid "Enable creation of default shipment with sales orders" msgstr "Aanmaken standaard verzending bij verkooporders inschakelen" -#: common/models.py:1513 +#: common/models.py:1688 msgid "Edit Completed Sales Orders" -msgstr "" +msgstr "Bewerk voltooide verkooporders" -#: common/models.py:1514 +#: common/models.py:1689 msgid "Allow editing of sales orders after they have been shipped or completed" -msgstr "" +msgstr "Bewerken van verkooporders toestaan nadat deze zijn verzonden of voltooid" -#: common/models.py:1520 +#: common/models.py:1695 msgid "Purchase Order Reference Pattern" msgstr "Inkooporderreferentiepatroon" -#: common/models.py:1521 +#: common/models.py:1696 msgid "Required pattern for generating Purchase Order reference field" msgstr "Vereist patroon voor het genereren van het Inkooporderreferentieveld" -#: common/models.py:1527 +#: common/models.py:1702 msgid "Edit Completed Purchase Orders" -msgstr "" +msgstr "Bewerk voltooide verkooporders" -#: common/models.py:1528 +#: common/models.py:1703 msgid "Allow editing of purchase orders after they have been shipped or completed" -msgstr "" +msgstr "Bewerken van inkooporders toestaan nadat deze zijn verzonden of voltooid" -#: common/models.py:1535 +#: common/models.py:1710 msgid "Enable password forgot" msgstr "Wachtwoord vergeten functie inschakelen" -#: common/models.py:1536 +#: common/models.py:1711 msgid "Enable password forgot function on the login pages" msgstr "Wachtwoord vergeten functie inschakelen op de inlogpagina's" -#: common/models.py:1542 +#: common/models.py:1717 msgid "Enable registration" msgstr "Registratie inschakelen" -#: common/models.py:1543 +#: common/models.py:1718 msgid "Enable self-registration for users on the login pages" msgstr "Zelfregistratie voor gebruikers op de inlogpagina's inschakelen" -#: common/models.py:1549 +#: common/models.py:1724 msgid "Enable SSO" msgstr "SSO inschakelen" -#: common/models.py:1550 +#: common/models.py:1725 msgid "Enable SSO on the login pages" msgstr "SSO inschakelen op de inlogpagina's" -#: common/models.py:1556 +#: common/models.py:1731 msgid "Enable SSO registration" -msgstr "" +msgstr "Schakel gebruikersregistratie met SSO in" -#: common/models.py:1557 +#: common/models.py:1732 msgid "Enable self-registration via SSO for users on the login pages" -msgstr "" +msgstr "Zelfregistratie voor gebruikers middels SSO op de inlogpagina's inschakelen" -#: common/models.py:1563 +#: common/models.py:1738 msgid "Email required" msgstr "E-mailadres verplicht" -#: common/models.py:1564 +#: common/models.py:1739 msgid "Require user to supply mail on signup" msgstr "Vereis gebruiker om e-mailadres te registreren bij aanmelding" -#: common/models.py:1570 +#: common/models.py:1745 msgid "Auto-fill SSO users" -msgstr "" +msgstr "SSO-gebruikers automatisch invullen" -#: common/models.py:1571 +#: common/models.py:1746 msgid "Automatically fill out user-details from SSO account-data" -msgstr "" +msgstr "Gebruikersdetails van SSO-accountgegevens automatisch invullen" -#: common/models.py:1577 +#: common/models.py:1752 msgid "Mail twice" msgstr "E-mail twee keer" -#: common/models.py:1578 +#: common/models.py:1753 msgid "On signup ask users twice for their mail" -msgstr "" +msgstr "Bij inschrijving gebruikers twee keer om hun e-mail vragen" -#: common/models.py:1584 +#: common/models.py:1759 msgid "Password twice" -msgstr "" +msgstr "Wachtwoord tweemaal" -#: common/models.py:1585 +#: common/models.py:1760 msgid "On signup ask users twice for their password" msgstr "Laat gebruikers twee keer om hun wachtwoord vragen tijdens het aanmelden" -#: common/models.py:1591 +#: common/models.py:1766 msgid "Allowed domains" -msgstr "" +msgstr "Toegestane domeinen" -#: common/models.py:1592 +#: common/models.py:1767 msgid "Restrict signup to certain domains (comma-separated, starting with @)" -msgstr "" +msgstr "Inschrijven beperken tot bepaalde domeinen (komma-gescheiden, beginnend met @)" -#: common/models.py:1598 +#: common/models.py:1773 msgid "Group on signup" msgstr "Groep bij aanmelding" -#: common/models.py:1599 +#: common/models.py:1774 msgid "Group to which new users are assigned on registration" msgstr "Groep waaraan nieuwe gebruikers worden toegewezen bij registratie" -#: common/models.py:1605 +#: common/models.py:1780 msgid "Enforce MFA" msgstr "MFA afdwingen" -#: common/models.py:1606 +#: common/models.py:1781 msgid "Users must use multifactor security." msgstr "Gebruikers moeten multifactor-beveiliging gebruiken." -#: common/models.py:1612 +#: common/models.py:1787 msgid "Check plugins on startup" msgstr "Controleer plugins bij het opstarten" -#: common/models.py:1613 +#: common/models.py:1788 msgid "Check that all plugins are installed on startup - enable in container environments" -msgstr "" +msgstr "Controleer of alle plug-ins zijn geïnstalleerd bij het opstarten - inschakelen in container-omgevingen" -#: common/models.py:1620 -msgid "Check plugin signatures" -msgstr "" - -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "" - -#: common/models.py:1628 +#: common/models.py:1796 msgid "Enable URL integration" msgstr "Activeer URL-integratie" -#: common/models.py:1629 +#: common/models.py:1797 msgid "Enable plugins to add URL routes" -msgstr "" +msgstr "Plugins toestaan om URL-routes toe te voegen" -#: common/models.py:1636 +#: common/models.py:1804 msgid "Enable navigation integration" -msgstr "" +msgstr "Activeer navigatie integratie" -#: common/models.py:1637 +#: common/models.py:1805 msgid "Enable plugins to integrate into navigation" -msgstr "" +msgstr "Plugins toestaan om te integreren in navigatie" -#: common/models.py:1644 +#: common/models.py:1812 msgid "Enable app integration" -msgstr "" +msgstr "Activeer app integratie" -#: common/models.py:1645 +#: common/models.py:1813 msgid "Enable plugins to add apps" -msgstr "" +msgstr "Activeer plug-ins om apps toe te voegen" -#: common/models.py:1652 +#: common/models.py:1820 msgid "Enable schedule integration" -msgstr "" +msgstr "Activeer planning integratie" -#: common/models.py:1653 +#: common/models.py:1821 msgid "Enable plugins to run scheduled tasks" -msgstr "" +msgstr "Activeer plugin om periodiek taken uit te voeren" -#: common/models.py:1660 +#: common/models.py:1828 msgid "Enable event integration" -msgstr "" +msgstr "Activeer evenement integratie" -#: common/models.py:1661 +#: common/models.py:1829 msgid "Enable plugins to respond to internal events" -msgstr "" +msgstr "Activeer plugin om op interne evenementen te reageren" -#: common/models.py:1668 +#: common/models.py:1836 msgid "Enable project codes" -msgstr "" +msgstr "Activeer project codes" -#: common/models.py:1669 +#: common/models.py:1837 msgid "Enable project codes for tracking projects" -msgstr "" +msgstr "Activeer project codes voor het bijhouden van projecten" -#: common/models.py:1675 +#: common/models.py:1843 msgid "Stocktake Functionality" -msgstr "" +msgstr "Voorraadcontrole functionaliteit" -#: common/models.py:1676 +#: common/models.py:1844 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" -msgstr "" +msgstr "Schakel voorraadfunctionaliteit in voor het opnemen van voorraadniveaus en het berekenen van voorraadwaarde" -#: common/models.py:1682 +#: common/models.py:1850 +msgid "Exclude External Locations" +msgstr "Externe locaties uitsluiten" + +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "Voorraadartikelen op externe locaties uitsluiten van voorraadberekeningen" + +#: common/models.py:1857 msgid "Automatic Stocktake Period" -msgstr "" +msgstr "Automatische Voorraadcontrole Periode" -#: common/models.py:1683 +#: common/models.py:1858 msgid "Number of days between automatic stocktake recording (set to zero to disable)" -msgstr "" +msgstr "Aantal dagen tussen automatische voorraadopname (ingesteld op nul om uit te schakelen)" -#: common/models.py:1692 +#: common/models.py:1867 msgid "Report Deletion Interval" -msgstr "" +msgstr "Rapport Verwijdering Interval" -#: common/models.py:1693 +#: common/models.py:1868 msgid "Stocktake reports will be deleted after specified number of days" -msgstr "" +msgstr "Voorraadrapportage zal worden verwijderd na het opgegeven aantal dagen" -#: common/models.py:1710 common/models.py:2147 +#: common/models.py:1885 common/models.py:2314 msgid "Settings key (must be unique - case insensitive" msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" -msgstr "" - -#: common/models.py:1751 +#: common/models.py:1925 msgid "Hide inactive parts" -msgstr "" +msgstr "Inactieve Onderdelen Verbergen" -#: common/models.py:1752 +#: common/models.py:1926 msgid "Hide inactive parts in results displayed on the homepage" -msgstr "" +msgstr "Verberg inactieve delen bij items op de homepage" -#: common/models.py:1758 +#: common/models.py:1932 msgid "Show subscribed parts" -msgstr "" +msgstr "Toon geabonneerde onderdelen" -#: common/models.py:1759 +#: common/models.py:1933 msgid "Show subscribed parts on the homepage" -msgstr "" +msgstr "Toon geabonneerde onderdelen op de homepage" -#: common/models.py:1765 +#: common/models.py:1939 msgid "Show subscribed categories" -msgstr "" +msgstr "Toon geabonneerde categorieën" -#: common/models.py:1766 +#: common/models.py:1940 msgid "Show subscribed part categories on the homepage" -msgstr "" +msgstr "Toon geabonneerde onderdeel categorieën op de startpagina" -#: common/models.py:1772 +#: common/models.py:1946 msgid "Show latest parts" msgstr "Toon laatste onderdelen" -#: common/models.py:1773 +#: common/models.py:1947 msgid "Show latest parts on the homepage" msgstr "Toon laatste onderdelen op de startpagina" -#: common/models.py:1779 -msgid "Recent Part Count" -msgstr "Recente Voorraadtelling" - -#: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "" - -#: common/models.py:1786 +#: common/models.py:1953 msgid "Show unvalidated BOMs" -msgstr "" +msgstr "Toon niet-gevalideerde BOM's" -#: common/models.py:1787 +#: common/models.py:1954 msgid "Show BOMs that await validation on the homepage" -msgstr "" +msgstr "Laat BOMs zien die wachten op validatie op de startpagina" -#: common/models.py:1793 +#: common/models.py:1960 msgid "Show recent stock changes" msgstr "Toon recente voorraadwijzigingen" -#: common/models.py:1794 +#: common/models.py:1961 msgid "Show recently changed stock items on the homepage" msgstr "Toon recent aangepaste voorraadartikelen op de startpagina" -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "Recente Voorraadtelling" - -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "" - -#: common/models.py:1807 +#: common/models.py:1967 msgid "Show low stock" msgstr "Toon lage voorraad" -#: common/models.py:1808 +#: common/models.py:1968 msgid "Show low stock items on the homepage" msgstr "Toon lage voorraad van artikelen op de startpagina" -#: common/models.py:1814 +#: common/models.py:1974 msgid "Show depleted stock" msgstr "Toon lege voorraad" -#: common/models.py:1815 +#: common/models.py:1975 msgid "Show depleted stock items on the homepage" msgstr "Toon lege voorraad van artikelen op de startpagina" -#: common/models.py:1821 +#: common/models.py:1981 msgid "Show needed stock" msgstr "Toon benodigde voorraad" -#: common/models.py:1822 +#: common/models.py:1982 msgid "Show stock items needed for builds on the homepage" msgstr "Toon benodigde voorraad van artikelen voor productie op de startpagina" -#: common/models.py:1828 +#: common/models.py:1988 msgid "Show expired stock" msgstr "Toon verlopen voorraad" -#: common/models.py:1829 +#: common/models.py:1989 msgid "Show expired stock items on the homepage" msgstr "Toon verlopen voorraad van artikelen op de startpagina" -#: common/models.py:1835 +#: common/models.py:1995 msgid "Show stale stock" msgstr "Toon verouderde voorraad" -#: common/models.py:1836 +#: common/models.py:1996 msgid "Show stale stock items on the homepage" msgstr "Toon verouderde voorraad van artikelen op de startpagina" -#: common/models.py:1842 +#: common/models.py:2002 msgid "Show pending builds" msgstr "Toon openstaande producties" -#: common/models.py:1843 +#: common/models.py:2003 msgid "Show pending builds on the homepage" msgstr "Toon openstaande producties op de startpagina" -#: common/models.py:1849 +#: common/models.py:2009 msgid "Show overdue builds" msgstr "Toon achterstallige productie" -#: common/models.py:1850 +#: common/models.py:2010 msgid "Show overdue builds on the homepage" msgstr "Toon achterstallige producties op de startpagina" -#: common/models.py:1856 +#: common/models.py:2016 msgid "Show outstanding POs" msgstr "Toon uitstaande PO's" -#: common/models.py:1857 +#: common/models.py:2017 msgid "Show outstanding POs on the homepage" msgstr "Toon uitstaande PO's op de startpagina" -#: common/models.py:1863 +#: common/models.py:2023 msgid "Show overdue POs" msgstr "Toon achterstallige PO's" -#: common/models.py:1864 +#: common/models.py:2024 msgid "Show overdue POs on the homepage" msgstr "Toon achterstallige PO's op de startpagina" -#: common/models.py:1870 +#: common/models.py:2030 msgid "Show outstanding SOs" msgstr "Toon uitstaande SO's" -#: common/models.py:1871 +#: common/models.py:2031 msgid "Show outstanding SOs on the homepage" msgstr "Toon uitstaande SO's op de startpagina" -#: common/models.py:1877 +#: common/models.py:2037 msgid "Show overdue SOs" msgstr "Toon achterstallige SO's" -#: common/models.py:1878 +#: common/models.py:2038 msgid "Show overdue SOs on the homepage" msgstr "Toon achterstallige SO's op de startpagina" -#: common/models.py:1884 +#: common/models.py:2044 msgid "Show pending SO shipments" -msgstr "" +msgstr "Toon in behandeling SO verzendingen" -#: common/models.py:1885 +#: common/models.py:2045 msgid "Show pending SO shipments on the homepage" -msgstr "" +msgstr "Toon in behandeling zijnde SO verzendingen op de startpagina" -#: common/models.py:1891 +#: common/models.py:2051 msgid "Show News" -msgstr "" +msgstr "Nieuws tonen" -#: common/models.py:1892 +#: common/models.py:2052 msgid "Show news on the homepage" -msgstr "" +msgstr "Nieuws op de startpagina weergeven" -#: common/models.py:1898 +#: common/models.py:2058 msgid "Inline label display" -msgstr "" +msgstr "Inline labelweergave" -#: common/models.py:1899 +#: common/models.py:2059 msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" +msgstr "PDF-labels in browser weergeven, in plaats van als bestand te downloaden" -#: common/models.py:1905 +#: common/models.py:2065 msgid "Default label printer" -msgstr "" +msgstr "Standaard label printer" -#: common/models.py:1906 +#: common/models.py:2066 msgid "Configure which label printer should be selected by default" -msgstr "" +msgstr "Instellen welke label printer standaard moet worden geselecteerd" -#: common/models.py:1912 +#: common/models.py:2072 msgid "Inline report display" -msgstr "" +msgstr "Inline rapport weergeven" -#: common/models.py:1913 +#: common/models.py:2073 msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" +msgstr "PDF-rapporten in de browser weergeven, in plaats van als bestand te downloaden" -#: common/models.py:1919 +#: common/models.py:2079 msgid "Search Parts" msgstr "Zoek Onderdelen" -#: common/models.py:1920 +#: common/models.py:2080 msgid "Display parts in search preview window" -msgstr "" +msgstr "Onderdelen weergeven in zoekscherm" -#: common/models.py:1926 +#: common/models.py:2086 msgid "Search Supplier Parts" -msgstr "" +msgstr "Zoek leveranciersonderdelen" -#: common/models.py:1927 +#: common/models.py:2087 msgid "Display supplier parts in search preview window" -msgstr "" +msgstr "Leveranciersonderdelen weergeven in zoekscherm" -#: common/models.py:1933 +#: common/models.py:2093 msgid "Search Manufacturer Parts" -msgstr "" +msgstr "Fabrikant onderdelen zoeken" -#: common/models.py:1934 +#: common/models.py:2094 msgid "Display manufacturer parts in search preview window" -msgstr "" +msgstr "Fabrikant onderdelen weergeven in zoekscherm" -#: common/models.py:1940 +#: common/models.py:2100 msgid "Hide Inactive Parts" msgstr "Inactieve Onderdelen Verbergen" -#: common/models.py:1941 +#: common/models.py:2101 msgid "Excluded inactive parts from search preview window" -msgstr "" +msgstr "Inactieve verkooporders weglaten in het zoekvenster" -#: common/models.py:1947 +#: common/models.py:2107 msgid "Search Categories" -msgstr "" +msgstr "Zoek categorieën" -#: common/models.py:1948 +#: common/models.py:2108 msgid "Display part categories in search preview window" -msgstr "" +msgstr "Toon onderdeelcategorieën in zoekvenster" -#: common/models.py:1954 +#: common/models.py:2114 msgid "Search Stock" msgstr "Zoek in Voorraad" -#: common/models.py:1955 +#: common/models.py:2115 msgid "Display stock items in search preview window" -msgstr "" +msgstr "Toon voorraad items in zoekvenster" -#: common/models.py:1961 +#: common/models.py:2121 msgid "Hide Unavailable Stock Items" -msgstr "" +msgstr "Verberg niet beschikbare voorraad items" -#: common/models.py:1962 +#: common/models.py:2122 msgid "Exclude stock items which are not available from the search preview window" -msgstr "" +msgstr "Voorraadartikelen die niet beschikbaar zijn niet in het zoekvenster weergeven" -#: common/models.py:1968 +#: common/models.py:2128 msgid "Search Locations" -msgstr "" +msgstr "Locaties doorzoeken" -#: common/models.py:1969 +#: common/models.py:2129 msgid "Display stock locations in search preview window" -msgstr "" +msgstr "Toon voorraadlocaties in zoekvenster" -#: common/models.py:1975 +#: common/models.py:2135 msgid "Search Companies" -msgstr "" +msgstr "Zoek bedrijven" -#: common/models.py:1976 +#: common/models.py:2136 msgid "Display companies in search preview window" -msgstr "" +msgstr "Toon bedrijven in zoekvenster" -#: common/models.py:1982 +#: common/models.py:2142 msgid "Search Build Orders" -msgstr "" +msgstr "Zoek Bouworders" -#: common/models.py:1983 +#: common/models.py:2143 msgid "Display build orders in search preview window" -msgstr "" +msgstr "Toon bouworders in zoekvenster" -#: common/models.py:1989 +#: common/models.py:2149 msgid "Search Purchase Orders" msgstr "Inkooporders Zoeken" -#: common/models.py:1990 +#: common/models.py:2150 msgid "Display purchase orders in search preview window" msgstr "Toon inkooporders in het zoekvenster" -#: common/models.py:1996 +#: common/models.py:2156 msgid "Exclude Inactive Purchase Orders" msgstr "Inactieve Inkooporders Weglaten" -#: common/models.py:1997 +#: common/models.py:2157 msgid "Exclude inactive purchase orders from search preview window" msgstr "Inactieve inkooporders weglaten in het zoekvenster" -#: common/models.py:2003 +#: common/models.py:2163 msgid "Search Sales Orders" msgstr "Verkooporders zoeken" -#: common/models.py:2004 +#: common/models.py:2164 msgid "Display sales orders in search preview window" msgstr "Toon verkooporders in het zoekvenster" -#: common/models.py:2010 +#: common/models.py:2170 msgid "Exclude Inactive Sales Orders" msgstr "Inactieve Verkooporders Weglaten" -#: common/models.py:2011 +#: common/models.py:2171 msgid "Exclude inactive sales orders from search preview window" msgstr "Inactieve verkooporders weglaten in het zoekvenster" -#: common/models.py:2017 +#: common/models.py:2177 msgid "Search Return Orders" -msgstr "" +msgstr "Zoek retourorders" -#: common/models.py:2018 +#: common/models.py:2178 msgid "Display return orders in search preview window" -msgstr "" +msgstr "Toon bouworders in zoekvenster" -#: common/models.py:2024 +#: common/models.py:2184 msgid "Exclude Inactive Return Orders" -msgstr "" +msgstr "Inactieve retourbestellingen weglaten" -#: common/models.py:2025 +#: common/models.py:2185 msgid "Exclude inactive return orders from search preview window" -msgstr "" +msgstr "Inactieve retourorders uitsluiten in zoekvenster" -#: common/models.py:2031 +#: common/models.py:2191 msgid "Search Preview Results" -msgstr "" +msgstr "Zoekvoorbeeld resultaten" -#: common/models.py:2032 +#: common/models.py:2192 msgid "Number of results to show in each section of the search preview window" -msgstr "" +msgstr "Aantal resultaten om weer te geven in elk gedeelte van het zoekvenster" -#: common/models.py:2038 +#: common/models.py:2198 msgid "Regex Search" -msgstr "" +msgstr "Regex zoeken" -#: common/models.py:2039 +#: common/models.py:2199 msgid "Enable regular expressions in search queries" -msgstr "" +msgstr "Schakel reguliere expressies in zoekopdrachten in" -#: common/models.py:2045 +#: common/models.py:2205 msgid "Whole Word Search" -msgstr "" +msgstr "Hele woorden zoeken" -#: common/models.py:2046 +#: common/models.py:2206 msgid "Search queries return results for whole word matches" -msgstr "" +msgstr "Zoekopdrachten geven resultaat voor hele woord overeenkomsten" -#: common/models.py:2052 +#: common/models.py:2212 msgid "Show Quantity in Forms" -msgstr "" +msgstr "Toon hoeveelheid in formulieren" -#: common/models.py:2053 +#: common/models.py:2213 msgid "Display available part quantity in some forms" -msgstr "" +msgstr "Hoeveelheid beschikbare onderdelen in sommige formulieren weergeven" -#: common/models.py:2059 +#: common/models.py:2219 msgid "Escape Key Closes Forms" -msgstr "" +msgstr "Escape-toets sluit formulieren" -#: common/models.py:2060 +#: common/models.py:2220 msgid "Use the escape key to close modal forms" -msgstr "" +msgstr "Gebruik de Escape-toets om standaard formulieren te sluiten" -#: common/models.py:2066 +#: common/models.py:2226 msgid "Fixed Navbar" -msgstr "" +msgstr "Vaste navigatiebalk" -#: common/models.py:2067 +#: common/models.py:2227 msgid "The navbar position is fixed to the top of the screen" -msgstr "" +msgstr "De navigatiebalk positie is gefixeerd aan de bovenkant van het scherm" -#: common/models.py:2073 +#: common/models.py:2233 msgid "Date Format" -msgstr "" +msgstr "Datum formaat" -#: common/models.py:2074 +#: common/models.py:2234 msgid "Preferred format for displaying dates" -msgstr "" +msgstr "Voorkeursindeling voor weergave van datums" -#: common/models.py:2088 part/templates/part/detail.html:41 +#: common/models.py:2248 part/templates/part/detail.html:41 msgid "Part Scheduling" -msgstr "" +msgstr "Onderdeel planning" -#: common/models.py:2089 +#: common/models.py:2249 msgid "Display part scheduling information" -msgstr "" +msgstr "Toon informatie voor het plannen van onderdelen" -#: common/models.py:2095 part/templates/part/detail.html:62 +#: common/models.py:2255 part/templates/part/detail.html:62 msgid "Part Stocktake" -msgstr "" +msgstr "Voorraadcontrole onderdeel" -#: common/models.py:2096 +#: common/models.py:2256 msgid "Display part stocktake information (if stocktake functionality is enabled)" -msgstr "" +msgstr "Toon voorraadinformatie van onderdeel (als voorraadcontrole functionaliteit is ingeschakeld)" -#: common/models.py:2102 +#: common/models.py:2262 msgid "Table String Length" -msgstr "" +msgstr "Tabel tekenreekslengte" -#: common/models.py:2103 +#: common/models.py:2263 msgid "Maximimum length limit for strings displayed in table views" -msgstr "" +msgstr "Limiet tekenreeksen voor het weergegeven in tabelweergaven" -#: common/models.py:2112 +#: common/models.py:2272 msgid "Default part label template" -msgstr "" +msgstr "Standaard sjabloon product onderdeel" -#: common/models.py:2113 +#: common/models.py:2273 msgid "The part label template to be automatically selected" -msgstr "" +msgstr "Het onderdeellabelsjabloon dat automatisch wordt geselecteerd" -#: common/models.py:2121 +#: common/models.py:2281 msgid "Default stock item template" -msgstr "" +msgstr "Standaard sjabloon voorraad onderdeel" -#: common/models.py:2122 +#: common/models.py:2282 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2130 +#: common/models.py:2290 msgid "Default stock location label template" -msgstr "" +msgstr "Standaard label van voorraadlocatie" -#: common/models.py:2131 +#: common/models.py:2291 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2177 +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Prijs" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" -msgstr "" +msgstr "Eindpunt" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" -msgstr "" +msgstr "Eindpunt waarop deze webhook wordt ontvangen" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" -msgstr "" +msgstr "Naam van deze webhook" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "Actief" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" -msgstr "" +msgstr "Is deze webhook actief" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "Token" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "Token voor toegang" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "Geheim" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" -msgstr "" +msgstr "Gedeeld geheim voor HMAC" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "Bericht ID" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "Host" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "Koptekst" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "Koptekst van dit bericht" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "Berichtinhoud" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "Inhoud van dit bericht" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" -msgstr "" +msgstr "Aan gewerkt" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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 "Afbeelding" -#: common/models.py:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "Een nieuwe order is aangemaakt en aan u toegewezen" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "Artikelen zijn ontvangen tegen een inkooporder" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3476,9 +3578,9 @@ msgstr "" #: common/views.py:481 msgid "Parts imported" -msgstr "" +msgstr "Geïmporteerde onderdelen" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "Website" @@ -3507,331 +3609,395 @@ msgstr "Website" msgid "Company website URL" msgstr "URL bedrijfswebsite" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Adres" - -#: company/models.py:119 -msgid "Company address" -msgstr "Bedrijfsadres" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Telefoonnummer" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "Telefoonnummer voor contact" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "Email" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "Contact e-mailadres" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Contact" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "Contactpunt" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "Link naar externe bedrijfsinformatie" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "is klant" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "is leverancier" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "is fabrikant" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "Fabriceert dit bedrijf onderdelen?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "Standaardvaluta die gebruikt wordt voor dit bedrijf" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Bedrijf" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basis onderdeel" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "Onderdeel selecteren" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Fabrikant" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Fabrikant selecteren" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "MPN" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "Fabrikant artikel nummer (MPN)" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "URL voor externe link van het fabrikant onderdeel" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "Omschrijving onderdeel fabrikant" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Fabrikant onderdeel" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "Parameternaam" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Waarde" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "Parameterwaarde" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "Eenheden" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "Parameter eenheden" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderdeel" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Leverancier" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "Leverancier selecteren" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "SKU" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "Selecteer fabrikant onderdeel" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "Opmerking" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "basisprijs" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimale kosten (bijv. voorraadkosten)" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "meerdere" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "Order meerdere" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "Beschikbaar" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "Inkooporder aanmaken" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "Bedrijfsinformatie bewerken" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "Bedrijf bewerken" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "Bedrijf verwijderen" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "Bedrijf verwijderen" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3839,76 +4005,83 @@ msgstr "Bedrijf verwijderen" #: report/templates/report/inventree_test_report_base.html:84 #: report/templates/report/inventree_test_report_base.html:163 msgid "Part image" -msgstr "" +msgstr "Afbeelding onderdeel" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Nieuwe afbeelding uploaden" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Afbeelding downloaden van URL" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Klant" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "Gebruik standaard valuta" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Adres" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "Telefoon" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "Afbeelding Uploaden" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "Afbeelding Downloaden" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" -msgstr "" +msgstr "Leveranciersonderdeel" #: company/templates/company/detail.html:19 msgid "Create new supplier part" @@ -3916,156 +4089,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" -msgstr "" +msgstr "Nieuw leveranciers onderdeel" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "Bestel onderdelen" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "Verwijder onderdelen" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "Verwijder Onderdelen" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "Fabrikant onderdelen" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "Maak nieuw fabrikant onderdeel" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "Nieuw fabrikant onderdeel" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "Inkooporders" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "Nieuwe inkooporder aanmaken" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "Nieuwe Inkooporder" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "Verkooporders" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "Nieuwe inkooporder aanmaken" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "Nieuwe Verkooporder" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "Opmerkingen Bedrijf" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "Leverancierslijst" +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "Fabrikanten" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "Order onderdeel" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "Fabrikant onderdeel bewerken" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "Fabrikant onderdeel verwijderen" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "Intern onderdeel" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "Geen fabrikanten informatie beschikbaar" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "Leveranciers" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "Verwijder leveranciersonderdelen" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "Verwijderen" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parameters" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "Nieuwe Parameter" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "Parameter verwijderen" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "Parameter toevoegen" @@ -4137,106 +4280,111 @@ msgstr "Toegewezen Voorraadartikelen" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "Leveranciersonderdeel" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "Order Onderdeel" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" -msgstr "" +msgstr "Bewerk Leveranciers onderdeel" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" -msgstr "" +msgstr "Dupliceer Leveranciers onderdeel" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" -msgstr "" +msgstr "Verwijder leveranciers onderdeel" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "Geen leveranciersinformatie beschikbaar" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "Nieuw voorraadartikel aanmaken" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Nieuw Voorraadartikel" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "Leverancier Onderdelenorders" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "Prijsinformatie" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" -msgstr "" +msgstr "QR-code voor leveranciers onderdelen" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" -msgstr "" +msgstr "Koppel barcode aan leveranciers onderdeel" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" -msgstr "" +msgstr "Beschikbaarheid van onderdeel bijwerken" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "Voorraadartikelen" @@ -4244,102 +4392,95 @@ msgstr "Voorraadartikelen" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "Nieuwe fabrikant" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "Klanten" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "Nieuwe Klant" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "Bedrijven" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "Nieuw Bedrijf" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "Labelnaam" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "Label beschrijving" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "Label" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "Label template bestand" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "Ingeschakeld" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "Label template is ingeschakeld" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "Breedte [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "Label breedte, gespecificeerd in mm" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "Hoogte [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "Label hoogte, gespecificeerd in mm" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "Bestandsnaam Patroon" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "Filters" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "Totaalprijs" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "Inkooporder" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "Link naar externe pagina" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Verwachte datum voor levering van de bestelling. De bestelling wordt achterstallig na deze datum." -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "Aangemaakt Door" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "Gebruiker of groep verantwoordelijk voor deze order" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "Orderreferentie" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "Inkooporder status" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "Bedrijf waar de artikelen van worden besteld" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "Leveranciersreferentie" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "Order referentiecode van leverancier" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "ontvangen door" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "Datum van uitgifte" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "Order uitgegeven op datum" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "Order voltooid op datum" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "Onderdeelleverancier moet overeenkomen met de Inkooporderleverancier" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "Hoeveelheid moet een positief getal zijn" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "Bedrijf waaraan de artikelen worden verkocht" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "Klantreferentie " -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "Klant order referentiecode" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "Verzenddatum" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "verzonden door" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "Order kan niet worden voltooid omdat er geen onderdelen aangewezen zijn" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "Bestelling kan niet worden voltooid omdat er onvolledige verzendingen aanwezig zijn" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "Order kan niet worden voltooid omdat er onvolledige artikelen aanwezig zijn" @@ -4519,398 +4664,398 @@ msgstr "Order kan niet worden voltooid omdat er onvolledige artikelen aanwezig z msgid "Item quantity" msgstr "Hoeveelheid artikelen" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "Artikelregel referentie" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "Artikel notities" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "Context" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "Additionele context voor deze regel" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "Stukprijs" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "Leveranciersonderdeel moet overeenkomen met leverancier" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "verwijderd" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "Order" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "Leveranciersonderdeel" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "Ontvangen" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "Aantal ontvangen artikelen" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Inkoopprijs" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "Aankoopprijs per stuk" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "Waar wil de inkoper dat dit artikel opgeslagen wordt?" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "Virtueel onderdeel kan niet worden toegewezen aan een verkooporder" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "Alleen verkoopbare onderdelen kunnen aan een verkooporder worden toegewezen" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Verkoopprijs" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "Prijs per stuk" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "Verzonden hoeveelheid" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "Datum van verzending" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "Gecontroleerd door" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "Gebruiker die deze zending gecontroleerd heeft" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Zending" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "Zendingsnummer" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "Volgnummer" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "Zending volginformatie" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "Factuurnummer" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "Referentienummer voor bijbehorende factuur" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "Verzending is al verzonden" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "Zending heeft geen toegewezen voorraadartikelen" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "Voorraadartikel is niet toegewezen" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "Kan het voorraadartikel niet toewijzen aan een regel met een ander onderdeel" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "Kan voorraad niet toewijzen aan een regel zonder onderdeel" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Toewijzingshoeveelheid kan niet hoger zijn dan de voorraadhoeveelheid" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "Hoeveelheid moet 1 zijn voor geserialiseerd voorraadartikel" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "Verkooporder komt niet overeen met zending" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "Verzending komt niet overeen met verkooporder" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "Regel" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "Verzendreferentie verkooporder" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "Artikel" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "Selecteer voorraadartikel om toe te wijzen" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "Voer voorraadtoewijzingshoeveelheid in" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "Order kan niet worden geannuleerd" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "Order is niet open" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "Valuta Inkoopprijs" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "Leveranciersonderdeel moet worden gespecificeerd" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "Inkooporder moet worden gespecificeerd" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "De leverancier moet overeenkomen met de inkooporder" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "Inkooporder moet overeenkomen met de leverancier" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "Artikel" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "Artikelregel komt niet overeen met inkooporder" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "Selecteer bestemmingslocatie voor ontvangen artikelen" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "Voer serienummers in voor inkomende voorraadartikelen" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "Streepjescode is al in gebruik" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "Artikelen moeten worden opgegeven" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "Bestemmingslocatie moet worden opgegeven" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "Geleverde streepjescodewaarden moeten uniek zijn" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "Valuta verkoopprijs" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "Geen verzenddetails opgegeven" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "Artikelregel is niet gekoppeld aan deze bestelling" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "Hoeveelheid moet positief zijn" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "Voer serienummers in om toe te wijzen" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "Verzending is al verzonden" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "Zending is niet gekoppeld aan deze bestelling" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "Geen overeenkomst gevonden voor de volgende serienummers" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "De volgende serienummers zijn al toegewezen" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "Achterstallige inkooporder" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "Inkooporder {po} is nu achterstallig" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "Achterstallige Verkooporder" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "Verkooporder {so} is nu achterstallig" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "Print rapport inkooporder" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "Exporteer order naar bestand" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "Order acties" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "Order bewerken" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "Order annuleren" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "Ontvang artikelen" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "Ontvang Artikelen" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "Order markeren als voltooid" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "Order Voltooien" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "Order Referentie" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "Order Beschrijving" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "Order Status" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "Geen leveranciersinformatie beschikbaar" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "Afgeronde artikelen" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "Incompleet" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "Uitgegeven" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "Totale kosten" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "Totale kosten konden niet worden berekend" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Rij verwijderen" @@ -5152,9 +5289,9 @@ msgstr "Inkooporder Artikelen" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "Artikel toevoegen" @@ -5165,30 +5302,25 @@ msgstr "Artikel toevoegen" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "Extra Regels" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "Extra Regel Toevoegen" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "Ontvangen Artikelen" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "Ordernotities" @@ -5197,40 +5329,40 @@ msgstr "Ordernotities" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "Pakbon afdrukken" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "Klantreferentie" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "Print verkooporderrapport" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "Voltooi Verkooporder" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "Deze Verkooporder is niet volledig toegewezen" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "Voltooide Verzendingen" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "Verkoooporder Artikelen" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "Verzendingen in behandeling" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Acties" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "Nieuwe Verzending" @@ -5293,64 +5424,65 @@ msgstr "Nieuwe Verzending" msgid "Match Supplier Parts" msgstr "Leveranciersonderdelen Vergelijken" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "Verkooporder niet gevonden" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "Prijs niet gevonden" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "{part} stukprijs bijgewerkt naar {price}" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "{part} stukprijs bijgewerkt naar {price} en aantal naar {qty}" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" -msgstr "" +msgstr "Onderdeel-id" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" -msgstr "" +msgstr "Onderdeel naam" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" -msgstr "" +msgstr "Onderdeel omschrijving" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "In bestelling" @@ -5383,115 +5515,108 @@ msgstr "In bestelling" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "Toegewezen" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" -msgstr "" +msgstr "Onderdelen" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "Binnenkomende Inkooporder" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "Uitgaande Verkooporder" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "Geproduceerde voorraad door Productieorder" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "Voorraad vereist voor Productieorder" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Standaard locatie" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Totale Voorraad" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "Beschikbare Voorraad" @@ -5499,461 +5624,468 @@ msgstr "Beschikbare Voorraad" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" -msgstr "" +msgstr "Onderdeel Categorie" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" -msgstr "" +msgstr "Onderdeel Categorieën" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "Standaard locatie voor onderdelen in deze categorie" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." -msgstr "" +msgstr "Onderdelen mogen niet rechtstreeks aan een structurele categorie worden toegewezen, maar kunnen worden toegewezen aan subcategorieën." -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "IPN moet overeenkomen met regex-patroon {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" -msgstr "" +msgstr "Onderdeel naam" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" -msgstr "" +msgstr "Onderdeel Categorie" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" -msgstr "" +msgstr "Intern Onderdeelnummer" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" -msgstr "" +msgstr "Standaardleverancier" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" -msgstr "" +msgstr "Eenheden voor dit onderdeel" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" -msgstr "" +msgstr "Onderdeel voor voorraadcontrole" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "Datum" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" -msgstr "" +msgstr "Aantal onderdelen" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "De template van de parameter moet uniek zijn" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "Parameternaam" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "Parameter Template" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "Parameterwaarde" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "Standaard Parameter Waarde" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "Stuklijstartikel" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 +#: part/serializers.py:346 +msgid "No parts selected" +msgstr "Geen onderdelen geselecteerd" + +#: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 msgid "Original Part" msgstr "" -#: part/serializers.py:302 +#: part/serializers.py:384 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy Image" msgstr "Afbeelding kopiëren" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy image from original part" msgstr "Afbeelding kopiëren van het oorspronkelijke onderdeel" -#: part/serializers.py:312 part/templates/part/detail.html:296 +#: part/serializers.py:394 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:312 +#: part/serializers.py:394 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy Parameters" msgstr "Parameters kopiëren" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy parameter data from original part" msgstr "Parameter data kopiëren van het originele onderdeel" -#: part/serializers.py:327 +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:327 +#: part/serializers.py:414 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:343 +#: part/serializers.py:430 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:354 +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "Ongeldige hoeveelheid" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "U heeft geen toestemming om de stuklijst te bewerken." @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "Categorie bewerken" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "Categorie bewerken" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "Categorie verwijderen" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "Categorie verwijderen" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "Onderdeel Parameters" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "Nieuwe Categorie" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "Verkoopordertoewijzingen" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "Een parameter toevoegen" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "Assemblages" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "Productieordertoewijzingen" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "Onderdeelfabrikanten" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "Fabrikantonderdeel verwijderen" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: 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 "Formaat" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "Selecteer bestandsindeling" @@ -6747,158 +6871,158 @@ msgstr "Selecteer bestandsindeling" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "Label afdrukken" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "Voorraad acties" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "Onderdeel kan vanuit andere onderdelen worden samengesteld" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "Onderdeel kan gebruikt worden voor assemblages" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "Toegewezen aan Productieorder" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "Toegewezen aan verkooporders" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "Geen overeenkomende afbeeldingen gevonden" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "Voorraad" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "Prijzen" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "Selecteer afbeelding onderdeel" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "Afbeelding onderdeel bijgewerkt" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "Afbeelding van onderdeel niet gevonden" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "Geen actie gespecificeerd" msgid "No matching action found" msgstr "Geen overeenkomende actie gevonden" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "Geen overeenkomst gevonden voor streepjescodegegevens" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "Overeenkomst gevonden voor streepjescodegegevens" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "Filters inkooporder" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "Verkooporder zoekopdracht filters" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "Stukprijs" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 msgid "Total" msgstr "Totaal" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Serienummer" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Voorraadlocatie" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "Voorraadlocaties" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "Inkooporder Bron" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "Inkooporder voor dit voorraadartikel" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "Bestemming Verkooporder" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "Voorraadartikel is toegewezen aan een verkooporder" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "Artikel is toegewezen aan een verkooporder" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "Artikel is toegewezen aan een productieorder" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "Scan naar Locatie" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "Voorraad tellen" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "Voorraad overzetten" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Product" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "Geen fabrikant geselecteerd" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "Dit voorraadartikel is toegewezen aan Verkooporder" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "Dit voorraadartikel is toegewezen aan Productieorder" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "vorige pagina" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "volgende pagina" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "Geen locatie ingesteld" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 msgid "Location actions" msgstr "Locatie acties" -#: stock/templates/stock/location.html:104 +#: stock/templates/stock/location.html:106 msgid "Edit location" msgstr "Bewerk locatie" -#: stock/templates/stock/location.html:106 +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "Verwijder locatie" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "U staat niet in de lijst van eigenaars van deze locatie. Deze voorraadlocatie kan niet worden bewerkt." -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Sublocaties" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "Maak nieuwe voorraadlocatie" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "Nieuwe Locatie" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "Vereist voor Productieorder" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "Productieorders in Uitvoering" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "Achterstallige Productieorders" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "Openstaande Inkooporders" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "Achterstallige Inkooporders" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "Openstaande Verkooporders" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "Achterstallige Verkooporders" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "Bericht" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "Bericht indienen" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "Inkooporder Instellingen" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Verwijderen" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "Startpagina" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "Verkooporder Instellingen" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9259,7 +9738,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Bevestigen" @@ -9435,30 +9914,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "De volgende onderdelen hebben een lage vereiste voorraad" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "Vereiste Hoeveelheid" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "Sluit" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "Voeg Fabrikantgegevens toe" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "Voeg onderdeelfabrikantgegevens toe aan geëxporteerde stuklijst" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "Geen Voorraad Aanwezig" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "Bewerk Productieorder" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "Maak Productieorder" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "Annuleer Productieorder" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "Weet je zeker dat je de productie wilt annuleren?" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "Voorraadartikelen zijn toegewezen aan deze productieorder" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "Er staat incomplete productie open voor deze productieorder" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "Productieorder is gereed om als voltooid te markeren" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "Productieorder is onvolledig" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "Voltooi Productieoorder" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "De stuklijst bevat traceerbare onderdelen" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "Productieuitvoeren moeten individueel worden gegenereerd" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "Traceerbare onderdelen kunnen een serienummer hebben" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "Voer serienummers in om meerdere enkelvoudige productuitvoeren te genereren" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "Selecteer Productieuitvoeren" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "Voltooi Productieuitvoeren" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "Verwijder Productieuitvoeren" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "Geen productieordertoewijzingen gevonden" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "Locatie is niet opgegeven" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "Voltooi uitvoeren" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "Verwijder uitvoeren" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "Geen actieve productieuitvoeren gevonden" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "Voorraadtoewijzing bewerken" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "Voorraadtoewijzing verwijderen" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "Onvoldoende voorraad beschikbaar" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "Genoeg voorraad beschikbaar" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "Productie voorraad" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "Voorraad order" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "Voorraad toewijzen" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "Onderdelen selecteren" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "Er moet op zijn minst één onderdeel toegewezen worden" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "Specificeer voorraadtoewijzingshoeveelheid" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "Selecteer bron locatie (laat het veld leeg om iedere locatie te gebruiken)" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "Voorraadartikelen toewijzen aan Productieorder" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "Geen overeenkomende voorraadlocaties" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "Geen overeenkomende voorraadartikelen" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "Voorraadartikelen zullen automatisch worden toegewezen aan de productieorder volgens de aangegeven richtlijnen" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "Productieorder is achterstallig" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" +msgstr "Voorraadtoewijzing bewerken" + +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "Voorraadtoewijzing verwijderen" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "Onvoldoende voorraad beschikbaar" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "Genoeg voorraad beschikbaar" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "Productie voorraad" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "Voorraad order" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "Voorraad toewijzen" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "Fabrikant toevoegen" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "Fabrikantonderdeel toevoegen" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "Fabrikantonderdeel bewerken" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "Leverancier Toevoegen" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "Leveranciersonderdeel Toevoegen" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "Gefabriceerde Onderdelen" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "Verwijder Fabrikantenonderdelen" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "Parameter verwijderen" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "Bestel onderdelen" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "Fabrikantonderdeel verwijderen" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "Geen fabrikantenonderdelen gevonden" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "Samengesteld onderdeel" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "Geen parameters gevonden" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "Parameter bewerken" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "Parameter verwijderen" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "Parameter bewerken" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "Parameter verwijderen" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "Verwijder leveranciersonderdelen" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "Laatst bijgewerkt" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11043,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "Leeftijd" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "Verwijder Regel" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "Geen artikelen gevonden" @@ -10716,363 +11331,355 @@ msgstr "Bewerk regel" msgid "Delete line" msgstr "Verwijder regel" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "Validatie van de BOM markeert ieder artikel als geldig" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "Geen inkooporder gevonden" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "Dit artikel is achterstallig" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "Artikel ontvangen" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "Bewerk Inkooporder" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "Voltooi Inkooporder" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "Order markeren als voltooid?" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "Alle artikelen zijn ontvangen" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "Deze order heeft artikelen die niet zijn gemarkeerd als ontvangen." -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "Na het voltooien van de order zijn de order en de artikelen langer bewerkbaar." -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "Inkooporder annuleren" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "Weet u zeker dat u deze inkooporder wilt annuleren?" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "Deze inkooporder kan niet geannuleerd worden" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "Geef inkooporder uit" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "Te bestellen aantal" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "Nieuwe inkooporder" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "Toevoegen aan inkooporder" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "Geen overeenkomende inkooporders" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "Selecteer artikelen" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "Ten minste één artikel moet worden geselecteerd" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "Order Code" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "Ontvang Artikelen Inkooporder" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "Order is achterstallig" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "Artikelen" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "Artikel dupliceren" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "Artikel wijzigen" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "Artikel verwijderen" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "Artikel dupliceren" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "Artikel bewerken" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "Artikel verwijderen" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "Ongeldige Klant" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "Geen overeenkomende artikelen" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "Verkooporder aanmaken" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "Verkooporder bewerken" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "Geen voorraadartikelen toegewezen aan deze zending" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "De volgende voorraadartikelen worden verzonden" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "Verzending Voltooien" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "Verzending Bevestigen" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "Geen verzendingen in behandeling gevonden" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "Verzendingen Voltooien" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "Verkooporder annuleren" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "Na annulering van de order kan de order niet meer bewerkt worden." -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "Geen verkooporder gevonden" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "Verzending bewerken" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "Verzending Voltooien" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "Verzending verwijderen" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "Verzending bewerken" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "Verzending verwijderen" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "Geen overeenkomende verzending gevonden" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "Verzendingsreferentie" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "Niet verzonden" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "Volgen" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "Factuur" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "Voeg Verzending toe" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "Bevestig de voorraadtoewijzing" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "Voorraadartikel toewijzen aan Verkooporder" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "Geen verkooporder toewijzingen gevonden" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "Bewerk Voorraadtoewijzing" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "Bevestig Verwijderen" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "Verwijder Voorraadtoewijzing" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "Verzonden aan klant" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "Voorraadlocatie niet gespecificeerd" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "Wijs serienummers toe" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "Koop voorraad" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "Bereken prijs" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "Kan niet worden verwijderd omdat artikelen verzonden zijn" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "Kan niet worden verwijderd omdat artikelen toegewezen zijn" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "Wijs Serienummers Toe" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "Werk Stukprijs Bij" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "Bewerk Voorraadlocatie" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "Verwijder Voorraadlocatie" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "Toegewezen aan Verkooporder" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "Geen voorraadlocatie ingesteld" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "Voorraadartikel toegewezen aan verkooporder" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "Voorraadartikel toegewezen aan verkooporder" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "Inkooporder bestaat niet meer" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "Order status" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "Samengesteld onderdeel" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "Onderdeel is een assemblage" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "rijen per pagina" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12616,50 +13259,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "Geselecteerde artikelen bestellen" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12668,59 +13267,99 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po index fe0f15a916..c364edce1f 100644 --- a/InvenTree/locale/no/LC_MESSAGES/django.po +++ b/InvenTree/locale/no/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-11 21:26\n" "Last-Translator: \n" "Language-Team: Norwegian\n" "Language: no_NO\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API-endepunkt ikke funnet" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "Brukeren har ikke rettigheter til å se denne modellen" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" +msgstr "Ingen verdi angitt" + +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "" - -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Feildetaljer kan finnes i admin-panelet" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Oppgi dato" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Notater" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "Verdi '{name}' vises ikke i mønsterformat" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Angitt verdi samsvarer ikke med påkrevd mønster: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Oppgi passord" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Oppgi nytt passord" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Bekreft passord" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Bekreft nytt passord" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Gammelt passord" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "E-post (gjenta)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Bekreft e-postaddresse" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Du må angi samme e-post hver gang." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Den oppgitte primære e-postadressen er ikke gyldig." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Det oppgitte e-postdomenet er ikke godkjent." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "Registrering er deaktivert." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Ugyldig mengde oppgitt" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Tom serienummerstreng" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Duplisert serienummer" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Ugyldig gruppeserie: {g}" +msgid "Invalid group range: {group}" +msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "Gruppeserie {g} overskrider tillatt antall ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Ugyldig gruppesekvens: {g}" +msgid "Invalid group sequence: {group}" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Ingen serienummer funnet" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Antall unike serienumre ({s}) må samsvare med antall ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Fjern HTML-tagger fra denne verdien" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Tilkoblingsfeil" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Serveren svarte med ugyldig statuskode" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Det har oppstått et unntak" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Serveren svarte med ugyldig \"Content-Length\"-verdi" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Bildestørrelsen er for stor" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Bildenedlasting overskred maksimal størrelse" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Ekstern server returnerte tomt svar" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "Angitt URL er ikke en gyldig bildefil" -#: InvenTree/models.py:82 -msgid "Metadata must be a python dict object" -msgstr "Metadata må være et python ordobjekt" +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "E-post" + +#: InvenTree/models.py:81 +msgid "Metadata must be a python dict object" +msgstr "Metadata må være et python dict-objekt" + +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "Utvidelse-metadata" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "JSON-metadatafelt, for bruk av eksterne utvidelser" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Uriktig formatert mønster" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Ukjent formatnøkkel spesifisert" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Mangler nødvendig formatnøkkel" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Referansefeltet kan ikke være tomt" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "Referansen må samsvare påkrevd mønster" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Referansenummeret er for stort" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Fil mangler" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Mangler eksternlenke" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Vedlegg" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Velg fil å legge ved" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Lenke" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Lenke til ekstern URL" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Kommentar" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Kommentar til fil" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Bruker" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "opplastet dato" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Filnavn kan ikke være tomt" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Ugyldig vedleggskatalog" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Filnavn inneholder ugyldig tegn '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Filnavn mangler filtype" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Vedlegg med dette filnavnet finnes allerede" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Feil ved endring av filnavn" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "Duplikatnavn kan ikke eksistere under samme overordnede" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Ugyldig valg" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Navn" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Beskrivelse" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Beskrivelse (valgfritt)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "overkategori" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Sti" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "Markdown-notater (valgfritt)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Strekkodedata" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Tredjeparts strekkodedata" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Strekkode-hash" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Unik hash av strekkodedata" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Eksisterende strekkode funnet" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Serverfeil" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "En feil har blitt logget av serveren." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Må være et gyldig tall" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Valuta" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "Velg valuta ut fra tilgjengelige alternativer" @@ -484,143 +509,155 @@ msgstr "Mangler påkrevd kolonne: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Dupliaktkolonne: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "URLtil ekstern bildefil" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Nedlasting av bilder fra ekstern URL er ikke aktivert" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Tsjekkisk" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Dansk" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Tysk" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Gresk" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Engelsk" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Spansk" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Spansk (Meksikansk)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Farsi / Persisk" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" -msgstr "" +msgstr "Finsk" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Fransk" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Hebraisk" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Ungarsk" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Italiensk" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japansk" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Koreansk" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Nederlandsk" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norsk" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Polsk" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portugisisk" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portugisisk (Brasil)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Russisk" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Slovensk" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Svensk" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Thailandsk" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Tyrkisk" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnamesisk" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Kinesisk" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Sjekk av bakgrunnsarbeider mislyktes" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "E-post backend ikke konfigurert" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "InvenTree's-systemets helsesjekker mislyktes" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Ventende" @@ -630,8 +667,8 @@ msgstr "Plassert" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Fullført" @@ -654,10 +691,10 @@ msgstr "Returnert" msgid "In Progress" msgstr "Pågående" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Sendt" @@ -689,7 +726,7 @@ msgstr "I Karantene" msgid "Legacy stock tracking entry" msgstr "Gammel lagervare sporingsoppføring" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Lagevare opprettet" @@ -719,7 +756,7 @@ msgstr "Posisjon endret" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "Lager oppdatert" +msgstr "Lagerbeholdning oppdatert" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" @@ -745,7 +782,7 @@ msgstr "Skill ut fra overordnet artikkel" msgid "Split child item" msgstr "Skill ut fra underartikkel" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Sammenslåtte lagervarer" @@ -763,15 +800,15 @@ msgstr "Build ordreutg fullført" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "" +msgstr "Bygge ordreutgang avvist" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Antatt som byggeordre" #: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" -msgstr "Sendt til salgsordre" +msgstr "Sendt mot salgsordre" #: InvenTree/status_codes.py:135 msgid "Received against Purchase Order" @@ -781,7 +818,7 @@ msgstr "Mottatt mot innkjøpsordre" msgid "Returned against Return Order" msgstr "Returnert mot returordre" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Sendt til kunde" @@ -813,119 +850,165 @@ msgstr "Refusjon" msgid "Reject" msgstr "Avvis" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" -msgstr "" +msgstr "Ugyldig fysisk enhet" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Ikke en gyldig valutakode" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Svinn-verdien kan ikke være negativ" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Svinn kan ikke overstige 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Ugyldig verdi for svinn" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Rediger brukerinformasjon" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Velg passord" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Passordfeltene må samsvare" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Feil passord angitt" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Systeminformasjon" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Om InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "Bygningen må avbrytes før den kan slettes" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "Forbruksvare" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "Valgfritt" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "Spores" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "Tildelt" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Tilgjengelig" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Build ordre" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Build Ordre" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Ugylding valg for overordnet build" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Bygg ordrereferanse" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Referanse" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "Kort beskrivelse av produksjonen (valgfritt)" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Overordnet build" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Build order som denne build er tildelt til" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Build order som denne build er tildelt til" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Del" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Velg del å produsere" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Salgsordrereferanse" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Salgsordren denne produksjonen er tildelt til" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Kildeplassering" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Velg plassering å ta lagerbeholdning fra for denne produksjonen (la stå tomt for a ta fra alle lagerplasseringer)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Fullført plassering" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Velg plassering der fullførte artikler vil bli lagret" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Produksjonsmengde" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Antall lagervarer å produsere" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Fullførte artikler" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Antall lagervarer som er fullført" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Produksjonsstatus" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Produksjonsstatuskode" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Batchkode" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Batchkode for denne produksjonsartikkelen" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Opprettelsesdato" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Forventet sluttdato" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Forventet dato for ferdigstillelse. Build er forvalt etter denne datoen." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Fullført dato" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "fullført av" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Utstedt av" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Brukeren som utstede denne prosjekt order" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Ansvarlig" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "Bruker eller gruppe ansvarlig for produksjonsordren" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Ekstern lenke" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "Produksjonsprioritet" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "Produksjonsordrens prioritet" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "Prosjektkode" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "Prosjektkode for denne produksjonsordren" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Byggeordre {build} er fullført" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "Byggeordre er fullført" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Ingen prosjekt utgang" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Prosjekt utdata er allerede utfylt" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "Prosjekt utdata samsvarer ikke Prosjekt Order" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "Mengden må være større enn null" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" -msgstr "" +msgstr "Kvantitet kan ikke være større enn utgangsantallet" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Prosjektvare må spesifisere en prosjekt utdata, siden hovedvaren er markert som sporbar" +#: build/models.py:1266 +msgid "Build object" +msgstr "Bygg objekt" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "Tildelt antall ({q}) kan ikke overstige tilgjengelig lagerbeholdning ({a})" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "Lagervaren er overtildelt" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Tildelingsantall må være større enn null" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "Mengden må være 1 for serialisert lagervare" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Valgt lagevare ikke funnet i BOM" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Produksjon" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "Bygge for å tildele deler" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Lagervare" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Kildelagervare" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Antall" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "Påkrved kvantitet for ordre" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "Prosjektvare må spesifisere en prosjekt utdata, siden hovedvaren er markert som sporbar" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "Tildelt antall ({q}) kan ikke overstige tilgjengelig lagerbeholdning ({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "Lagervaren er overtildelt" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Tildelingsantall må være større enn null" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Mengden må være 1 for serialisert lagervare" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "Valgt lagervare samsvarer ikke med BOM-linjen" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Lagervare" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Kildelagervare" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Lagerantall å tildele til produksjonen" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Monteres i" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Lagervare for montering" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "Produksjonsartikkel" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "Produksjonsartikkel samsvarer ikke med overordnet produksjon" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "Resultatdel samsvarer ikke med produksjonsordredel" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "Denne produksjonsartikkelen er allerede fullført" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "Denne produksjonsartikkelen er ikke fullt tildelt" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "Angi antall for produksjonsartikkel" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "Heltallsverdi kreves for sporbare deler" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Heltallsverdi kreves, da stykklisten inneholder sporbare deler" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Serienummer" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "Angi serienummer for produksjonsartikler" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "Automatisk tildeling av serienummer" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "Automatisk tildeling av nødvendige artikler med tilsvarende serienummer" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "Følgende serienummer finnes allerede eller er ugyldige" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "En liste over produksjonsartikler må oppgis" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Plassering" -#: build/serializers.py:416 -msgid "Stock location for scrapped outputs" -msgstr "" - #: build/serializers.py:422 -msgid "Discard Allocations" -msgstr "" - -#: build/serializers.py:423 -msgid "Discard any stock allocations for scrapped outputs" -msgstr "" +msgid "Stock location for scrapped outputs" +msgstr "Lagreplassering for skrotet utganger" #: build/serializers.py:428 -msgid "Reason for scrapping build output(s)" -msgstr "" +msgid "Discard Allocations" +msgstr "Forkast tildelinger" -#: build/serializers.py:489 +#: build/serializers.py:429 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "Forkast lagerallokering for skrotet utganger" + +#: build/serializers.py:434 +msgid "Reason for scrapping build output(s)" +msgstr "Grunnen til utrangering av bygg utgang(er)" + +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "Plassering for ferdige produksjonsartikler" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Status" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "Godta ufullstendig tildeling" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "Fullfør artikler dersom lagerbeholdning ikke er fullt tildelt" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "Fjern tildelt lagerbeholdning" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "Trekk fra all lagerbeholdning som allerede er tildelt denne produksjonen" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "Fjern ufullstendige artikler" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "Slett alle produksjonsartikler som ikke er fullført" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "Ikke tillatt" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "Godta som brukt av denne produksjonsordren" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "Fjern tildeling før produksjonsordren fullføres" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "Overtildelt lagerbeholdning" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "Hvordan vil du håndtere ekstra lagervarer tildelt produksjonsordren" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "Noen lagervarer har blitt overtildelt" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "Godta ikke tildelt" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Godta at lagervarer ikke er fullt tildelt til denne produksjonsordren" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "Nøvendig lagerbeholdning er ikke fullt tildelt" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "Godta uferdig" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "Godta at nødvendig antall fullførte produksjonsartikler ikke er nådd" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "Nødvendig produksjonsmengde er ikke nådd" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "Produksjonsordren har uferdige artikler" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "Stykklisteartikkel" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "Bygg linje" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "Produksjonsartikkel" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "Produksjonsartikkel må peke til samme produksjon" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "Bygg linjeelement" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part må peke på den samme delen som produksjonsordren" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "Artikkelen må være på lager" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Tilgjengelig antall ({q}) overskredet" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "Produksjonsartikkel må spesifiseres for tildeling av sporede deler" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Produksjonsartikkel kan ikke spesifiseres for tildeling av usporede deler" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "Denne lagervaren er allerede tildelt til denne produksjonsartikkelen" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "Tildelingsartikler må oppgis" @@ -1513,108 +1611,109 @@ msgstr "Valgfrie artikler" #: build/serializers.py:970 msgid "Allocate optional BOM items to build order" -msgstr "Tildel valgfrie stykklistevarer til produksjonsordre" +msgstr "Tildel valgfrie BOM-artikler til produksjonsordre" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "Lagerbeholdning kreves for produksjonsordre" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "Forfalt produksjonsordre" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "Produksjonsordre {bo} er nå forfalt" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" -msgstr "" +msgstr "Miniatyrbilde for del" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "Strekkodehandlinger" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "Vis QR-kode" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "Fjern strekkodekobling" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "Koble mot strekkode" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "Utskriftshandlinger" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "Skriv ut produksjonsordrerapport" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "Produksjonshandlinger" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Rediger Produksjon" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Kanseller produksjon" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "Dupliser Produksjon" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "Slett Produksjon" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "Fullfør Produksjon" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "Produksjonsbeskrivelse" @@ -1639,18 +1738,18 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Lagerbeholdning er ikke fullt tildelt til denne Produksjonsordren" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "Måldato" @@ -1661,47 +1760,46 @@ msgstr "Denne produksjonsordren forfalt %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "Forfalt" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Fullført" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "Fullførte byggeresultater" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "Salgsordre" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Utstedt av" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "Prioritet" @@ -1729,8 +1827,8 @@ msgstr "Lagerkilde" msgid "Stock can be taken from any available location." msgstr "Lagervare kan hentes fra alle tilgengelige steder." -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "Destinasjon" @@ -1742,23 +1840,23 @@ msgstr "Målplassering er ikke spesifisert" msgid "Allocated Parts" msgstr "Tildelte deler" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "Parti" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "Opprettet" @@ -1766,147 +1864,106 @@ msgstr "Opprettet" msgid "No target date set" msgstr "Ingen måldato satt" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Fullført" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "Produksjon ikke fullført" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "Underordnede Produksjonsordrer" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "Tildel Lagerbeholdning til Produksjon" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "Fjern lager allokering" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "Fjern lager allokering" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "Fjern lager allokering" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "Automatisk tildel lagerbeholdning til produksjon" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "Automatisk tildeling" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "Manuelt tildel lagerbeholdning til produksjon" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "Tildele lager" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "Bestill nødvendige deler" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "Bestill deler" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "Usporet lagerbeholdning er fullt tildelt for Produksjonsordren" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "Usporet lagerbeholdning er ikke fullt tildelt for Produksjonsordren" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "Tildel valgte varer" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "Produksjonsordren har ingen tilknyttede usporede stykklisteartikler" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "Ufullstendige Produksjonsartikler" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "Opprett ny produksjonsartikkel" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "Ny Produksjonsartikkel" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "Artikkelhandlinger" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "Fullfør valgte produksjonsartikler" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "Fullfør artikler" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "Slett valgte produksjonsartikler" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "Slett resultat" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" -msgstr "" +msgstr "Forbrukt lager" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "Fullførte byggeresultater" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Vedlegg" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "Bygg notater" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "Tildeling fullført" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" -msgstr "Alle usporbar lagervarer har tildelt" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "Alle linjer er fullt tildelt" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "Ny byggeordre" @@ -1914,14 +1971,10 @@ msgstr "Ny byggeordre" msgid "Build Order Details" msgstr "Byggordre detaljer" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "Ufullstendige resultater" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "Fullførte byggeresultater" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "{name.title()} Fil" msgid "Select {name} file to upload" msgstr "Velg {name} fil som skal lastes opp" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "Oppdatert" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Tidsstempel for forrige oppdatering" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "Prosjektkode" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "Unik prosjektkode" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "Prosjektbeskrivelse" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "Innstillingsnøkkel (må være unik - ufølsom for store of små bokstaver)" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "Innstillings verdi" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "Valgt verdi er ikke et gyldig alternativ" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "Verdien må være en boolsk verdi" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "Verdien må være et heltall" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "Nøkkelstreng må være unik" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "Ingen gruppe" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "Et tomt domene er ikke tillatt." -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Ugyldig domenenavn: {domain}" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "Omstart kreves" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "En innstilling har blitt endret som krever en omstart av serveren" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "Navn på serverinstans" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "Strengbeskrivelse for serverinstansen" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "Bruk instansnavn" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "Bruk instansnavnet på tittellinjen" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "Begrens visning av 'om'" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "Vis `about`-modal kun til superbrukere" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Firmanavn" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "Internt firmanavn" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "Base-URL" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "Base-URL for serverinstans" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Standardvaluta" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "Velg grunnvalutaen for prisberegninger" -#: common/models.py:979 -msgid "Download from URL" -msgstr "Last ned fra URL" +#: common/models.py:1126 +msgid "Currency Update Interval" +msgstr "" -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "Tillat nedlastning av eksterne bilder og filer fra ekstern URL" +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "Nedlastingsgrense" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "Maksimal tillatt nedlastingsstørrelse for eksternt bilde" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "User-Agent brukt for å laste ned fra URL" - -#: common/models.py:999 -msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" -msgstr "Tillat overstyring av User-Agent brukt for å laste ned bilder og filer fra eksterne URLer (lå stå blank for standard)" - -#: common/models.py:1004 -msgid "Require confirm" -msgstr "Krev bekreftelse" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "Krev eksplisitt brukerbekreftelse for visse handlinger." - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "Tredybde" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "Standard tredybde for trevisning. Dypere nivåer kan lastes inn ved behov." - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "Intervall for oppdateringssjekk" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "Tidsintervall for å se etter oppdateringer(sett til null for å skru av)" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 msgid "days" msgstr "dager" -#: common/models.py:1032 +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Last ned fra URL" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Tillat nedlastning av eksterne bilder og filer fra ekstern URL" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "Nedlastingsgrense" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "Maksimal tillatt nedlastingsstørrelse for eksternt bilde" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "User-Agent brukt for å laste ned fra URL" + +#: common/models.py:1164 +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "Tillat overstyring av User-Agent brukt for å laste ned bilder og filer fra eksterne URLer (lå stå blank for standard)" + +#: common/models.py:1169 +msgid "Require confirm" +msgstr "Krev bekreftelse" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "Krev eksplisitt brukerbekreftelse for visse handlinger." + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "Tredybde" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "Standard tredybde for trevisning. Dypere nivåer kan lastes inn ved behov." + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "Intervall for oppdateringssjekk" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "Tidsintervall for å se etter oppdateringer(sett til null for å skru av)" + +#: common/models.py:1197 msgid "Automatic Backup" msgstr "Automatisk sikkerhetskopiering" -#: common/models.py:1033 +#: common/models.py:1198 msgid "Enable automatic backup of database and media files" msgstr "Aktiver automatisk sikkerhetskopiering av database og mediafiler" -#: common/models.py:1039 +#: common/models.py:1204 msgid "Auto Backup Interval" msgstr "Automatisk sikkerhetskopieringsintervall" -#: common/models.py:1040 +#: common/models.py:1205 msgid "Specify number of days between automated backup events" msgstr "Angi antall dager mellom automatiske sikkerhetskopieringshendelser" -#: common/models.py:1050 +#: common/models.py:1215 msgid "Task Deletion Interval" msgstr "Slettingsintervall for oppgaver" -#: common/models.py:1051 +#: common/models.py:1216 msgid "Background task results will be deleted after specified number of days" msgstr "Bakgrunnsoppgaveresultater vil bli slettet etter antall angitte dager" -#: common/models.py:1061 +#: common/models.py:1226 msgid "Error Log Deletion Interval" msgstr "Slettingsintervall for feillogg" -#: common/models.py:1062 +#: common/models.py:1227 msgid "Error logs will be deleted after specified number of days" msgstr "Feilloggene vil bli slettet etter et angitt antall dager" -#: common/models.py:1072 +#: common/models.py:1237 msgid "Notification Deletion Interval" msgstr "Slettingsintervall for varsler" -#: common/models.py:1073 +#: common/models.py:1238 msgid "User notifications will be deleted after specified number of days" msgstr "Brukervarsler slettes etter angitt antall dager" -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Strekkodestøtte" -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "Aktiver støtte for strekkodeskanner" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" -#: common/models.py:1090 +#: common/models.py:1255 msgid "Barcode Input Delay" msgstr "Innlesingsforsinkelse for strekkode" -#: common/models.py:1091 +#: common/models.py:1256 msgid "Barcode input processing delay time" msgstr "Tidsforsinkelse for behandling av strekkode" -#: common/models.py:1101 +#: common/models.py:1266 msgid "Barcode Webcam Support" msgstr "Støtte for strekkodewebkamera" -#: common/models.py:1102 +#: common/models.py:1267 msgid "Allow barcode scanning via webcam in browser" msgstr "Tillat strekkodelesning via webkamera i nettleseren" -#: common/models.py:1108 +#: common/models.py:1273 msgid "Part Revisions" msgstr "Delrevisjoner" -#: common/models.py:1109 +#: common/models.py:1274 msgid "Enable revision field for Part" msgstr "Aktiver revisjonsfeltet for Del" -#: common/models.py:1115 +#: common/models.py:1280 msgid "IPN Regex" msgstr "IPN regex" -#: common/models.py:1116 +#: common/models.py:1281 msgid "Regular expression pattern for matching Part IPN" msgstr "Regulært uttrykksmønster for matching av internt delnummer" -#: common/models.py:1120 +#: common/models.py:1285 msgid "Allow Duplicate IPN" msgstr "Tilat duplikat av internt delnummer" -#: common/models.py:1121 +#: common/models.py:1286 msgid "Allow multiple parts to share the same IPN" msgstr "Tillat flere deler å dele samme interne delnummer" -#: common/models.py:1127 +#: common/models.py:1292 msgid "Allow Editing IPN" msgstr "Tillat redigering av internt delnummer" -#: common/models.py:1128 +#: common/models.py:1293 msgid "Allow changing the IPN value while editing a part" msgstr "Tillat endring av IPN-verdien mens du redigerer en del" -#: common/models.py:1134 +#: common/models.py:1299 msgid "Copy Part BOM Data" -msgstr "Kopier stykklistedata fra del" +msgstr "Kopier BOM-data fra del" -#: common/models.py:1135 +#: common/models.py:1300 msgid "Copy BOM data by default when duplicating a part" -msgstr "Kopier stykklistedata som standard når du dupliserer en del" +msgstr "Kopier BOM-data som standard når du dupliserer en del" -#: common/models.py:1141 +#: common/models.py:1306 msgid "Copy Part Parameter Data" msgstr "Kopier parameterdata fra del" -#: common/models.py:1142 +#: common/models.py:1307 msgid "Copy parameter data by default when duplicating a part" msgstr "Kopier parameterdata som standard ved duplisering av en del" -#: common/models.py:1148 +#: common/models.py:1313 msgid "Copy Part Test Data" msgstr "Kopier testdata fra del" -#: common/models.py:1149 +#: common/models.py:1314 msgid "Copy test data by default when duplicating a part" msgstr "Kopier testdata som standard ved duplisering av en del" -#: common/models.py:1155 +#: common/models.py:1320 msgid "Copy Category Parameter Templates" msgstr "Kopier designmaler for kategoriparametere" -#: common/models.py:1156 +#: common/models.py:1321 msgid "Copy category parameter templates when creating a part" msgstr "Kopier parametermaler for kategori ved oppretting av en del" -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Mal" -#: common/models.py:1163 +#: common/models.py:1328 msgid "Parts are templates by default" msgstr "Deler er maler som standard" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Sammenstilling" -#: common/models.py:1170 +#: common/models.py:1335 msgid "Parts can be assembled from other components by default" msgstr "Deler kan settes sammen fra andre komponenter som standard" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Komponent" -#: common/models.py:1177 +#: common/models.py:1342 msgid "Parts can be used as sub-components by default" msgstr "Deler kan bli brukt som underkomponenter som standard" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 +#: common/models.py:1348 part/admin.py:53 part/models.py:981 msgid "Purchaseable" msgstr "Kjøpbar" -#: common/models.py:1184 +#: common/models.py:1349 msgid "Parts are purchaseable by default" msgstr "Deler er kjøpbare som standard" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Salgbar" -#: common/models.py:1191 +#: common/models.py:1356 msgid "Parts are salable by default" msgstr "Deler er salgbare som standard" -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Sporbar" -#: common/models.py:1198 +#: common/models.py:1363 msgid "Parts are trackable by default" msgstr "Deler er sporbare som standard" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtuelle" -#: common/models.py:1205 +#: common/models.py:1370 msgid "Parts are virtual by default" msgstr "Deler er virtuelle som standard" -#: common/models.py:1211 +#: common/models.py:1376 msgid "Show Import in Views" msgstr "Vis import i visninger" -#: common/models.py:1212 +#: common/models.py:1377 msgid "Display the import wizard in some part views" msgstr "Vis importveiviseren i noen deler visninger" -#: common/models.py:1218 +#: common/models.py:1383 msgid "Show related parts" msgstr "Vis relaterte deler" -#: common/models.py:1219 +#: common/models.py:1384 msgid "Display related parts for a part" msgstr "Vis relaterte deler i en del" -#: common/models.py:1225 +#: common/models.py:1390 msgid "Initial Stock Data" msgstr "Innledende lagerbeholdningsdata" -#: common/models.py:1226 +#: common/models.py:1391 msgid "Allow creation of initial stock when adding a new part" msgstr "Tillat oppretting av innledende lagerbeholdning når en ny del opprettes" -#: common/models.py:1232 templates/js/translated/part.js:108 +#: common/models.py:1397 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Innledende leverandørdata" -#: common/models.py:1233 +#: common/models.py:1398 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Tillat oppretting av innledende leverandørdata når en ny del opprettes" -#: common/models.py:1239 +#: common/models.py:1404 msgid "Part Name Display Format" msgstr "Visningsformat for delnavn" -#: common/models.py:1240 +#: common/models.py:1405 msgid "Format to display the part name" msgstr "Format for å vise delnavnet" -#: common/models.py:1247 +#: common/models.py:1412 msgid "Part Category Default Icon" msgstr "Standardikon for delkategorier" -#: common/models.py:1248 +#: common/models.py:1413 msgid "Part category default icon (empty means no icon)" msgstr "Standardikon for delkategorier (tomt betyr ingen ikon)" -#: common/models.py:1253 +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1425 msgid "Minimum Pricing Decimal Places" msgstr "Minimum antall desimalplasser for priser" -#: common/models.py:1254 +#: common/models.py:1426 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Minimum antall desimalplasser som skal vises når man gjengir prisdata" -#: common/models.py:1264 +#: common/models.py:1436 msgid "Maximum Pricing Decimal Places" msgstr "Maksimalt antall desimalplasser for priser" -#: common/models.py:1265 +#: common/models.py:1437 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Maksimalt antall desimalplasser som skal vises når man gjengir prisdata" -#: common/models.py:1275 +#: common/models.py:1447 msgid "Use Supplier Pricing" msgstr "Bruk leverandørpriser" -#: common/models.py:1276 +#: common/models.py:1448 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Inkluder leverandørprisbrudd i beregninger av totalpriser" -#: common/models.py:1282 +#: common/models.py:1454 msgid "Purchase History Override" msgstr "Innkjøpshistorikkoverstyring" -#: common/models.py:1283 +#: common/models.py:1455 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Historiske innkjøpspriser overstyrer leverandørprisnivåer" -#: common/models.py:1289 +#: common/models.py:1461 msgid "Use Stock Item Pricing" msgstr "Bruk lagervarepriser" -#: common/models.py:1290 +#: common/models.py:1462 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Bruk priser fra manuelt innlagte lagervarer for prisberegninger" -#: common/models.py:1296 +#: common/models.py:1468 msgid "Stock Item Pricing Age" msgstr "Lagervare prisalder" -#: common/models.py:1297 +#: common/models.py:1469 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Unnta lagervarer som er eldre enn dette antall dager fra prisberegninger" -#: common/models.py:1307 +#: common/models.py:1479 msgid "Use Variant Pricing" msgstr "Bruk Variantpriser" -#: common/models.py:1308 +#: common/models.py:1480 msgid "Include variant pricing in overall pricing calculations" msgstr "Inkluder variantpriser i beregninger av totale priser" -#: common/models.py:1314 +#: common/models.py:1486 msgid "Active Variants Only" msgstr "Kun aktive varianter" -#: common/models.py:1315 +#: common/models.py:1487 msgid "Only use active variant parts for calculating variant pricing" msgstr "Bruk kun aktive variantdeler til beregning av variantprising" -#: common/models.py:1321 +#: common/models.py:1493 msgid "Pricing Rebuild Interval" msgstr "Intervall for rekalkulering av priser" -#: common/models.py:1322 +#: common/models.py:1494 msgid "Number of days before part pricing is automatically updated" msgstr "Antall dager før delpriser blir automatisk oppdatert" -#: common/models.py:1332 +#: common/models.py:1504 msgid "Internal Prices" msgstr "Interne Priser" -#: common/models.py:1333 +#: common/models.py:1505 msgid "Enable internal prices for parts" msgstr "Aktiver interne priser for deler" -#: common/models.py:1339 +#: common/models.py:1511 msgid "Internal Price Override" msgstr "Intern prisoverstyring" -#: common/models.py:1340 +#: common/models.py:1512 msgid "If available, internal prices override price range calculations" msgstr "Hvis tilgjengelig, overstyrer interne priser kalkulering av prisområde" -#: common/models.py:1346 +#: common/models.py:1518 msgid "Enable label printing" msgstr "Aktiver etikettutskrift" -#: common/models.py:1347 +#: common/models.py:1519 msgid "Enable label printing from the web interface" msgstr "Aktiver utskrift av etiketter fra nettleseren" -#: common/models.py:1353 +#: common/models.py:1525 msgid "Label Image DPI" msgstr "Etikettbilde-DPI" -#: common/models.py:1354 +#: common/models.py:1526 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "DPI-oppløsning når når det genereres bildefiler for sending til utvidelser for etikettutskrift" -#: common/models.py:1363 +#: common/models.py:1535 msgid "Enable Reports" msgstr "Aktiver Rapporter" -#: common/models.py:1364 +#: common/models.py:1536 msgid "Enable generation of reports" msgstr "Aktiver generering av rapporter" -#: common/models.py:1370 templates/stats.html:25 +#: common/models.py:1542 templates/stats.html:25 msgid "Debug Mode" msgstr "Feilsøkingsmodus" -#: common/models.py:1371 +#: common/models.py:1543 msgid "Generate reports in debug mode (HTML output)" msgstr "Generer rapporter i feilsøkingsmodus (HTML-output)" -#: common/models.py:1377 +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 msgid "Page Size" msgstr "Sidestørrelse" -#: common/models.py:1378 +#: common/models.py:1550 msgid "Default page size for PDF reports" msgstr "Standard sidestørrelse for PDF-rapporter" -#: common/models.py:1388 +#: common/models.py:1556 msgid "Enable Test Reports" msgstr "Aktiver Testrapporter" -#: common/models.py:1389 +#: common/models.py:1557 msgid "Enable generation of test reports" msgstr "Aktiver generering av testrapporter" -#: common/models.py:1395 +#: common/models.py:1563 msgid "Attach Test Reports" msgstr "Legg ved testrapporter" -#: common/models.py:1396 +#: common/models.py:1564 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Når det skrives ut en Testrapport, legg ved en kopi av Testrapporten på den assosierte Lagervaren" -#: common/models.py:1402 +#: common/models.py:1570 msgid "Globally Unique Serials" msgstr "Globalt Unike Serienummer" -#: common/models.py:1403 +#: common/models.py:1571 msgid "Serial numbers for stock items must be globally unique" msgstr "Serienummer for lagervarer må være globalt unike" -#: common/models.py:1409 +#: common/models.py:1577 msgid "Autofill Serial Numbers" msgstr "Automatisk tildeling av Serienummer" -#: common/models.py:1410 +#: common/models.py:1578 msgid "Autofill serial numbers in forms" msgstr "Aumatisk fyll ut serienummer i skjemaer" -#: common/models.py:1416 +#: common/models.py:1584 msgid "Delete Depleted Stock" msgstr "Slett oppbrukt lagerbeholdning" -#: common/models.py:1417 +#: common/models.py:1585 msgid "Determines default behaviour when a stock item is depleted" msgstr "Bestemmer standard oppførsel når en lagervare er oppbrukt" -#: common/models.py:1423 +#: common/models.py:1591 msgid "Batch Code Template" msgstr "Batchkodemal" -#: common/models.py:1424 +#: common/models.py:1592 msgid "Template for generating default batch codes for stock items" msgstr "Mal for generering av standard batchkoder for lagervarer" -#: common/models.py:1429 +#: common/models.py:1597 msgid "Stock Expiry" msgstr "Lagerbeholdning utløper" -#: common/models.py:1430 +#: common/models.py:1598 msgid "Enable stock expiry functionality" msgstr "Aktiver funksjonalitet for utløp av lagerbeholdning" -#: common/models.py:1436 +#: common/models.py:1604 msgid "Sell Expired Stock" msgstr "Selg utløpt lagerbeholdning" -#: common/models.py:1437 +#: common/models.py:1605 msgid "Allow sale of expired stock" msgstr "Tillat salg av utgått lagerbeholdning" -#: common/models.py:1443 +#: common/models.py:1611 msgid "Stock Stale Time" msgstr "Foreldet lagerbeholdning tidsintervall" -#: common/models.py:1444 +#: common/models.py:1612 msgid "Number of days stock items are considered stale before expiring" msgstr "Antall dager før lagervarer er ansett som foreldet før utløp" -#: common/models.py:1451 +#: common/models.py:1619 msgid "Build Expired Stock" msgstr "Produsér Utløpt Lagerbeholdning" -#: common/models.py:1452 +#: common/models.py:1620 msgid "Allow building with expired stock" msgstr "Tillat produksjon med utløpt lagerbeholdning" -#: common/models.py:1458 +#: common/models.py:1626 msgid "Stock Ownership Control" msgstr "Kontroll over eierskap av lagerbeholdning" -#: common/models.py:1459 +#: common/models.py:1627 msgid "Enable ownership control over stock locations and items" msgstr "Aktiver eierskap over lagerplasseringer og -varer" -#: common/models.py:1465 +#: common/models.py:1633 msgid "Stock Location Default Icon" msgstr "Lagerplassering standard ikon" -#: common/models.py:1466 +#: common/models.py:1634 msgid "Stock location default icon (empty means no icon)" msgstr "Lagerplassering standard ikon (tomt betyr ingen ikon)" -#: common/models.py:1471 +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "Vis installerte lagervarer" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "Vis installerte lagervarer i lagertabeller" + +#: common/models.py:1646 msgid "Build Order Reference Pattern" msgstr "Produksjonsordre-referansemønster" -#: common/models.py:1472 +#: common/models.py:1647 msgid "Required pattern for generating Build Order reference field" msgstr "Nødvendig mønster for å generere Produksjonsordre-referansefeltet" -#: common/models.py:1478 +#: common/models.py:1653 msgid "Enable Return Orders" msgstr "Aktiver returordrer" -#: common/models.py:1479 +#: common/models.py:1654 msgid "Enable return order functionality in the user interface" msgstr "Aktiver returordrefunksjonalitet i brukergrensesnittet" -#: common/models.py:1485 +#: common/models.py:1660 msgid "Return Order Reference Pattern" msgstr "Returordre-referansemønster" -#: common/models.py:1486 +#: common/models.py:1661 msgid "Required pattern for generating Return Order reference field" msgstr "Påkrevd mønster for å generere returordrereferansefelt" -#: common/models.py:1492 +#: common/models.py:1667 msgid "Edit Completed Return Orders" msgstr "Rediger fullførte returordrer" -#: common/models.py:1493 +#: common/models.py:1668 msgid "Allow editing of return orders after they have been completed" msgstr "Tillat redigering av returordrer etter de er fullført" -#: common/models.py:1499 +#: common/models.py:1674 msgid "Sales Order Reference Pattern" msgstr "Salgsordre-referansemønster" -#: common/models.py:1500 +#: common/models.py:1675 msgid "Required pattern for generating Sales Order reference field" msgstr "Påkrevd mønster for å generere salgsordrereferansefelt" -#: common/models.py:1506 +#: common/models.py:1681 msgid "Sales Order Default Shipment" msgstr "Salgsordre standard fraktmetode" -#: common/models.py:1507 +#: common/models.py:1682 msgid "Enable creation of default shipment with sales orders" msgstr "Aktiver opprettelse av standard forsendelse med salgsordrer" -#: common/models.py:1513 +#: common/models.py:1688 msgid "Edit Completed Sales Orders" msgstr "Rediger fullførte salgsordrer" -#: common/models.py:1514 +#: common/models.py:1689 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Tillat redigering av salgsordrer etter de har blitt sendt eller fullført" -#: common/models.py:1520 +#: common/models.py:1695 msgid "Purchase Order Reference Pattern" msgstr "Referansemønster for innkjøpsordre" -#: common/models.py:1521 +#: common/models.py:1696 msgid "Required pattern for generating Purchase Order reference field" msgstr "Obligatorisk mønster for generering av referansefelt for innkjøpsordre" -#: common/models.py:1527 +#: common/models.py:1702 msgid "Edit Completed Purchase Orders" msgstr "Rediger fullførte innkjøpsordre" -#: common/models.py:1528 +#: common/models.py:1703 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Tillat redigering av innkjøpsordre etter at de har blitt sendt eller fullført" -#: common/models.py:1535 +#: common/models.py:1710 msgid "Enable password forgot" msgstr "Aktiver passord glemt" -#: common/models.py:1536 +#: common/models.py:1711 msgid "Enable password forgot function on the login pages" msgstr "Ativer funskjon for glemt passord på innloggingssidene" -#: common/models.py:1542 +#: common/models.py:1717 msgid "Enable registration" msgstr "Aktiver registrering" -#: common/models.py:1543 +#: common/models.py:1718 msgid "Enable self-registration for users on the login pages" msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene" -#: common/models.py:1549 +#: common/models.py:1724 msgid "Enable SSO" msgstr "Aktiver SSO" -#: common/models.py:1550 +#: common/models.py:1725 msgid "Enable SSO on the login pages" msgstr "Aktiver SSO på innloggingssidene" -#: common/models.py:1556 +#: common/models.py:1731 msgid "Enable SSO registration" msgstr "Aktiver SSO-registrering" -#: common/models.py:1557 +#: common/models.py:1732 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Aktiver selvregistrering via SSO for brukere på innloggingssiden" -#: common/models.py:1563 +#: common/models.py:1738 msgid "Email required" msgstr "E-postadresse kreves" -#: common/models.py:1564 +#: common/models.py:1739 msgid "Require user to supply mail on signup" msgstr "Krevt at brukere angir e-post ved registrering" -#: common/models.py:1570 +#: common/models.py:1745 msgid "Auto-fill SSO users" msgstr "Auto-utfyll SSO-brukere" -#: common/models.py:1571 +#: common/models.py:1746 msgid "Automatically fill out user-details from SSO account-data" msgstr "Fyll automatisk ut brukeropplysninger fra SSO-kontodata" -#: common/models.py:1577 +#: common/models.py:1752 msgid "Mail twice" msgstr "E-post to ganger" -#: common/models.py:1578 +#: common/models.py:1753 msgid "On signup ask users twice for their mail" msgstr "Spør brukeren om e-post to ganger ved registrering" -#: common/models.py:1584 +#: common/models.py:1759 msgid "Password twice" msgstr "Passord to ganger" -#: common/models.py:1585 +#: common/models.py:1760 msgid "On signup ask users twice for their password" msgstr "Spør brukeren om passord to ganger ved registrering" -#: common/models.py:1591 +#: common/models.py:1766 msgid "Allowed domains" msgstr "Tillatte domener" -#: common/models.py:1592 +#: common/models.py:1767 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Begrens registrering til bestemte domener (kommaseparert, begynner med @)" -#: common/models.py:1598 +#: common/models.py:1773 msgid "Group on signup" msgstr "Gruppe ved registrering" -#: common/models.py:1599 +#: common/models.py:1774 msgid "Group to which new users are assigned on registration" msgstr "Gruppe nye brukere blir tilknyttet ved registrering" -#: common/models.py:1605 +#: common/models.py:1780 msgid "Enforce MFA" msgstr "Krev MFA" -#: common/models.py:1606 +#: common/models.py:1781 msgid "Users must use multifactor security." msgstr "Brukere må bruke flerfaktorsikkerhet." -#: common/models.py:1612 +#: common/models.py:1787 msgid "Check plugins on startup" msgstr "Sjekk utvidelser ved oppstart" -#: common/models.py:1613 +#: common/models.py:1788 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Sjekk at alle utvidelser er installert ved oppstart - aktiver i containermiljøer" -#: common/models.py:1620 -msgid "Check plugin signatures" -msgstr "Sjekk utvidelsessignaturer" - -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "Kontroller og vis signaturer for utvidelser" - -#: common/models.py:1628 +#: common/models.py:1796 msgid "Enable URL integration" msgstr "Aktiver URL-integrasjon" -#: common/models.py:1629 +#: common/models.py:1797 msgid "Enable plugins to add URL routes" msgstr "Tillat utvidelser å legge til URL-ruter" -#: common/models.py:1636 +#: common/models.py:1804 msgid "Enable navigation integration" msgstr "Aktiver navigasjonsintegrasjon" -#: common/models.py:1637 +#: common/models.py:1805 msgid "Enable plugins to integrate into navigation" msgstr "Tillat utvidelser å integrere mot navigasjon" -#: common/models.py:1644 +#: common/models.py:1812 msgid "Enable app integration" msgstr "Aktiver app-integrasjon" -#: common/models.py:1645 +#: common/models.py:1813 msgid "Enable plugins to add apps" msgstr "Tillat utvidelser å legge til apper" -#: common/models.py:1652 +#: common/models.py:1820 msgid "Enable schedule integration" msgstr "Aktiver tidsplanintegrasjon" -#: common/models.py:1653 +#: common/models.py:1821 msgid "Enable plugins to run scheduled tasks" msgstr "Tillat utvidelser å kjøre planlagte oppgaver" -#: common/models.py:1660 +#: common/models.py:1828 msgid "Enable event integration" msgstr "Aktiver hendelsesintegrasjon" -#: common/models.py:1661 +#: common/models.py:1829 msgid "Enable plugins to respond to internal events" msgstr "Tillat utvidelser å reagere på interne hendelser" -#: common/models.py:1668 +#: common/models.py:1836 msgid "Enable project codes" msgstr "Aktiver prosjektkoder" -#: common/models.py:1669 +#: common/models.py:1837 msgid "Enable project codes for tracking projects" msgstr "Aktiver prosjektkoder for å spore prosjekter" -#: common/models.py:1675 +#: common/models.py:1843 msgid "Stocktake Functionality" msgstr "Varetellingsfunksjonalitet" -#: common/models.py:1676 +#: common/models.py:1844 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Aktiver varetellingsfunksjonalitet for å registrere lagernivåer og regne ut lagerverdi" -#: common/models.py:1682 +#: common/models.py:1850 +msgid "Exclude External Locations" +msgstr "" + +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "" + +#: common/models.py:1857 msgid "Automatic Stocktake Period" msgstr "Automatisk varetellingsperiode" -#: common/models.py:1683 +#: common/models.py:1858 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Antall dager mellom automatisk varetellingsregistrering (sett til null for å deaktivere)" -#: common/models.py:1692 +#: common/models.py:1867 msgid "Report Deletion Interval" msgstr "Rapportslettingsintervall" -#: common/models.py:1693 +#: common/models.py:1868 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Varetellingsrapporter vil slettes etter angitt antall dager" -#: common/models.py:1710 common/models.py:2147 +#: common/models.py:1885 common/models.py:2314 msgid "Settings key (must be unique - case insensitive" msgstr "Innstillingsnøkkel (må være unik - ufølsom for store og små bokstaver" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" -msgstr "Ingen skriver (Eksporter til PDF)" - -#: common/models.py:1751 +#: common/models.py:1925 msgid "Hide inactive parts" msgstr "Skjul inaktive elementer" -#: common/models.py:1752 +#: common/models.py:1926 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Skjul inaktive deler i resultater som vises på hjemmesiden" -#: common/models.py:1758 +#: common/models.py:1932 msgid "Show subscribed parts" msgstr "Vis abonnerte deler" -#: common/models.py:1759 +#: common/models.py:1933 msgid "Show subscribed parts on the homepage" msgstr "Vis abonnerte deler på startsiden" -#: common/models.py:1765 +#: common/models.py:1939 msgid "Show subscribed categories" msgstr "Vis abonnerte kategorier" -#: common/models.py:1766 +#: common/models.py:1940 msgid "Show subscribed part categories on the homepage" msgstr "Vis abonnerte delkatekorier på startsiden" -#: common/models.py:1772 +#: common/models.py:1946 msgid "Show latest parts" msgstr "Vis nyeste deler" -#: common/models.py:1773 +#: common/models.py:1947 msgid "Show latest parts on the homepage" msgstr "Vis nyeste deler på startsiden" -#: common/models.py:1779 -msgid "Recent Part Count" -msgstr "Antall nye deler" - -#: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "Antall nye deler som skal vises på startsiden" - -#: common/models.py:1786 +#: common/models.py:1953 msgid "Show unvalidated BOMs" msgstr "Vis uvaliderte stykklister" -#: common/models.py:1787 +#: common/models.py:1954 msgid "Show BOMs that await validation on the homepage" msgstr "Vis stykklister som venter på validering på startsiden" -#: common/models.py:1793 +#: common/models.py:1960 msgid "Show recent stock changes" msgstr "Vis nylige lagerendringer" -#: common/models.py:1794 +#: common/models.py:1961 msgid "Show recently changed stock items on the homepage" msgstr "Vis nylig endrede lagervarer på startsiden" -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "Antall nylig lagerbeholdning" - -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "Antall nylige lagervarer som skal vises på startsiden" - -#: common/models.py:1807 +#: common/models.py:1967 msgid "Show low stock" msgstr "Vis lav lagerbeholdning" -#: common/models.py:1808 +#: common/models.py:1968 msgid "Show low stock items on the homepage" msgstr "Vis lave lagervarer på startsiden" -#: common/models.py:1814 +#: common/models.py:1974 msgid "Show depleted stock" msgstr "Vis tomme lagervarer" -#: common/models.py:1815 +#: common/models.py:1975 msgid "Show depleted stock items on the homepage" msgstr "Vis tom lagerbeholdning på startsiden" -#: common/models.py:1821 +#: common/models.py:1981 msgid "Show needed stock" msgstr "Vis nødvendig lagerbeholdning" -#: common/models.py:1822 +#: common/models.py:1982 msgid "Show stock items needed for builds on the homepage" msgstr "Vis lagervarer som trengs for produksjon på startsiden" -#: common/models.py:1828 +#: common/models.py:1988 msgid "Show expired stock" msgstr "Vis utløpt lagerbeholdning" -#: common/models.py:1829 +#: common/models.py:1989 msgid "Show expired stock items on the homepage" msgstr "Vis utløpte lagervarer på startsiden" -#: common/models.py:1835 +#: common/models.py:1995 msgid "Show stale stock" msgstr "Vis foreldet lagerbeholdning" -#: common/models.py:1836 +#: common/models.py:1996 msgid "Show stale stock items on the homepage" msgstr "Vis foreldet lagerbeholdning på startsiden" -#: common/models.py:1842 +#: common/models.py:2002 msgid "Show pending builds" msgstr "Vis ventende produksjoner" -#: common/models.py:1843 +#: common/models.py:2003 msgid "Show pending builds on the homepage" msgstr "Vi ventende produksjoner på startsiden" -#: common/models.py:1849 +#: common/models.py:2009 msgid "Show overdue builds" msgstr "Vis forfalte produksjoner" -#: common/models.py:1850 +#: common/models.py:2010 msgid "Show overdue builds on the homepage" msgstr "Vis forfalte produksjoner på startsiden" -#: common/models.py:1856 +#: common/models.py:2016 msgid "Show outstanding POs" msgstr "Vis utestående Innkjøpsordrer" -#: common/models.py:1857 +#: common/models.py:2017 msgid "Show outstanding POs on the homepage" msgstr "Vis utestående Innkjøpsordrer på startsiden" -#: common/models.py:1863 +#: common/models.py:2023 msgid "Show overdue POs" msgstr "Vis forfalte Innkjøpsordrer" -#: common/models.py:1864 +#: common/models.py:2024 msgid "Show overdue POs on the homepage" msgstr "Vis forfalte Innkjøpsordrer på startsiden" -#: common/models.py:1870 +#: common/models.py:2030 msgid "Show outstanding SOs" msgstr "Vis utestående Salgsordrer" -#: common/models.py:1871 +#: common/models.py:2031 msgid "Show outstanding SOs on the homepage" msgstr "Vis utestående Salgsordrer på startsiden" -#: common/models.py:1877 +#: common/models.py:2037 msgid "Show overdue SOs" msgstr "Vis forfalte SOer" -#: common/models.py:1878 +#: common/models.py:2038 msgid "Show overdue SOs on the homepage" msgstr "Vis forfalte SOer på startsiden" -#: common/models.py:1884 +#: common/models.py:2044 msgid "Show pending SO shipments" msgstr "Vis ventende SO-forsendelser" -#: common/models.py:1885 +#: common/models.py:2045 msgid "Show pending SO shipments on the homepage" -msgstr "Vis ventende SO forsendelser på startsiden" +msgstr "Vis ventende SO-forsendelser på startsiden" -#: common/models.py:1891 +#: common/models.py:2051 msgid "Show News" msgstr "Vis Nyheter" -#: common/models.py:1892 +#: common/models.py:2052 msgid "Show news on the homepage" msgstr "Vis nyheter på startsiden" -#: common/models.py:1898 +#: common/models.py:2058 msgid "Inline label display" msgstr "Innebygd etikettvisning" -#: common/models.py:1899 +#: common/models.py:2059 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Vis PDF-etiketter i nettleseren fremfor å lastes ned som en fil" -#: common/models.py:1905 +#: common/models.py:2065 msgid "Default label printer" msgstr "Standard etikettskriver" -#: common/models.py:1906 +#: common/models.py:2066 msgid "Configure which label printer should be selected by default" msgstr "Konfigurer hvilken etikettskriver som skal være valgt som standard" -#: common/models.py:1912 +#: common/models.py:2072 msgid "Inline report display" msgstr "Innebygd rapportvisning" -#: common/models.py:1913 +#: common/models.py:2073 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Vis PDF-rapporter i nettleseren fremfor å lastes ned som en fil" -#: common/models.py:1919 +#: common/models.py:2079 msgid "Search Parts" msgstr "Søk i Deler" -#: common/models.py:1920 +#: common/models.py:2080 msgid "Display parts in search preview window" msgstr "Vis deler i forhåndsvsningsvinduet for søk" -#: common/models.py:1926 +#: common/models.py:2086 msgid "Search Supplier Parts" msgstr "Søk i Leverandørdeler" -#: common/models.py:1927 +#: common/models.py:2087 msgid "Display supplier parts in search preview window" msgstr "Vis leverandørdeler i forhåndsvisningsvinduet for søk" -#: common/models.py:1933 +#: common/models.py:2093 msgid "Search Manufacturer Parts" msgstr "Søk i Produsentdeler" -#: common/models.py:1934 +#: common/models.py:2094 msgid "Display manufacturer parts in search preview window" msgstr "Vis produsentdeler i forhåndsvisningsvinduet for søk" -#: common/models.py:1940 +#: common/models.py:2100 msgid "Hide Inactive Parts" msgstr "Skjul Inaktive Deler" -#: common/models.py:1941 +#: common/models.py:2101 msgid "Excluded inactive parts from search preview window" msgstr "Ekskluder inaktive deler fra forhåndsvisningsvinduet for søk" -#: common/models.py:1947 +#: common/models.py:2107 msgid "Search Categories" msgstr "Søk i kategorier" -#: common/models.py:1948 +#: common/models.py:2108 msgid "Display part categories in search preview window" msgstr "Vis delkategorier i forhåndsvisningsvinduet for søk" -#: common/models.py:1954 +#: common/models.py:2114 msgid "Search Stock" msgstr "Søk i lagerbeholdning" -#: common/models.py:1955 +#: common/models.py:2115 msgid "Display stock items in search preview window" msgstr "Vis lagervarer i forhåndsvisningsvinduet for søk" -#: common/models.py:1961 +#: common/models.py:2121 msgid "Hide Unavailable Stock Items" msgstr "Skjul utilgjengelige Lagervarer" -#: common/models.py:1962 +#: common/models.py:2122 msgid "Exclude stock items which are not available from the search preview window" msgstr "Ekskluder lagervarer som ikke er tilgjengelige fra forhåndsvisningsvinduet for søk" -#: common/models.py:1968 +#: common/models.py:2128 msgid "Search Locations" msgstr "Søk i Plasseringer" -#: common/models.py:1969 +#: common/models.py:2129 msgid "Display stock locations in search preview window" msgstr "Vis lagerplasseringer i forhåndsvisningsvinduet for søk" -#: common/models.py:1975 +#: common/models.py:2135 msgid "Search Companies" msgstr "Søk i Firma" -#: common/models.py:1976 +#: common/models.py:2136 msgid "Display companies in search preview window" msgstr "Vis firma i forhåndsvsningsvinduet for søk" -#: common/models.py:1982 +#: common/models.py:2142 msgid "Search Build Orders" msgstr "Søk i Produksjonsordrer" -#: common/models.py:1983 +#: common/models.py:2143 msgid "Display build orders in search preview window" msgstr "Vis produksjonsordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:1989 +#: common/models.py:2149 msgid "Search Purchase Orders" msgstr "Søk i Innkjøpsordrer" -#: common/models.py:1990 +#: common/models.py:2150 msgid "Display purchase orders in search preview window" msgstr "Vis innkjøpsordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:1996 +#: common/models.py:2156 msgid "Exclude Inactive Purchase Orders" msgstr "Ekskluder inaktive Innkjøpsordrer" -#: common/models.py:1997 +#: common/models.py:2157 msgid "Exclude inactive purchase orders from search preview window" msgstr "Ekskluder inaktive innkjøpsordrer fra forhåndsvisningsvinduet for søk" -#: common/models.py:2003 +#: common/models.py:2163 msgid "Search Sales Orders" msgstr "Søk i Salgsordrer" -#: common/models.py:2004 +#: common/models.py:2164 msgid "Display sales orders in search preview window" msgstr "Vis salgsordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2010 +#: common/models.py:2170 msgid "Exclude Inactive Sales Orders" msgstr "Ekskluder Inaktive Salgsordrer" -#: common/models.py:2011 +#: common/models.py:2171 msgid "Exclude inactive sales orders from search preview window" msgstr "Ekskluder inaktive salgsordrer fra forhåndsvisningsvinduet for søk" -#: common/models.py:2017 +#: common/models.py:2177 msgid "Search Return Orders" msgstr "Søk i Returordrer" -#: common/models.py:2018 +#: common/models.py:2178 msgid "Display return orders in search preview window" msgstr "Vis returordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2024 +#: common/models.py:2184 msgid "Exclude Inactive Return Orders" msgstr "Ekskluder Inaktive Returordrer" -#: common/models.py:2025 +#: common/models.py:2185 msgid "Exclude inactive return orders from search preview window" msgstr "Ekskluder inaktive returordrer fra forhåndsvisningsvinduet for søk" -#: common/models.py:2031 +#: common/models.py:2191 msgid "Search Preview Results" msgstr "Forhåndsvisning av søkeresultater" -#: common/models.py:2032 +#: common/models.py:2192 msgid "Number of results to show in each section of the search preview window" msgstr "Antall resultater å vise i hver seksjon av søkeresultatsforhåndsvisningen" -#: common/models.py:2038 +#: common/models.py:2198 msgid "Regex Search" msgstr "Regex-søk" -#: common/models.py:2039 +#: common/models.py:2199 msgid "Enable regular expressions in search queries" msgstr "Aktiver regulære uttrykk i søkeord" -#: common/models.py:2045 +#: common/models.py:2205 msgid "Whole Word Search" msgstr "Helordsøk" -#: common/models.py:2046 +#: common/models.py:2206 msgid "Search queries return results for whole word matches" msgstr "Søk returnerer resultater for treff med hele ord" -#: common/models.py:2052 +#: common/models.py:2212 msgid "Show Quantity in Forms" msgstr "Vis antall i skjemaer" -#: common/models.py:2053 +#: common/models.py:2213 msgid "Display available part quantity in some forms" msgstr "Vis antall tilgjengelige deler i noen skjemaer" -#: common/models.py:2059 +#: common/models.py:2219 msgid "Escape Key Closes Forms" msgstr "Escape-knappen lukker skjemaer" -#: common/models.py:2060 +#: common/models.py:2220 msgid "Use the escape key to close modal forms" msgstr "Bruk Escape-knappen for å lukke modal-skjemaer" -#: common/models.py:2066 +#: common/models.py:2226 msgid "Fixed Navbar" msgstr "Fast navigasjonsbar" -#: common/models.py:2067 +#: common/models.py:2227 msgid "The navbar position is fixed to the top of the screen" msgstr "Navigasjonsbarens posisjon er fast på toppen av skjermen" -#: common/models.py:2073 +#: common/models.py:2233 msgid "Date Format" msgstr "Datoformat" -#: common/models.py:2074 +#: common/models.py:2234 msgid "Preferred format for displaying dates" msgstr "Foretrukket format for å vise datoer" -#: common/models.py:2088 part/templates/part/detail.html:41 +#: common/models.py:2248 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Delplanlegging" -#: common/models.py:2089 +#: common/models.py:2249 msgid "Display part scheduling information" msgstr "Vis delplanleggingsinformasjon" -#: common/models.py:2095 part/templates/part/detail.html:62 +#: common/models.py:2255 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Lagertelling for Del" -#: common/models.py:2096 +#: common/models.py:2256 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Vis lagertellingsinformasjon for del (om lagertellingsfunksjonalitet er aktivert)" -#: common/models.py:2102 +#: common/models.py:2262 msgid "Table String Length" msgstr "Tabellstrenglengde" -#: common/models.py:2103 +#: common/models.py:2263 msgid "Maximimum length limit for strings displayed in table views" msgstr "Maksimal lengdegrense for strenger vist i tabeller" -#: common/models.py:2112 +#: common/models.py:2272 msgid "Default part label template" -msgstr "" +msgstr "Standard del etikett mal" -#: common/models.py:2113 +#: common/models.py:2273 msgid "The part label template to be automatically selected" -msgstr "" +msgstr "Del etikett malen skal velges automatsik" -#: common/models.py:2121 +#: common/models.py:2281 msgid "Default stock item template" -msgstr "" +msgstr "Standard lagervarer mal" -#: common/models.py:2122 +#: common/models.py:2282 msgid "The stock item label template to be automatically selected" -msgstr "" +msgstr "Lagervarer etikett mal skal valges automatisk" -#: common/models.py:2130 +#: common/models.py:2290 msgid "Default stock location label template" -msgstr "" +msgstr "Standard lagervarer lokasjon etikett mal" -#: common/models.py:2131 +#: common/models.py:2291 msgid "The stock location label template to be automatically selected" +msgstr "Lagervarer lokasjon etikett malen skal valges automatisk" + +#: common/models.py:2299 +msgid "Receive error reports" msgstr "" -#: common/models.py:2177 +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "Antall for prisbrudd" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Pris" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "Enhetspris på spesifisert antall" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "Endepunkt" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "Endepunktet hvor denne webhooken er mottatt" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "Navn for webhooken" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "Aktiv" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "Er webhooken aktiv" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "Sjetong" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "Nøkkel for tilgang" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "Hemmelig" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "Delt hemmlighet for HMAC" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "Melding ID" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "Unik Id for denne meldingen" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "Vert" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "Verten denne meldingen ble mottatt fra" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "Tittel" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "Overskrift for denne meldingen" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "Brødtekst" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "Innholdet i meldingen" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "Endepunktet meldingen ble mottatt fra" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "Arbeidet med" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "Var arbeidet med denne meldingen ferdig?" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "Id" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "Tittel" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "Publisert" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "Forfatter" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "Sammendrag" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "Les" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "Er dette nyhetselementet lest?" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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 "Bilde" -#: common/models.py:2737 +#: common/models.py:2902 msgid "Image file" msgstr "Bildefil" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "Symbol" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "Definisjon" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "Enhets definisjon" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "Ny {verbose_name}" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "En ny ordre har blitt opprettet og tilordnet til deg" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "Artikler mottatt" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "Artikler har blitt mottatt mot en innkjøpsordre" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "Artikler har blitt mottatt mot en returordre" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "Feil oppstått i utvidelse" @@ -3472,13 +3574,13 @@ msgstr "Sammenlign varer" #: common/views.py:420 msgid "Fields matching failed" -msgstr "Feltene som matcher mislyktes" +msgstr "Matching av felter mislyktes" #: common/views.py:481 msgid "Parts imported" msgstr "Deler importert" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "Beskrivelse av firma" msgid "Description of the company" msgstr "Beskrivelse av firmaet" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "Nettside" @@ -3507,331 +3609,395 @@ msgstr "Nettside" msgid "Company website URL" msgstr "Bedriftens nettside URL" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Adresse" - -#: company/models.py:119 -msgid "Company address" -msgstr "Firmaet adresse" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Telefonnummer" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "Kontakt-telefonnummer" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "E-post" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "Kontakt e-post" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Kontakt" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "Kontaktpunkt" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "Link til ekstern bedriftsinformasjon" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "er kunde" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "Selger du varer til dette firmaet?" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "er leverandør" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "Kjøper du varer fra dette firmaet?" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "er produsent" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "Produserer dette firmaet deler?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "Standardvaluta brukt for dette firmaet" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Firma" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "Vegl bedrift" + +#: company/models.py:337 +msgid "Address title" +msgstr "Adressetittel" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "Tittel som beskriver addressen" + +#: company/models.py:342 +msgid "Primary address" +msgstr "Hovedadresse" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "Sett som hovedadresse" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "Linje 1" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "Adresselinje 1" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "Linje 2" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "Adresselinje 2" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "Postnummer" + +#: company/models.py:361 +msgid "City/Region" +msgstr "Poststed/område" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "Postnummerets by/område" + +#: company/models.py:366 +msgid "State/Province" +msgstr "Delstat/provins" + +#: company/models.py:367 +msgid "State or province" +msgstr "Delstat eller provins" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "Land" + +#: company/models.py:372 +msgid "Address country" +msgstr "Adressens land" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "Notater til transportør" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "Notater for transportør" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "Interne fraktnotater" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "Fraktnotater for internt bruk" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "Lenke til adresseinformasjon (ekstern)" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basisdel" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "Velg del" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Produsent" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Velg produsent" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "MPN" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "Produsentens varenummer" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "URL for ekstern produsentdel-lenke" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "Produsentens delbeskrivelse" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Produsentdeler" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "Parameternavn" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Verdi" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "Parameterverdi" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "Enheter" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "Parameterenheter" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" -msgstr "" +msgstr "Pakkeenhetene må være komptible med basisdelenhetene" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" -msgstr "" +msgstr "Mengden må være større enn null" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "Den sammenkoblede produsentdelen må referere til samme basisdel" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Leverandør" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "Velg leverandør" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "SKU-kode" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "Leverandørens lagerbeholdningsenhet" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "Velg produsentdel" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "URL for ekstern leverandørdel-lenke" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "Leverandørens delbeskrivelse" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "Notat" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "grunnkostnad" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimum betaling (f.eks. lageravgift på lager)" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Emballasje" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "Delemballasje" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "Pakkeantall" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." -msgstr "" +msgstr "Totall antall pakket i en enkelt pakke. La stå tomt for enkeltgjenstander." -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "flere" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "Bestill flere" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "Tilgjengelig" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "Antall tilgjengelig fra leverandør" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "Tilgjengelighet oppdatert" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "Dato for siste oppdatering av tilgjengelighetsdata" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "Standardvaluta brukt for denne leverandøren" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "Opprett Innkjøpsordre" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "Firmavalg" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "Rediger firmainformasjon" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "Rediger Firma" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "Slett firma" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "Slett Firma" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "Slett Firma" msgid "Part image" msgstr "Bilde av del" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Last opp nytt bilde" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Last ned bilde fra URL" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "Slett bilde" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Kunde" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "Bruker standardvaluta" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Adresse" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "Telefon" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "Fjern Bilde" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "Fjern tilknyttet bilde fra dette firmaet" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "Fjern" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "Last opp bilde" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "Last ned Bilde" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "Leverandørdeler" @@ -3916,156 +4089,144 @@ msgstr "Opprett ny leverandørdel" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "Ny leverandørdel" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "Bestill deler" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "Slett deler" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "Slett deler" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "Produsentdeler" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "Opprett ny produsentdel" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "Ny Produsentdel" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "Leverandørs lagerbeholdning" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "Innkjøpsordrer" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "Opprett ny innkjøpsordre" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "Ny innkjøpsordre" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "Salgsordre" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "Opprett ny salgsordre" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "Ny salgsordre" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "Tildelt lagerbeholdning" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "Returordrer" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "Opprett ny returordre" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "Ny Returordre" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "Notater til firma" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "Firmakontakter" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "Legg til Kontakt" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "Leverandørliste" +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "Bedriftens adresse" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "Legg til adresse" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "Produsenter" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "Bestill del" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "Endre produsentdel" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "Slett produsentdel" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "Intern del" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "Ingen produsentinformasjon tilgjengelig" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "Leverandører" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "Slett leverandørdeler" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "Slett" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parametere" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "Nytt Parameter" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "Slett parametere" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "Legg til Parameter" @@ -4137,106 +4280,111 @@ msgstr "Tildelte lagervarer" msgid "Contacts" msgstr "Kontakter" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "Adresser" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "Leverandørdel" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "Handlinger for leverandørdeler" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "Bestill del" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "Oppdater Tilgjengelighet" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "Rediger Leverandørdel" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "Dupliser Leverandørdel" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "Slett Leverandørdel" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "Slett Leverandørdel" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "Ingen leverandørinformasjon tilgjengelig" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "Leverandørs lagerbeholdning" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "Opprett ny lagervare" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Ny Lagervare" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "Leverandørdelordre" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "Prisinformasjon" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "Legg til Prisbrudd" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "Leverandørdel-QR-kode" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "Koble strekkode til Leverandørdel" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "Oppdater Delens Tilgjengelighet" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "Lagervarer" @@ -4244,103 +4392,96 @@ msgstr "Lagervarer" msgid "Supplier Part Pricing" msgstr "Leverandørdelprising" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "Ny Leverandør" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "Ny Produsent" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "Kunder" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "Ny Kunde" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "Firmaer" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "Nytt Firma" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "Etikettnavn" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "Etikettbeskrivelse" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "Etikett" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "Etikett-malfil" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "Aktivert" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "Etikettmal er aktiver" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "Bredde [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "Etikettbredde, spesifisert i mm" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "Høyde [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "Etiketthøyde, spesifisert i mm" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "Filnavnmønster" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" -msgstr "Mønster for å generere etikettens filnavn" +msgstr "Mønster for generering av etikett-filnavn" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," -msgstr "Søkefilter (kommaseparert liste over nøkkel=verdi-par)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "Søkefiltre (kommaseparert liste over nøkkel=verdi-par)" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "Filtre" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "Spørringsfiltre (kommaseparert liste over nøkkel=verdi-par" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "Spørringsfilter deler (kommaseparert liste over nøkkel=verdi-par)" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" -msgstr "QC kode" +msgid "QR Code" +msgstr "QR-kode" #: label/templates/label/part/part_label_code128.html:31 #: label/templates/label/stocklocation/qr_and_text.html:31 @@ -4348,170 +4489,174 @@ msgstr "QC kode" msgid "QR code" msgstr "QR-kode" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "Total pris" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "Ingen samsvarende innkjøpsordre funnet" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "Innkjøpsordre" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "Returordre" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "Ukjent" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "Total pris for denne ordren" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "Ordre valuta" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "Valuta for denne ordren (la stå tom for å bruke firmastandard)" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "Kontakten samsvarer ikke med valgt firma" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "Ordrebeskrivelse (valgfritt)" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "Velg prosjektkode for denne ordren" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "Lenke til ekstern side" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "Forventet dato for levering av ordre. Bestillingen vil være forfalt etter denne datoen." -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "Opprettet av" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "Bruker eller gruppe ansvarlig for ordren" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "Kontaktpunkt for denne ordren" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "Bedriftsadresse for denne ordren" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "Ordrereferanse" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "Status for innkjøpsordre" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "Firma som varene blir bestilt fra" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "Leverandørreferanse" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "Leverandør ordrereferanse" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "mottatt av" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "Utgivelsesdato" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "Dato bestilling ble sendt" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "Dato ordre ble fullført" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "Delleverandør må matche PO-leverandør" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "Mengde må være positiv" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "Firma som varene selges til" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "Kundereferanse " -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "Kundens ordrereferanse" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "Leveringsdato" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "sendt av" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "Bestillingen kan ikke fullføres da ingen deler er tilordnet" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "Kun en åpen ordre kan merkes som fullført" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "Bestillingen kan ikke fullføres da det finnes ufullstendige varepartier" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "Denne ordren kan ikke fullføres da det fortsatt er ufullstendige artikler" @@ -4519,398 +4664,398 @@ msgstr "Denne ordren kan ikke fullføres da det fortsatt er ufullstendige artikl msgid "Item quantity" msgstr "Antall" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "Linje referanse" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "Linje notat" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "Måldato for denne linjen (la stå tomt for å bruke måldatoen fra ordren)" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" -msgstr "" +msgstr "Linjeelementbeskrivelse (valgfritt)" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "Kontekst" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "Ytterligere kontekst for denne linjen" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "Enhetspris" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "Delens leverandør må samsvare med leverandør" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "slettet" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "Ordre" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "Leverandørdel" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "Mottatt" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "Antall enheter mottatt" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Innkjøpspris" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "Enhet-innkjøpspris" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "Hvor vil innkjøper at artikkelen skal lagres?" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "Virtuell del kan ikke tildeles salgsordre" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "Kun salgbare deler kan tildeles en salgsordre" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Salgspris" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "Enhets-salgspris" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "Sendt antall" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "Dato for forsendelse" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" -msgstr "" +msgstr "Leveringsdato" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" -msgstr "" +msgstr "Dato for levering av forsendelse" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "Sjekket Av" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "Brukeren som sjekket forsendelsen" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Forsendelse" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "Forsendelsesnummer" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "Sporingsnummer" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "Sporingsinformasjon for forsendelse" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "Fakturanummer" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "Referansenummer for tilknyttet faktura" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "Forsendelsen er allerede sendt" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "Forsendelsen har ingen tildelte lagervarer" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "Lagervarer er ikke blitt tildelt" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "Kan ikke tildele lagervare til en linje med annen del" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "Kan ikke tildele lagerbeholdning til en linje uten en del" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Tildelingsantall kan ikke overstige tilgjengelig lagerbeholdning" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "Antall må være 1 for serialisert lagervare" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "Salgsordre samsvarer ikke med forsendelse" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "Forsendelsen samsvarer ikke med salgsordre" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "Linje" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "Forsendelsesreferanse for salgsordre" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "Artikkel" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "Velg lagervare å tildele" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "Angi lagertildelingsmengde" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "Returordre-referanse" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "Firmaet delen skal returneres fra" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "Returordrestatus" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "Kun serialiserte artikler kan tilordnes en Returordre" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "Velg artikkel som skal returneres fra kunde" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "Mottatt Dato" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "Datoen denne returartikkelen ble mottatt" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Utfall" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "Utfall for dette linjeelementet" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "Kostnad forbundet med retur eller reparasjon for dette linjeelementet" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "Ordren kan ikke kanselleres" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "Tillat ordre å lukkes med ufullstendige linjeelementer" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "Ordren har ufullstendige linjeelementer" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "Ordren er ikke åpen" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "Innkjøpsvaluta" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "Leverandørdel må angis" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "Innkjøpsordre må angis" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "Leverandør må samsvare med innkjøpsordre" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "Innkjøpsordre må samsvare med leverandør" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "Ordrelinje" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "Linjeelementet samsvarer ikke med innkjøpsordre" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "Velg lagerplassering for mottatte enheter" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "Angi batchkode for innkommende lagervarer" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "Angi serienummer for innkommende lagervarer" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Strekkode" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "Skannet strekkode" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "Strekkode allerede i bruk" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "Heltallsverdi må angis for sporbare deler" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "Linjeelementer må være oppgitt" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "Målplassering må angis" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "Angitte strekkodeverdier må være unike" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "Valuta for salgspris" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "Ingen forsendelsesopplysninger oppgitt" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "Linjeelement er ikke knyttet til denne ordren" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "Mengden må være positiv" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "Skriv inn serienummer for å tildele" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "Forsendelsen er allerede sendt" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "Forsendelsen er ikke knyttet til denne ordren" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "Ingen treff funnet for følgende serienummer" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "Følgende serienummer er allerede tildelt" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "Returordrelinje" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "Linjeelementet samsvarer ikke med returordre" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "Linjeelementet er allerede mottatt" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "Artikler kan bare mottas mot ordrer som pågår" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "Valuta for linje" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "Forfalt Innkjøpsordre" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "Innkjøpsordre {po} er nå forfalt" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "Forfalt Salgsordre" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "Salgsordre {so} er nå forfalt" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "Skriv ut innkjøpsordrerapport" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "Eksporterer ordre til fil" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "Ordrehandlinger" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "Rediger ordre" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "Kanseller ordre" @@ -4949,90 +5094,82 @@ msgstr "Dupliser ordre" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "Send ordre" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "Motta artikler" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "Motta Artikler" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "Merk ordren som fullført" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "Fullfør ordre" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" -msgstr "" +msgstr "Miniatyrbilde for leverandør" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "Ordrereferanse" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "Ordrebeskrivelse" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "Ordrestatus" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "Ingen leverandørinformasjon tilgjengelig" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "Fullførte elementer" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "Ufullstendig" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" -msgstr "" +msgstr "Utstedt" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" -msgstr "" +msgstr "Total kostnad" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "Total kostnad kunne ikke beregnes" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "Innkjøpsordre-QR-kode" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "Koble strekkode til Innkjøpsordre" @@ -5085,13 +5222,13 @@ msgstr "Duplikatvalg" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Fjern rad" @@ -5152,9 +5289,9 @@ msgstr "Innkjøpsordreartikler" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "Legg til linjeelement" @@ -5165,72 +5302,67 @@ msgstr "Legg til linjeelement" msgid "Receive Line Items" msgstr "Motta linjeelementer" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "Slett linjeelementer" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "Ekstralinjer" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "Legg til Ekstralinje" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "Mottatte artikler" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "Ordrenotater" #: order/templates/order/return_order_base.html:18 #: order/templates/order/sales_order_base.html:18 msgid "Customer logo thumbnail" -msgstr "" +msgstr "Miniatyrbilde for kundelogo" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "Skriv ut returordrerapport" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "Skriv ut pakkeliste" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "Kundereferanse" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "Total kostnad" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "Returordre-QR-kode" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "Koble strekkode til Returordre" @@ -5238,35 +5370,35 @@ msgstr "Koble strekkode til Returordre" msgid "Order Details" msgstr "Ordredetaljer" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "Skriv ut salgsordrerapport" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "Send artikler" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "Fullfør Salgsordre" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "Salgsordren er ikke fullstendig tildelt" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "Fullførte forsendelser" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "Salgsordre-QR-kode" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "Koble strekkode til Salgsordre" @@ -5274,18 +5406,17 @@ msgstr "Koble strekkode til Salgsordre" msgid "Sales Order Items" msgstr "Salgsordreartikler" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "Ventende forsendelser" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Handlinger" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "Ny forsendelse" @@ -5293,1159 +5424,1172 @@ msgstr "Ny forsendelse" msgid "Match Supplier Parts" msgstr "Match Leverandørdeler" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "Salgsordre ikke funnet" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "Pris ikke funnet" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "Oppdaterte {part} enhetspris to {price}" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "Oppdaterte {part} enhetspris til {price} og antall til {qty}" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" -msgstr "" +msgstr "Del-ID" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" -msgstr "" +msgstr "Delnavn" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" -msgstr "" +msgstr "Delbeskrivelse" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" -msgstr "" +msgstr "IPN" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" -msgstr "" +msgstr "Revisjon" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" -msgstr "" +msgstr "Nøkkelord" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" -msgstr "" +msgstr "Kategori-ID" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" -msgstr "" +msgstr "Kategorinavn" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" -msgstr "" +msgstr "Standard posisjons-ID" #: part/admin.py:45 msgid "Default Supplier ID" -msgstr "" +msgstr "Standard leverandør ID" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variant av" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" -msgstr "" +msgstr "Minimum lagervare" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" -msgstr "" +msgstr "På lager" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" -msgstr "" +msgstr "I bestilling" #: part/admin.py:63 part/templates/part/part_sidebar.html:27 msgid "Used In" -msgstr "" +msgstr "Brukt i" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" -msgstr "" +msgstr "Produseres" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" -msgstr "" +msgstr "Minimum kostnad" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" -msgstr "" +msgstr "Maksimum kostnad" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" -msgstr "" +msgstr "Overordnet ID" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" -msgstr "" +msgstr "Overordnet navn" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" -msgstr "" +msgstr "Sti til kategori" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "Deler" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" -msgstr "" +msgstr "BOM-nivå" + +#: part/admin.py:263 +msgid "BOM Item ID" +msgstr "BOM artikkel-ID" #: part/admin.py:267 -msgid "BOM Item ID" -msgstr "" - -#: part/admin.py:271 msgid "Parent IPN" -msgstr "" +msgstr "Overodnet IPN" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" -msgstr "" +msgstr "Del IPN" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" -msgstr "" +msgstr "Minstepris" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" -msgstr "" +msgstr "Makspris" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" -msgstr "" +msgstr "Innkommende innkjøpsordre" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" -msgstr "" +msgstr "Utgående salgsordre" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" -msgstr "" +msgstr "Lagervarer produsert av bygg order" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" -msgstr "" +msgstr "Lagervarer som kreves for Bygg Order" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" -msgstr "" +msgstr "Gyldig" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" -msgstr "" +msgstr "Godkjenn hele Stykklisten" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" -msgstr "" +msgstr "Dette alternativet må være valgt" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" -msgstr "" +msgstr "Standard plassering" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" -msgstr "" +msgstr "Total lagerbeholdning" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" -msgstr "" +msgstr "Tilgjengelig lagerbeholdning" #: part/forms.py:48 msgid "Input quantity for price calculation" -msgstr "" +msgstr "Sett inn antall for prisberegning" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" -msgstr "" +msgstr "Delkategori" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" -msgstr "" +msgstr "Delkategorier" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" -msgstr "" +msgstr "Standardplassering for deler i denne kategorien" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" -msgstr "" +msgstr "Strukturell" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." -msgstr "" +msgstr "Deler kan ikke tilordnes direkte til en strukturell kategori, men kan tilordnes til underkategorier." -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" -msgstr "" +msgstr "Standard nøkkelord" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "Standard nøkkelord for deler i denne kategorien" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "Ikon" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "Ikon (valgfritt)" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "Du kan ikke gjøre denne delkategorien strukturell fordi noen deler allerede er tilordnet den!" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "Ugyldig valg for overordnet del" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" -msgstr "Del '{p1}' er brukt i stykklisten til '{p2}' (rekursivt)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "Internt delnummer må matche regex-mønster {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "Lagervare med dette serienummeret eksisterer allerede" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "Duplikat av internt delnummer er ikke tillatt i delinnstillinger" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "Del med dette Navnet, internt delnummer og Revisjon eksisterer allerede." -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "Deler kan ikke tilordnes strukturelle delkategorier!" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "Delnavn" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "Er Mal" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "Er delen en maldel?" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "Er delen en variant av en annen del?" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "Delbeskrivelse (valgfritt)" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "Del-nøkkelord for å øke synligheten i søkeresultater" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "Kategori" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "Delkategori" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "Internt delnummer" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "Delrevisjon eller versjonsnummer" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "Hvor er denne artikkelen vanligvis lagret?" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Standard leverandør" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "Standard leverandørdel" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "Standard utløp" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "Utløpstid (i dager) for lagervarer av denne delen" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "Minimum tillatt lagernivå" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "Måleenheter for denne delen" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Kan denne delen bygges fra andre deler?" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Kan denne delen brukes til å bygge andre deler?" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "Har denne delen sporing av unike artikler?" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "Kan denne delen kjøpes inn fra eksterne leverandører?" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "Kan denne delen selges til kunder?" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "Er denne delen aktiv?" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "Er dette en virtuell del, som et softwareprodukt eller en lisens?" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" -msgstr "Kontrollsum for stykkliste" +msgstr "Kontrollsum for BOM" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" -msgstr "Lagret sjekkliste-kontrollsum" +msgstr "Lagret BOM-kontrollsum" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "Stykkliste sjekket av" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "Stykkliste sjekket dato" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "Opprettingsbruker" -#: part/models.py:1042 -msgid "User responsible for this part" -msgstr "Bruker ansvarlig for denne delen" +#: part/models.py:1014 +msgid "Owner responsible for this part" +msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "Siste lagertelling" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "Selg flere" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "Valuta som brukes til å bufre prisberegninger" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" -msgstr "Minimal stykklistekostnad" +msgstr "Minimal BOM-kostnad" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "Minste kostnad for komponentdeler" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" -msgstr "Maksimal stykklistekostnad" +msgstr "Maksimal BOM-kostnad" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "Maksimal kostnad for komponentdeler" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "Minimal innkjøpskostnad" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "Minimal historisk innkjøpskostnad" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "Maksimal innkjøpskostnad" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "Maksimal historisk innkjøpskostnad" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "Minimal intern pris" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "Minimal kostnad basert på interne prisbrudd" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "Maksimal intern pris" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "Maksimal kostnad basert på interne prisbrudd" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "Minimal leverandørpris" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "Minimumspris for del fra eksterne leverandører" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "Maksimal leverandørpris" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "Maksimalpris for del fra eksterne leverandører" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "Minimal Variantkostnad" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "Beregnet minimal kostnad for variantdeler" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "Maksimal Variantkostnad" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "Beregnet maksimal kostnad for variantdeler" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "Beregnet samlet minimal kostnad" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "Beregnet samlet maksimal kostnad" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "Minimal salgspris" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "Minimal salgspris basert på prisbrudd" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "Maksimal Salgspris" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "Maksimal salgspris basert på prisbrudd" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "Minimal Salgskostnad" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "Minimal historisk salgspris" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "Maksimal Salgskostnad" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "Maksimal historisk salgspris" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "Del for varetelling" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "Antall" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "Antall individuelle lagerenheter på tidspunkt for varetelling" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "Total tilgjengelig lagerbeholdning på tidspunkt for varetelling" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "Dato" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "Dato for utført lagertelling" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "Flere notater" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "Bruker som utførte denne lagertellingen" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "Minimal lagerkostnad" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "Estimert minimal kostnad for lagerbeholdning" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "Maksimal lagerkostnad" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "Estimert maksimal kostnad for lagerbeholdning" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "Rapport" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "Lagertellingsrapportfil (generert internt)" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "Antall deler" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "Antall deler dekket av varetellingen" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "Bruker som forespurte varetellingsrapporten" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "Testmaler kan bare bli opprettet for sporbare deler" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "Test med dette navnet finnes allerede for denne delen" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "Testnavn" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "Angi et navn for testen" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "Testbeskrivelse" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "Legg inn beskrivelse for denne testen" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Påkrevd" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "Er det påkrevd at denne testen bestås?" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "Krever verdi" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "Krever denne testen en verdi når det legges til et testresultat?" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "Krever vedlegg" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "Krever denne testen et filvedlegg når du legger inn et testresultat?" #: part/models.py:3346 msgid "Checkbox parameters cannot have units" -msgstr "" +msgstr "Avmerkingsboks parameter kan ikke ha enheter" #: part/models.py:3351 msgid "Checkbox parameters cannot have choices" -msgstr "" +msgstr "Avmerkingsboks parameter kan ikke har valg" #: part/models.py:3369 msgid "Choices must be unique" -msgstr "" +msgstr "Valg må være unikt" #: part/models.py:3385 msgid "Parameter template name must be unique" msgstr "Navn på parametermal må være unikt" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "Parameternavn" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" -msgstr "" +msgstr "Fysisk enheter for denne parameteren" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "Parameterbeskrivelse" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" -msgstr "" +msgstr "Avmerkingsboks" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" -msgstr "" +msgstr "Er dette parameteret en avmerkingsboks?" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" -msgstr "" +msgstr "Valg" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" -msgstr "" +msgstr "Gyldige valg for denne parameteren (kommaseparert)" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" -msgstr "" +msgstr "Ugyldig valg for parameterverdi" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "Overordnet del" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "Parametermal" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "Data" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "Parameterverdi" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "Standardverdi" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "Standard Parameterverdi" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "Del-ID eller delnavn" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "Unik del-ID-verdi" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "Delens interne delnummerverdi" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "Nivå" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" -msgstr "Stykklistenivå" +msgstr "BOM-nivå" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "BOM-artikkel" + +#: part/models.py:3771 msgid "Select parent part" msgstr "Velg overordnet del" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "Underordnet del" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" -msgstr "Velg del som skal brukes i stykkliste" +msgstr "Velg del som skal brukes i BOM" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" -msgstr "Stykklisteantall for denne stykklisteartikkelen" +msgstr "BOM-antall for denne BOM-artikkelen" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "Valgfritt" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" -msgstr "Denne stykklisteartikkelen er valgfri" +msgstr "Denne BOM-artikkelen er valgfri" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "Forbruksvare" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" -msgstr "Denne sykklisteartikkelen er forbruksvare (den spores ikke i produksjonsordrer)" +msgstr "Denne BOM-artikkelen er forbruksvare (den spores ikke i produksjonsordrer)" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Svinn" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Forventet produksjonssvinn (absolutt eller prosent)" -#: part/models.py:3798 -msgid "BOM item reference" -msgstr "Stykklisteartikkel-referanse" - -#: part/models.py:3801 -msgid "BOM item notes" -msgstr "Stykklisteartikkel-notater" - #: part/models.py:3805 +msgid "BOM item reference" +msgstr "BOM-artikkelreferanse" + +#: part/models.py:3808 +msgid "BOM item notes" +msgstr "BOM-artikkelnotater" + +#: part/models.py:3812 msgid "Checksum" msgstr "Kontrollsum" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" -msgstr "Stykklistelinje kontrollsum" +msgstr "BOM-linje kontrollsum" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Godkjent" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" -msgstr "Denne stykklisteartikkelen er godkjent" +msgstr "Denne BOM-artikkelen er godkjent" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:1054 +#: templates/js/translated/table_filters.js:178 +#: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "Arves" -#: part/models.py:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" -msgstr "Denne stykklisteartikkelen er arvet fra stykkliste for variantdeler" +msgstr "Denne BOM-artikkelen er arvet fra stykkliste for variantdeler" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Tillat Varianter" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" -msgstr "Lagervarer for variantdeler kan brukes for denne stykklisteartikkelen" +msgstr "Lagervarer for variantdeler kan brukes for denne BOM-artikkelen" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "Antall må være heltallsverdi for sporbare deler" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "Underordnet del må angis" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" -msgstr "Stykklisteartikkel-erstatning" +msgstr "BOM-artikkel erstatning" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "Erstatningsdel kan ikke være samme som hoveddelen" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" -msgstr "Overordnet stykklisteartikkel" +msgstr "Overordnet BOM-artikkel" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "Erstatningsdel" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "Del 1" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "Del 2" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "Velg relatert del" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "Del-forhold kan ikke opprettes mellom en del og seg selv" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "Duplikatforhold eksisterer allerede" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "Innkjøpsvaluta for lagervaren" -#: part/serializers.py:302 +#: part/serializers.py:346 +msgid "No parts selected" +msgstr "Ingen deler valgt" + +#: part/serializers.py:354 +msgid "Select category" +msgstr "Velg kategori" + +#: part/serializers.py:384 msgid "Original Part" msgstr "Original Del" -#: part/serializers.py:302 +#: part/serializers.py:384 msgid "Select original part to duplicate" msgstr "Velg original del å duplisere" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy Image" msgstr "Kopier Bilde" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy image from original part" msgstr "Kopier bilde fra originaldel" -#: part/serializers.py:312 part/templates/part/detail.html:296 +#: part/serializers.py:394 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Kopier Stykkliste" -#: part/serializers.py:312 +#: part/serializers.py:394 msgid "Copy bill of materials from original part" msgstr "Kopier stykkliste fra original del" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy Parameters" msgstr "Kopier parametere" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy parameter data from original part" msgstr "Kopier parameterdata fra originaldel" -#: part/serializers.py:327 +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 msgid "Initial Stock Quantity" msgstr "Innledende lagerbeholdning" -#: part/serializers.py:327 +#: part/serializers.py:414 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "Angi initiell lagermengde for denne delen. Hvis antall er null, er ingen lagerbeholdning lagt til." -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Initial Stock Location" msgstr "Innledende lagerplassering" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Specify initial stock location for this Part" msgstr "Angi initiell lagerplasering for denne delen" -#: part/serializers.py:343 +#: part/serializers.py:430 msgid "Select supplier (or leave blank to skip)" msgstr "Velg leverandør (eller la stå tom for å hoppe over)" -#: part/serializers.py:354 +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "Velg produsent (eller la stå tom for å hoppe over)" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "Produsentens delenummer" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "Valgt firma er ikke en gyldig leverandør" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "Valgt firma er ikke en gyldig produsent" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "Produsentdel som matcher dette MPN-et, finnes allerede" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "Leverandørdel som matcher denne SKU-en, finnes allerede" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "Dupliser del" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "Kopier innledende data fra en annen del" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Innledende lagerbeholdning" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" -msgstr "" +msgstr "Lag en del med innledende lagermengde" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" -msgstr "" +msgstr "Leverandøropplysninger" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" -msgstr "" +msgstr "Legg til innledende leverandørinformasjon for denne delen" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "Kopier kategoriparametre" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "Kopier parametermaler fra valgt delkategori" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "Begrens lagerbeholdningsrapport til en bestemt del og enhver variant av delen" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "Begrens lagerbeholdningsrapport til en bestemt delkategori og alle underkategorier" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "Begrens lagerbeholdningsrapport til en bestemt plasering og eventuelle underplasseringer" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "Generer rapport" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "Genererer rapport som inneholder beregnede lagerdata" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "Oppdater deler" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "Oppdater spesifiserte deler med beregnede lagerbeholdningsdata" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "Lagerbeholdningsfunksjonalitet er ikke aktivert" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "Oppdater" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "Oppdater priser for denne delen" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "Velg del å kopiere BOM fra" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "Fjern eksisterende data" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" -msgstr "Fjern eksisterende BOM produkter før kopiering" +msgstr "Fjern eksisterende BOM-artikler før kopiering" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "Inkluder arvet" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" -msgstr "Inkluder BOM elementer som er arvet fra mal-deler" +msgstr "Inkluder BOM-artikler som er arvet fra maldeler" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "Hopp over ugyldige rader" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "Aktiver dette alternativet for å hoppe over ugyldige rader" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "Kopier erstatningsdeler" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "Kopier erstatningsdeler når BOM elementer dupliseres" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" -msgstr "" +msgstr "Nullstill eksisterende BOM" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" -msgstr "" +msgstr "Fjern eksisterende BOM-artikler før opplastning" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" -msgstr "" +msgstr "Ingen del-kolonne angitt" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" -msgstr "" +msgstr "Flere matchende deler funnet" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" -msgstr "" +msgstr "Ingen matchende delere funnet" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" -msgstr "" +msgstr "Delen er ikke betegnet som en komponent" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" -msgstr "" +msgstr "Antall ikke oppgitt" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" -msgstr "" +msgstr "Ugyldig antall" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" -msgstr "" +msgstr "Minst en BOM-artikkel kreves" -#: part/tasks.py:39 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 +msgid "Total Quantity" +msgstr "Totalt Antall" + +#: part/stocktake.py:224 +msgid "Total Cost Min" +msgstr "Total Kostnad Min" + +#: part/stocktake.py:225 +msgid "Total Cost Max" +msgstr "Total Kostnad Max" + +#: part/stocktake.py:289 +msgid "Stocktake Report Available" +msgstr "Lagertellingsrapport tilgjengelig" + +#: part/stocktake.py:290 +msgid "A new stocktake report is available for download" +msgstr "En ny lagertellingsrapport er tilgjengelig for nedlasting" + +#: part/tasks.py:33 msgid "Low stock notification" msgstr "Varsel om lav lagerbeholdning" -#: part/tasks.py:40 +#: part/tasks.py:34 #, python-brace-format msgid "The available stock for {part.name} has fallen below the configured minimum level" msgstr "Tilgjengelig lagerbeholdning for {part.name} har falt under det konfigurerte minimumsnivået" -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 -msgid "Total Quantity" -msgstr "Totalt Antall" - -#: part/tasks.py:295 -msgid "Total Cost Min" -msgstr "Total Kostnad Min" - -#: part/tasks.py:296 -msgid "Total Cost Max" -msgstr "Total Kostnad Max" - -#: part/tasks.py:360 -msgid "Stocktake Report Available" -msgstr "Lagertellingsrapport tilgjengelig" - -#: part/tasks.py:361 -msgid "A new stocktake report is available for download" -msgstr "En ny lagertellingsrapport er tilgjengelig for nedlasting" - #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." -msgstr "Du har ikke rettigheter til å redigere stykklisten." +msgstr "Du har ikke rettigheter til å redigere BOMen." #: part/templates/part/bom.html:15 msgid "The BOM this part has been changed, and must be validated" @@ -6461,90 +6605,70 @@ msgstr "Stykklisten for %(part)s ble sist sjekket av %(checker)s den %( msgid "The BOM for %(part)s has not been validated." msgstr "Stykklisten for %(part)s er ikke godkjent." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "Stykklistehandlinger" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "Slett Artikler" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "Utfør lagertelling for denne delkategorien" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "Du abonnerer på varsler for denne kategorien" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "Abonner på varsler for denne kategorien" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "Kategorihandlinger" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "Rediger kategori" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "Rediger Kategori" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "Slett kategori" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "Slett Kategori" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "Toppnivå delkategori" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Underkategorier" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "Deler (inkludert underkategorier)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "Opprett ny del" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "Ny Del" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "Valg" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "Sett kategori" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "Sett Kategori" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "Delparametere" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "Opprett ny delkategori" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "Ny Kategori" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "Oppdater planleggingsdata" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "Oppdater" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "Legg til lagertellingsinformasjon" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "Lagertelling" @@ -6604,301 +6728,301 @@ msgstr "Deltestmaler" msgid "Add Test Template" msgstr "Legg til Testmal" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "Salgsordretildelinger" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "Delnotater" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "Delvarianter" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "Opprett ny variant" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "Ny Variant" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "Legg til ny parameter" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "Relaterte Deler" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" -msgstr "" +msgstr "Legg til relatert" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" -msgstr "" +msgstr "Stykkliste (BOM)" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" -msgstr "" +msgstr "Eksporthandlinger" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" -msgstr "" +msgstr "Eksporter BOM" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" -msgstr "" +msgstr "Skriv ut BOM-rapport" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "BOM-handlinger" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" -msgstr "" +msgstr "Last opp BOM" + +#: part/templates/part/detail.html:278 +msgid "Validate BOM" +msgstr "Godkjenn BOM" + +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +msgid "Add BOM Item" +msgstr "Legg til BOM-artikkel" #: part/templates/part/detail.html:297 -msgid "Validate BOM" -msgstr "" - -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 -msgid "Add BOM Item" -msgstr "" - -#: part/templates/part/detail.html:316 msgid "Assemblies" -msgstr "" +msgstr "Sammenstillinger" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" -msgstr "" +msgstr "Deleleverandører" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" -msgstr "" +msgstr "Deleprodusenter" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" -msgstr "" +msgstr "Relatert Del" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" -msgstr "" +msgstr "Legg til relatert del" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" -msgstr "" +msgstr "Legg til Testresultatmal" #: part/templates/part/import_wizard/ajax_part_upload.html:29 #: part/templates/part/import_wizard/part_upload.html:14 msgid "Insufficient privileges." -msgstr "" +msgstr "Utilstrekkelige rettigheter." #: part/templates/part/import_wizard/part_upload.html:8 msgid "Return to Parts" -msgstr "" +msgstr "Tilbake til deler" #: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" -msgstr "" +msgstr "Importer deler fra fil" #: part/templates/part/import_wizard/part_upload.html:31 msgid "Requirements for part import" -msgstr "" +msgstr "Krav for import av deler" #: part/templates/part/import_wizard/part_upload.html:33 msgid "The part import file must contain the required named columns as provided in the " -msgstr "" +msgstr "Delens importfil må inneholde de nødvendige navngitte kolonnene som i " #: part/templates/part/import_wizard/part_upload.html:33 msgid "Part Import Template" -msgstr "" +msgstr "Importmal for del" #: part/templates/part/import_wizard/part_upload.html:89 msgid "Download Part Import Template" -msgstr "" +msgstr "Last ned importmal for del" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: 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:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" -msgstr "" +msgstr "Velg filformat" #: part/templates/part/part_app_base.html:12 msgid "Part List" -msgstr "" +msgstr "Deleliste" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" -msgstr "" +msgstr "Du abonnerer på varsler for denne delen" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" -msgstr "" +msgstr "Abonner på varsler for denne delen" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" -msgstr "" +msgstr "Skriv ut etikett" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" -msgstr "" +msgstr "Vis prisinformasjon" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" -msgstr "" +msgstr "Lagerhandlinger" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" -msgstr "" +msgstr "Tell delbeholdning" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" -msgstr "" +msgstr "Overfør delbeholdning" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" -msgstr "" +msgstr "Delhandlinger" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" -msgstr "" +msgstr "Dupliser del" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" -msgstr "" +msgstr "Rediger del" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" -msgstr "" +msgstr "Slett del" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" -msgstr "" +msgstr "Delen er en maldel (varianter kan lages fra denne delen)" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" -msgstr "" +msgstr "Delen kan sammenstilles fra andre deler" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" -msgstr "" +msgstr "Delen kan brukes i sammenstillinger" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" -msgstr "" +msgstr "Delelager spores via serienummer" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" -msgstr "" +msgstr "Delen kan kjøpes fra eksterne leverandører" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" -msgstr "" +msgstr "Delen kan selges til kunder" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" -msgstr "" +msgstr "Delen er ikke aktiv" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" -msgstr "" +msgstr "Inaktiv" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" -msgstr "" +msgstr "Delen er virtuall (ikke en fysisk del)" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" -msgstr "" +msgstr "Vis detaljer for del" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "Tildelt til Salgsordrer" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "Kan Produsere" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "Minimalt lagerbeholdningsnivå" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "Prisområde" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "Siste serienummer" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "Søk etter serienummer" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "Del-QR-kode" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "Koble strekkode til Del" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" -msgstr "" +msgstr "del" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "Beregn" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "Fjern tilknyttet bilde fra denne delen" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "Ingen samsvarende bilder funnet" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "Skjul Deldetaljer" @@ -6921,7 +7045,7 @@ msgstr "Ingen leverandørpriser tilgjengelig" #: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:87 #: part/templates/part/prices.html:239 msgid "BOM Pricing" -msgstr "Stykklistepriser" +msgstr "BOM-prising" #: part/templates/part/part_pricing.html:66 msgid "Unit Purchase Price" @@ -6933,7 +7057,7 @@ msgstr "Total Innkjøpspris" #: part/templates/part/part_pricing.html:83 msgid "No BOM pricing available" -msgstr "Ingen Stykklisteprising tilgjengelig" +msgstr "Ingen BOM-prising tilgjengelig" #: part/templates/part/part_pricing.html:92 msgid "Internal Price" @@ -6955,15 +7079,15 @@ msgstr "Varianter" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "Lagerbeholdning" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "Prising" @@ -6987,11 +7111,11 @@ msgstr "Prisingoversikt" msgid "Refresh Part Pricing" msgstr "Oppdater delprising" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "Sist oppdatert" @@ -7054,12 +7178,12 @@ msgstr "Salgsprising" msgid "Add Sell Price Break" msgstr "Legg til salgsprisbrudd" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "Ingen lagerbeholdning" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "Lav lagerbeholdning" @@ -7078,69 +7202,68 @@ msgstr "Stykkliste opplastningskrav" #: part/templates/part/upload_bom.html:23 #: part/templates/part/upload_bom.html:90 msgid "Upload BOM File" -msgstr "" +msgstr "Last opp BOM-fil" #: part/templates/part/upload_bom.html:29 msgid "Submit BOM Data" -msgstr "" +msgstr "Send inn BOM-data" #: part/templates/part/upload_bom.html:37 msgid "Requirements for BOM upload" -msgstr "" +msgstr "Krav for BOM-opplastning" #: part/templates/part/upload_bom.html:39 msgid "The BOM file must contain the required named columns as provided in the " -msgstr "" +msgstr "BOM-filen må inneholde de nødvendige navngitte kolonnene som i " #: part/templates/part/upload_bom.html:39 msgid "BOM Upload Template" -msgstr "" +msgstr "BOM-opplastningsmalen" #: part/templates/part/upload_bom.html:40 msgid "Each part must already exist in the database" -msgstr "" +msgstr "Hver del må allerede finnes i databasen" #: part/templates/part/variant_part.html:9 msgid "Create new part variant" -msgstr "" +msgstr "Opprett ny variant av del" #: part/templates/part/variant_part.html:10 msgid "Create a new variant part from this template" -msgstr "" +msgstr "Opprett en ny variant del fra denne malen" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" -msgstr "" +msgstr "Ukjent database" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" -msgstr "" +msgstr "Match referanser" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" -msgstr "" +msgstr "Vel bilde for del" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" -msgstr "" +msgstr "Oppdatert bilde for del" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" -msgstr "" +msgstr "Bilde for del ikke funnet" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" -msgstr "" +msgstr "Del Prisering" #: plugin/base/action/api.py:27 msgid "No action specified" @@ -7150,314 +7273,533 @@ msgstr "Ingen handling spesifisert" msgid "No matching action found" msgstr "Ingen samsvarende handling funnet" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" -msgstr "" +msgstr "Mangler strekkodedata" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "Ingen treff funnet for strekkodedata" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "Treff funnet for strekkodedata" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" -msgstr "" +msgstr "Strekkode samsvarer med ekisterende element" #: plugin/base/barcodes/api.py:217 msgid "No match found for provided value" +msgstr "Ingen samsvar funnet for angitt verdi" + +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" msgstr "" -#: plugin/base/label/label.py:60 -msgid "Label printing failed" +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" msgstr "" +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 +msgid "Label printing failed" +msgstr "Utskrift av etikett mislyktes" + #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" -msgstr "" +msgstr "InvenTree-strekkoder" #: plugin/builtin/barcodes/inventree_barcode.py:26 msgid "Provides native support for barcodes" -msgstr "" +msgstr "Gir innebygd støtte for strekkoder" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" -msgstr "" +msgstr "InvenTree-bidragsytere" #: plugin/builtin/integration/core_notifications.py:33 msgid "InvenTree Notifications" -msgstr "" +msgstr "InvenTree-varsler" #: plugin/builtin/integration/core_notifications.py:35 msgid "Integrated outgoing notification methods" -msgstr "" +msgstr "Integrerte utgående varslingsmetoder" #: plugin/builtin/integration/core_notifications.py:40 #: plugin/builtin/integration/core_notifications.py:81 msgid "Enable email notifications" -msgstr "" +msgstr "Aktiver epostvarsler" #: plugin/builtin/integration/core_notifications.py:41 #: plugin/builtin/integration/core_notifications.py:82 msgid "Allow sending of emails for event notifications" -msgstr "" +msgstr "Tillat sending av e-post for hendelsesvarsler" #: plugin/builtin/integration/core_notifications.py:46 msgid "Enable slack notifications" -msgstr "" +msgstr "Aktiver Slack-varsler" #: plugin/builtin/integration/core_notifications.py:47 msgid "Allow sending of slack channel messages for event notifications" -msgstr "" +msgstr "Tillat sending av Slack-kanalmeldinger for hendelsesvarsler" #: plugin/builtin/integration/core_notifications.py:52 msgid "Slack incoming webhook url" -msgstr "" +msgstr "Slack innkommende webhook" #: plugin/builtin/integration/core_notifications.py:53 msgid "URL that is used to send messages to a slack channel" -msgstr "" +msgstr "URL brukt til å sende meldinger til en Slack-kanal" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" +msgstr "Åpne lenke" + +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "Plugin konfigurasjon" + +#: plugin/models.py:29 msgid "Plugin Configurations" -msgstr "" +msgstr "Plugin konfigurasjoner" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" -msgstr "" +msgstr "Nøkkel" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "Aktiver Innkjøpsordrefunksjonalitet i InvenTree-grensesnittet" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "API-nøkkel" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "Nøkkel kreves for tilgang til eksternt API" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "Numerisk" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "En numerisk innstilling" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "Valginnstilling" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "En innstilling med flere valg" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "Kilde-URL" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Kilde for pakken - dette kan være et egendefinert register eller en VCS-sti" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "Pakkenavn" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Navn på utvidelsespakke – kan også inneholde en versjonsindikator" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "Bekreft installasjon av utvidelse" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Dette vil installere denne utvidelsen nå i gjeldende instans. Instansen vil gå i vedlikehold." -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "Installasjonen ble ikke bekreftet" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "Enten pakkenavn eller URL må angis" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "Ingen gyldige objekter angitt for mal" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Malfil '{template}' mangler eller eksisterer ikke" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "Testrapport" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "Malnavn" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "Rapportmalfil" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "Beskrivelse av rapportmal" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "Rapportrevisjonsnummer (øker automatisk)" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "Mønster for å generere rapportfilnavn" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "Rapportmal er aktiver" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Lagervare-søkefilter (kommaseparert liste over nøkkel=verdi-par)" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "Inkluder installerte tester" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "Inkluder testresultater for lagervarer installert i sammenstilt artikkel" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "Produksjonsfiltre" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Produksjons-søkefilter (kommaseparert liste over nøkkel=verdi-par" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "Delfiltre" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Del-søkefilter (kommaseparert liste over nøkkel=verdi-par" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "Innkjøpsordre-søkefilter" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "Salgsordre-søkefilter" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "Returordre-søkefilter" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "Snutt" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "Rapportsnuttfil" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "Filbeskrivelse for snutt" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "Ressurs" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "Rapportressursfil" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "Ressursfilbeskrivelse" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "Nødvendige materialer" @@ -7474,9 +7816,9 @@ msgstr "Leverandør ble slettet" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "Enhetspris" @@ -7488,26 +7830,30 @@ msgstr "Ekstra linjeelementer" #: report/templates/report/inventree_po_report_base.html:72 #: report/templates/report/inventree_so_report_base.html:72 -#: templates/js/translated/purchase_order.js:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 msgid "Total" msgstr "Total" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Serienummer" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "Testrapport for lagervare" @@ -7517,516 +7863,570 @@ msgid "Test Results" msgstr "Testresultater" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "Test" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" -msgstr "" +msgstr "Resultat" #: report/templates/report/inventree_test_report_base.html:130 msgid "Pass" -msgstr "" +msgstr "Bestått" #: report/templates/report/inventree_test_report_base.html:132 msgid "Fail" -msgstr "" +msgstr "Mislykket" #: report/templates/report/inventree_test_report_base.html:139 msgid "No result (required)" -msgstr "" +msgstr "Ingen resultat (obligatorisk)" #: report/templates/report/inventree_test_report_base.html:141 msgid "No result" -msgstr "" +msgstr "Ingen resultat" #: report/templates/report/inventree_test_report_base.html:154 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" -msgstr "" +msgstr "Installerte artikler" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" -msgstr "" +msgstr "Serienummer" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" -msgstr "" +msgstr "Lagervare-ID" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" -msgstr "" +msgstr "Statuskode" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" -msgstr "" +msgstr "Leverandørdel-ID" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" -msgstr "" +msgstr "Leverandør-ID" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" -msgstr "" +msgstr "Leverandørnavn" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" -msgstr "" +msgstr "Kunde-ID" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" -msgstr "" +msgstr "Installert i" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" -msgstr "" +msgstr "Salgsordre-ID" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" -msgstr "" +msgstr "Innkjøpsordre-ID" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" -msgstr "" +msgstr "Gjennomgang kreves" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" -msgstr "" +msgstr "Slett når oppbrukt" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" -msgstr "" +msgstr "Utløpsdato" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" -msgstr "" +msgstr "Antall kreves" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" -msgstr "" +msgstr "Gyldig del må oppgis" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" -msgstr "" +msgstr "Oppgitt leverandørdel eksisterer ikke" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" -msgstr "" +msgstr "Leverandørdelen har en pakkestørrelse definert, men flagget \"use_pack_size\" er ikke satt" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" +msgstr "Serienumre kan ikke angis for en ikke-sporbar del" + +#: stock/models.py:56 +msgid "Stock Location type" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" -msgstr "" +msgstr "Velg en tilsvarende leverandørdel for denne lagervaren" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" -msgstr "" +msgstr "Hvor er denne lagervaren plassert?" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" -msgstr "" +msgstr "Er denne artikkelen montert i en annen artikkel?" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" -msgstr "" +msgstr "Serienummer for denne artikkelen" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "Batchkode for denne lagervaren" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "Lagerantall" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "Kildeproduksjon" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "Produksjon for denne lagervaren" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" -msgstr "" +msgstr "Brukt av" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "Kildeinnkjøpsordre" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "Innkjøpsordre for denne lagervaren" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "Tildelt Salgsordre" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Utløpsdato for lagervare. Lagerbeholdning vil bli ansett som utløpt etter denne datoen" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "Slett når oppbrukt" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "Slett lagervaren når beholdningen er oppbrukt" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "Innkjøpspris per enhet på kjøpstidspunktet" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "Konvertert til del" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "Delen er ikke angitt som sporbar" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "Antall må være heltall" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" -msgstr "Antall kan ikke overstige tilgjengelig lagerbeholdning ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "Serienumre må være en liste over tall" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "Antallet stemmer ikke overens med serienumrene" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "Seriernummer eksisterer allerede" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "Lagervare har blitt tildelt en salgsordre" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "Lagervare er montert i en annen artikkel" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "Lagervare inneholder andre artikler" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "Lagervare har blitt tildelt til en kunde" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "Lagervare er for tiden i produksjon" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "Serialisert lagerbeholdning kan ikke slås sammen" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "Duplisert lagervare" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "Lagervarer må referere til samme del" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "Lagervarer må referere til samme leverandørdel" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "Lagerstatuskoder må være like" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "Lagervare kan ikke flyttes fordi den ikke er på lager" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "Oppføringsnotater" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "Verdi må angis for denne testen" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "Vedlegg må lastes opp for denne testen" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "Testnavn" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "Testresultat" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "Testens verdi" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "Vedlegg til testresultat" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "Testnotater" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "Serienummeret er for høyt" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" -msgstr "" +msgstr "Innkjøpspris for denne lagervaren, per enhet eller forpakning" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "Angi antall lagervarer som skal serialiseres" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "Antall kan ikke overstige tilgjengelig lagerbeholdning ({q})" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "Angi serienummer for nye artikler" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "Til Lagerplassering" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "Valgfritt notatfelt" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "Serienummer kan ikke tilordnes denne delen" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "Velg lagervare å montere" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" -msgstr "Lagervaren er utilgjengelig" +#: stock/serializers.py:496 +msgid "Quantity to Install" +msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" -msgstr "Valgt del er ikke i stykklisten" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" +msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "Lagerplassering for den avinstallerte artikkelen" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "Legg til transaksjonsnotat (valgfritt)" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "Lagervaren er utilgjengelig" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "Valgt del er ikke i stykklisten" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "Lagerplassering for den avinstallerte artikkelen" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "Velg del å konvertere lagervare til" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "Valgt del er ikke et gyldig alternativ for konvertering" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "Lagerplassering for returnert artikkel" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "Velg lagervarer for å endre status" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "Ingen lagervarer valgt" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "Delen må være salgbar" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "Artikkelen er tildelt en salgsordre" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "Artikkelen er tildelt en produksjonsordre" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "Kunde å tilordne lagervarer" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" -msgstr "" +msgstr "Valgt firma er ikke en kunde" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" -msgstr "" +msgstr "En liste av lagervarer må oppgis" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" -msgstr "" +msgstr "Minst to lagervarer må oppgis" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" +msgstr "Lagervare primærnøkkel verdi" + +#: stock/serializers.py:1290 +msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" -msgstr "" +msgstr "Testdata" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" -msgstr "" +msgstr "Testrapport" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" -msgstr "" +msgstr "Slett testdata" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" -msgstr "" +msgstr "Legg till Testdata" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" -msgstr "" +msgstr "Slett alle testresultater for denne lagervaren" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" -msgstr "" +msgstr "Legg til testresultat" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" -msgstr "" +msgstr "Utskriftshandlinger" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" -msgstr "" +msgstr "Lagerjusteringshandlinger" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" -msgstr "" +msgstr "Konvertert til variant" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" -msgstr "" +msgstr "Duplisert lagervare" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Produksjon" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "Denne lagervaren er tildelt til Produksjonsordre" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "Denne lagervaren er serialisert. Den har et unikt serienummer, og antallet kan ikke justeres" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "forrige side" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "Gå til forrige serienummer" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "neste side" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "Gå til neste serienummer" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "Tilgjengelig antall" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "Ingen plassering satt" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "Tester" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "Denne lagervaren har ikke bestått alle påkrevde tester" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "Denne lagervaren utløp %(item.expiry_date)s" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "Utløpt" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "Denne lagervaren utløper %(item.expiry_date)s" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Foreldet" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "Ingen lagertelling utført" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "Rediger Lagerstatus" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "Lagervare-QR-kode" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "Koble strekkode til Lagervare" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "Velg en av variantdelene oppført under." -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "Advarsel" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "Denne handlingen er vanskelig å omgjøre" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "Konverter Lagervare" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "Returner til Lager" @@ -8302,82 +8710,86 @@ msgstr "Opprett serialiserte artikler for denne lagervaren." msgid "Select quantity to serialize, and unique serial numbers." msgstr "Velg antall å serialisere, og unike serienummer." -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "Utfør lagertelling for denne lagerplasseringen" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "Finn lagerplassering" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "Skann lagervarer til denne plasseringen" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "Skann inn Lagervarer" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "Skann lagerbeholder til denne plasseringen" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "Skann inn beholder" -#: stock/templates/stock/location.html:102 +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 msgid "Location actions" msgstr "Plasseringshandlinger" -#: stock/templates/stock/location.html:104 +#: stock/templates/stock/location.html:106 msgid "Edit location" msgstr "Rediger plassering" -#: stock/templates/stock/location.html:106 +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "Slett plassering" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "Toppnivå-lagerplassering" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "Plasseringens Eier" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "Du er ikke i listen over eiere av denne plasseringen. Denne lagerplasseringen kan ikke redigeres." -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Underplasseringer" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "Opprett ny lagerplassering" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "Ny plassering" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "Skannet lagerbeholder til denne plasseringen" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "Lagerplassering-QR-kode" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "Koble strekkode til Lagerplassering" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8449,177 +8861,177 @@ msgstr "" #: templates/InvenTree/index.html:7 msgid "Index" -msgstr "" +msgstr "Indeks" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "" +msgstr "Abonnerte deler" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "" +msgstr "Abonnerte kategorier" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" -msgstr "" +msgstr "Siste deler" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" -msgstr "" +msgstr "BOM venter godkjenning" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "" +msgstr "Nylig oppdatert" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" -msgstr "" +msgstr "Utløpt lagerbeholdning" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "" +msgstr "Forfalte Produksjonsordre" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" -msgstr "" +msgstr "Utestående innkjøpsordre" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" -msgstr "" +msgstr "Forfalte innkjøpsordre" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" -msgstr "" +msgstr "Utestående salgsordre" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" -msgstr "" +msgstr "Forfalte salgsordre" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" -msgstr "" +msgstr "InvenTree-nyheter" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" -msgstr "" +msgstr "Aktuelle nyheter" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" -msgstr "" +msgstr "Varsellogg" #: templates/InvenTree/notifications/history.html:13 #: templates/InvenTree/notifications/history.html:14 #: templates/InvenTree/notifications/notifications.html:75 msgid "Delete Notifications" -msgstr "" +msgstr "Slett varlser" #: templates/InvenTree/notifications/inbox.html:9 msgid "Pending Notifications" -msgstr "" +msgstr "Ventende varsler" #: templates/InvenTree/notifications/inbox.html:13 #: templates/InvenTree/notifications/inbox.html:14 msgid "Mark all as read" -msgstr "" +msgstr "Merk alle som lest" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" -msgstr "" +msgstr "Varlser" #: templates/InvenTree/notifications/notifications.html:38 msgid "No unread notifications found" -msgstr "" +msgstr "Ingen uleste varsler funnet" #: templates/InvenTree/notifications/notifications.html:58 msgid "No notification history found" -msgstr "" +msgstr "Ingen varsellogg funnet" #: templates/InvenTree/notifications/notifications.html:65 msgid "Delete all read notifications" -msgstr "" +msgstr "Slett alle leste varsler" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" -msgstr "" +msgstr "Slett varsel" #: templates/InvenTree/notifications/sidebar.html:8 msgid "Inbox" -msgstr "" +msgstr "Innboks" #: templates/InvenTree/notifications/sidebar.html:10 msgid "History" -msgstr "" +msgstr "Logg" #: templates/InvenTree/search.html:8 msgid "Search Results" -msgstr "" +msgstr "Søkeresultater" #: templates/InvenTree/settings/barcode.html:8 msgid "Barcode Settings" -msgstr "" +msgstr "Strekkodeinnstillinger" #: templates/InvenTree/settings/build.html:8 msgid "Build Order Settings" -msgstr "" +msgstr "Innstillinger for produksjonsordre" #: templates/InvenTree/settings/category.html:7 msgid "Category Settings" -msgstr "" +msgstr "Kategoriinnstillinger" #: templates/InvenTree/settings/global.html:8 msgid "Server Settings" -msgstr "" +msgstr "Serverinnstillinger" #: templates/InvenTree/settings/label.html:8 #: templates/InvenTree/settings/user_labels.html:9 msgid "Label Settings" -msgstr "" +msgstr "Etikettinnstillinger" #: templates/InvenTree/settings/login.html:8 msgid "Login Settings" -msgstr "" +msgstr "Innstillinger for innlogging" #: templates/InvenTree/settings/login.html:15 msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!" -msgstr "" +msgstr "Utgående e-post har ikke blitt kanskje. Noen innloggings- og registreringsfunksjoner fungerer kanskje ikke korrekt!" #: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5 #: templates/socialaccount/signup.html:5 msgid "Signup" -msgstr "" +msgstr "Registrering" #: templates/InvenTree/settings/login.html:34 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:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" -msgstr "" +msgstr "Innstillinger" #: templates/InvenTree/settings/mixins/urls.html:5 msgid "URLs" -msgstr "" +msgstr "URLer" #: templates/InvenTree/settings/mixins/urls.html:8 #, python-format @@ -8651,7 +9063,7 @@ msgstr "Import av Del" msgid "Import Part" msgstr "Importér Del" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "Mal for Delparameter" @@ -8659,12 +9071,21 @@ msgstr "Mal for Delparameter" msgid "Stocktake Settings" msgstr "Innstillinger for lagertelling" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "Lagertellingsrapporter" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "Innstillinger for Utvidelser" @@ -8672,30 +9093,30 @@ msgstr "Innstillinger for Utvidelser" msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." msgstr "Endring av innstillingene nedenfor krever at du umiddelbart starter serveren på nytt. Ikke endre under aktiv bruk." -#: templates/InvenTree/settings/plugin.html:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "Utvidelser" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "Installer Utvidelse" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "Eksterne utvidelser er ikke aktivert for denne InvenTree-installasjonen" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "Utvidelse feilstack" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "Stadium" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "Melding" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "Informasjon om utvidelse" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "Versjon" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "Installasjonssti" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "Innebygd" @@ -8749,32 +9171,34 @@ msgstr "Innebygd" msgid "This is a builtin plugin which cannot be disabled" msgstr "Dette er en innebygd utvidelse som ikke kan deaktiveres" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "Eksempel" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "Commit-forfatter" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "Commit-dato" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "Commit-hash" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "Commit-melding" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "Signaturstatus" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "Signaturnøkkel" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "Innstillinger for Innkjøpsordre" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "Prosjektkoder" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "Ny Prosjektkode" @@ -8825,76 +9249,129 @@ msgstr "Innstillinger for Returordre" #: templates/InvenTree/settings/setting.html:31 msgid "No value set" -msgstr "" +msgstr "Ingen verdi satt" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" -msgstr "" +msgstr "Rediger innstilling" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" -msgstr "" +msgstr "Rediger utvidelsesinnstillinger" #: templates/InvenTree/settings/settings_js.html:60 msgid "Edit Notification Setting" -msgstr "" +msgstr "Rediger varslingsinnstilling" #: templates/InvenTree/settings/settings_js.html:63 msgid "Edit Global Setting" -msgstr "" +msgstr "Rediger global innstilling" #: templates/InvenTree/settings/settings_js.html:65 msgid "Edit User Setting" -msgstr "" +msgstr "Rediger brukerinnstilling" #: templates/InvenTree/settings/settings_staff_js.html:49 msgid "Rate" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" +msgstr "Vurder" #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 -msgid "Delete Project Code" +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Slett" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "Ingen prosjektkoder funnet" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "Rediger prosjektkode" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 +msgid "Delete Project Code" +msgstr "Slett prosjektkode" + +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9204,44 +9679,48 @@ msgstr "Oppdatert" msgid "Update Available" msgstr "Oppdatering er tilgjengelig" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "InvenTree-dokumentasjon" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "API-versjon" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "Python-versjon" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "Django-versjon" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "Vis koden på GitHub" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9252,213 +9731,213 @@ msgstr "" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:9 msgid "Confirm Email Address" -msgstr "" +msgstr "Bekreft e-postadresse" #: templates/account/email_confirm.html:15 #, python-format msgid "Please confirm that %(email)s is an email address for user %(user_display)s." -msgstr "" +msgstr "Vennligst bekreft at %(email)s er ne e-postadresse for bruker %(user_display)s." -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Bekreft" #: templates/account/email_confirm.html:29 #, python-format msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request." -msgstr "" +msgstr "Denne e-postbekreftelseslenken er utgått eller ugyldig. Vennligst send en ny bekreftelsesforespørsel." #: templates/account/login.html:6 templates/account/login.html:17 #: templates/account/login.html:38 templates/socialaccount/login.html:5 msgid "Sign In" -msgstr "" +msgstr "Logg inn" #: templates/account/login.html:21 msgid "Not a member?" -msgstr "" +msgstr "Ikke medlem?" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 #: templates/socialaccount/signup.html:20 msgid "Sign Up" -msgstr "" +msgstr "Registrer deg" #: templates/account/login.html:45 msgid "Forgot Password?" -msgstr "" +msgstr "Glemt passord?" #: templates/account/login.html:53 msgid "or log in with" -msgstr "" +msgstr "eller logg på med" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:20 msgid "Sign Out" -msgstr "" +msgstr "Logg ut" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" -msgstr "" +msgstr "Er du sikker på at du vil logge ut?" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 #: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 msgid "Return to Site" -msgstr "" +msgstr "Gå tilbake til siden" #: templates/account/password_reset.html:5 #: templates/account/password_reset.html:12 msgid "Password Reset" -msgstr "" +msgstr "Tilbakestill passord" #: templates/account/password_reset.html:18 msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." -msgstr "" +msgstr "Glemt passord? Skriv inn e-postadressen din under, så sender vi deg en e-post slik at du kan tilbakestille den." #: templates/account/password_reset.html:23 msgid "Reset My Password" -msgstr "" +msgstr "Tilbakestill passord" #: templates/account/password_reset.html:27 templates/account/signup.html:37 msgid "This function is currently disabled. Please contact an administrator." -msgstr "" +msgstr "Denne funksjonen er deaktivert. Vennligst kontakt en administrator." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" -msgstr "" +msgstr "Ugyldig token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." -msgstr "" +msgstr "Link for å tilbakestille passordet var ugyldig, muligens fordi det allerede er brukt. Be om en ny tilbakestilling." #: templates/account/password_reset_from_key.html:18 msgid "Change password" -msgstr "" +msgstr "Endre passord" #: templates/account/password_reset_from_key.html:22 msgid "Your password is now changed." -msgstr "" +msgstr "Passordet ditt er nå endret." #: templates/account/signup.html:13 #, python-format msgid "Already have an account? Then please sign in." -msgstr "" +msgstr "Har du allerede en konto? Vennligst logg inn." #: templates/account/signup.html:28 msgid "Use a SSO-provider for signup" -msgstr "" +msgstr "Bruk en SSO-leverandør for registrering" #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" -msgstr "" +msgstr "Registreringen er lukket" #: templates/account/signup_closed.html:10 msgid "Sign up is currently closed." -msgstr "" +msgstr "Registrering er for tiden stengt." #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 #: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 msgid "Return to login page" -msgstr "" +msgstr "Tilbake til innloggingsside" #: templates/admin_button.html:8 msgid "View in administration panel" -msgstr "" +msgstr "Vis i administrasjonspanel" #: templates/allauth_2fa/authenticate.html:5 msgid "Two-Factor Authentication" -msgstr "" +msgstr "Tofaktor-autentisering" #: templates/allauth_2fa/authenticate.html:13 msgid "Authenticate" -msgstr "" +msgstr "Autentisér" #: templates/allauth_2fa/backup_tokens.html:6 msgid "Two-Factor Authentication Backup Tokens" -msgstr "" +msgstr "Tofaktor-autentisering Backup-symboler" #: templates/allauth_2fa/backup_tokens.html:17 msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones." -msgstr "" +msgstr "Backup-symboler er generert, men ikke avslørt her av sikkerhetshensyn. Trykk på knappen under for å generere nye." #: templates/allauth_2fa/backup_tokens.html:20 msgid "No backup tokens are available. Press the button below to generate some." -msgstr "" +msgstr "Ingen backup-symboler er tilgjengelig. Trykk på knappen under for å generere noen." #: templates/allauth_2fa/backup_tokens.html:28 msgid "Generate Tokens" -msgstr "" +msgstr "Generer Symboler" #: templates/allauth_2fa/remove.html:6 msgid "Disable Two-Factor Authentication" -msgstr "" +msgstr "Deaktiver Tofaktor-autentisering" #: templates/allauth_2fa/remove.html:9 msgid "Are you sure?" -msgstr "" +msgstr "Er du sikker?" #: templates/allauth_2fa/remove.html:17 msgid "Disable 2FA" -msgstr "" +msgstr "Deaktiver 2FA" #: templates/allauth_2fa/setup.html:6 msgid "Setup Two-Factor Authentication" -msgstr "" +msgstr "Sett opp to-faktor autentisering" #: templates/allauth_2fa/setup.html:10 msgid "Step 1" -msgstr "" +msgstr "Trinn 1" #: templates/allauth_2fa/setup.html:14 msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." -msgstr "" +msgstr "Skann QR-koden nedenfor med en symbolgenerator du velger (for eksempel Google Authenticator)." #: templates/allauth_2fa/setup.html:23 msgid "Step 2" -msgstr "" +msgstr "Trinn 2" #: templates/allauth_2fa/setup.html:27 msgid "Input a token generated by the app:" -msgstr "" +msgstr "Angi et symbol generert av appen:" #: templates/allauth_2fa/setup.html:37 msgid "Verify" -msgstr "" +msgstr "Bekreft" #: templates/attachment_button.html:4 templates/js/translated/attachment.js:70 msgid "Add Link" -msgstr "" +msgstr "Legg til lenke" #: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 msgid "Add Attachment" -msgstr "" - -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" +msgstr "Legg til vedlegg" #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "Omstart av server kreves" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "En konfigurasjonsinnstilling har blitt endret som krever en omstart av serveren" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "Kontakt systemadministratoren for mer informasjon" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "Følgende deler har for lav lagerbeholdning" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "Antall som kreves" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "Klikk på følgende lenke for å se denne delen" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "Minimum antall" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "Ingen respons" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "Ingen svar fra InvenTree-serveren" @@ -9521,27 +10000,27 @@ msgstr "Feil 400: Ugyldig forespørsel" msgid "API request returned error code 400" msgstr "API-forespørsel returnerte feilkode 400" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "Feil 401: Ikke autentisert" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "Autentiseringslegitimasjon ikke angitt" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "Feil 403: Tilgang nektet" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "Du har ikke de nødvendige tillatelsene for tilgang til denne funksjonen" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "Feil 404: Ressurs ikke funnet" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "Kan ikke finne den forespurte ressursen på serveren" @@ -9553,19 +10032,27 @@ msgstr "Feil 405: Metode ikke tillatt" msgid "HTTP method not allowed at URL" msgstr "HTTP-metode er ikke tillatt i URL" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "Feil 408: Tidsavbrudd" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "Tidsavbrudd under forespørsel om data fra serveren" #: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 msgid "Unhandled Error Code" msgstr "Uhåndtert feilkode" -#: templates/js/translated/api.js:262 +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "Feilkode" @@ -9573,23 +10060,35 @@ msgstr "Feilkode" msgid "All selected attachments will be deleted" msgstr "Alle valgte vedlegg vil bli slettet" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "Slett vedlegg" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "Slett vedlegg" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "Vedleggshandlinger" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "Ingen vedlegg funnet" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "Rediger vedlegg" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "Opplastet dato" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "Rediger vedlegg" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "Slett vedlegg" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "Ukjent svar fra serveren" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "Ugyldig svar fra serveren" @@ -9646,7 +10145,7 @@ msgstr "Dette vil fjerne lenken til den tilknyttede strekkoden" msgid "Unlink" msgstr "Koble fra" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "Fjern lagervare" @@ -9661,15 +10160,15 @@ msgstr "Skann lagervarens strekkode for å sjekke inn på denne plasseringen" #: templates/js/translated/barcode.js:598 #: templates/js/translated/barcode.js:795 msgid "Check In" -msgstr "" +msgstr "Sjekk inn" #: templates/js/translated/barcode.js:630 msgid "No barcode provided" -msgstr "" +msgstr "Ingen strekkode angitt" #: templates/js/translated/barcode.js:670 msgid "Stock Item already scanned" -msgstr "" +msgstr "Lagervaren er allerede skannet" #: templates/js/translated/barcode.js:674 msgid "Stock Item already in this location" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" -msgstr "" +msgstr "Opprett BOM-artikkel" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" -msgstr "" +msgstr "Vis raddata" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "" +msgstr "Raddata" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" -msgstr "" +msgstr "Lukk" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" -msgstr "" - -#: templates/js/translated/bom.js:350 -msgid "Multi Level BOM" -msgstr "" +msgstr "Lat ned BOM-mal" #: templates/js/translated/bom.js:351 -msgid "Include BOM data for subassemblies" -msgstr "" +msgid "Multi Level BOM" +msgstr "Flernivå-BOM" -#: templates/js/translated/bom.js:356 -msgid "Levels" -msgstr "" +#: templates/js/translated/bom.js:352 +msgid "Include BOM data for subassemblies" +msgstr "Inkluder BOM-data for undersammenstillinger" #: templates/js/translated/bom.js:357 -msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "" +msgid "Levels" +msgstr "Nivåer" -#: templates/js/translated/bom.js:364 -msgid "Include Alternative Parts" -msgstr "" +#: templates/js/translated/bom.js:358 +msgid "Select maximum number of BOM levels to export (0 = all levels)" +msgstr "Velg maksimalt antall BOM-nivåer å eksportere (0 = alle nivåer)" #: templates/js/translated/bom.js:365 -msgid "Include alternative parts in exported BOM" -msgstr "" +msgid "Include Alternative Parts" +msgstr "Inkluder alternative deler" -#: templates/js/translated/bom.js:370 -msgid "Include Parameter Data" -msgstr "" +#: templates/js/translated/bom.js:366 +msgid "Include alternative parts in exported BOM" +msgstr "Inkluder alternative deler i eksportert BOM" #: templates/js/translated/bom.js:371 -msgid "Include part parameter data in exported BOM" -msgstr "" +msgid "Include Parameter Data" +msgstr "Inkluder parameterdata" -#: templates/js/translated/bom.js:376 -msgid "Include Stock Data" -msgstr "" +#: templates/js/translated/bom.js:372 +msgid "Include part parameter data in exported BOM" +msgstr "Inkluder delparameterdata i eksportert BOM" #: templates/js/translated/bom.js:377 -msgid "Include part stock data in exported BOM" -msgstr "" +msgid "Include Stock Data" +msgstr "Inkluder lagerbeholdningsdata" -#: templates/js/translated/bom.js:382 -msgid "Include Manufacturer Data" -msgstr "" +#: templates/js/translated/bom.js:378 +msgid "Include part stock data in exported BOM" +msgstr "Inkluder delbeholdningsdata i eksportert BOM" #: templates/js/translated/bom.js:383 -msgid "Include part manufacturer data in exported BOM" -msgstr "" +msgid "Include Manufacturer Data" +msgstr "Inkluder Produsentdata" -#: templates/js/translated/bom.js:388 -msgid "Include Supplier Data" -msgstr "" +#: templates/js/translated/bom.js:384 +msgid "Include part manufacturer data in exported BOM" +msgstr "Inkluder delprodusentdata i eksportert BOM" #: templates/js/translated/bom.js:389 -msgid "Include part supplier data in exported BOM" -msgstr "" +msgid "Include Supplier Data" +msgstr "Inkluder Leverandørdata" -#: templates/js/translated/bom.js:394 -msgid "Include Pricing Data" -msgstr "" +#: templates/js/translated/bom.js:390 +msgid "Include part supplier data in exported BOM" +msgstr "Inkluder delleverandørdata i eksportert BOM" #: templates/js/translated/bom.js:395 +msgid "Include Pricing Data" +msgstr "Inkluder prisdata" + +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" -msgstr "" +msgstr "Inkluder delprisdata i eksportert BOM" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" -msgstr "" +msgstr "Fjern erstatningsdel" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" -msgstr "" +msgstr "Velg og legg til en ny erstatningsdel ved hjelp av inntastingen under" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" -msgstr "" +msgstr "Er du sikker på at du vil fjerne koblingen til denne erstatningsdelen?" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" -msgstr "" - -#: templates/js/translated/bom.js:700 -msgid "Add Substitute" -msgstr "" +msgstr "Fjern Erstatningsdel" #: templates/js/translated/bom.js:701 +msgid "Add Substitute" +msgstr "Legg til Erstatning" + +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" -msgstr "" +msgstr "Rediger BOM-artikkelerstatninger" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" -msgstr "" +msgstr "Alle valgte BOM-artikler vil bli slettet" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" -msgstr "" +msgstr "Slett valgte BOM-artikler?" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "Slett artikler" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" -msgstr "" +msgstr "Last inn BOM for undersammenstillinger" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" -msgstr "" +msgstr "Erstatninger tilgjengelig" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" -msgstr "" +msgstr "Variantbeholdning tillatt" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" -msgstr "" +msgstr "Erstatninger" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" -msgstr "" +msgstr "BOM-prising er komplett" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" -msgstr "" +msgstr "BOM-prising er ufullstendig" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" -msgstr "" +msgstr "Ingen prising tilgjengelig" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" -msgstr "" +msgstr "Ingen lagerbeholdning tilgjengelig" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" -msgstr "" +msgstr "Inkluderer variant- og erstatningsbeholdning" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" -msgstr "" +msgstr "Inkluderer variantbeholdning" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "Inkluderer erstatningsbeholdning" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "Forbruksvare" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" -msgstr "Godkjenn stykklisteartikkel" +msgstr "Godkjenn BOM-artikkel" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "Denne linjen er godkjent" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "Rediger erstatningsdeler" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" -msgstr "Rediger stykklisteartikkel" +msgstr "Rediger BOM-artikkel" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" -msgstr "Slett stykklisteartikkel" +msgstr "Slett BOM-artikkel" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "Vis stykkliste" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" -msgstr "Ingen stykklisteartikler funnet" +msgstr "Ingen BOM-artikler funnet" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "Påkrevd del" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "Arvet fra overordnet stykkliste" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "Rediger produksjonsordre" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "Opprett Produksjonsordre" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "Kanseller Produksjonsordre" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "Er du sikker du vil kansellere produksjonen?" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "Lagervarer har blitt tildelt til denne Produksjonsordren" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "Det er fortsatt ufullstendige artikler i denne produksjonsordren" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "Produksjonsordren er klar til å fullføres" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "Denne produksjonsordren kan ikke fullføres da det fortsatt er ufullstendige artikler" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "Produksjonsordren er ufullstendig" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "Fullføre Produksjonsordre" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "Neste tilgjengelige serienummer" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "Siste serienummer" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "Stykklisten inneholder sporbare deler" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "Produksjonsartikler må genereres individuelt" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "Sporbare varer kan ha serienummer angitt" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "Angi serienumre for å generere flere single produksjonsartikler" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "Opprett Produksjonsartikkel" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "Tildel lagervarer til denne produksjonsartikkelen" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" -msgstr "Fjern tildelt lagerbeholdning fra produksjonsartikkel" - #: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" +msgstr "" + +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "Fullfør Produksjonsartikkel" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "Slett Produksjonsartikkel" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" -msgstr "Er du sikker på at du ønsker å fjerne tildelte lagervarer fra denne produksjonen?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" +msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" -msgstr "Fjern tildelte lagervarer" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" +msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "Velg Produksjonsartikler" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "Minst en produksjonsartikkel må velges" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "Artikkel" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "Fullfør Produksjonsartikler" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "Slett Produksjonsartikler" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "Ingen tildelinger til produksjonsordre funnet" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "Plassering ikke angitt" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "Fullfør artikler" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "Slett resultat" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "Ingen aktive produksjonsartikler funnet" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" -msgstr "Tildelt lagerbeholdning" - -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" -msgstr "Ingen sporede stykklisteartikler for denne produksjonen" - -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "Fullførte Tester" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "Ingen påkrevde tester for denne produksjonen" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "Rediger lagertildeling" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "Slett lagertildeling" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "Rediger tildeling" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "Slett tildeling" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "Erstatningsdeler tilgjengelig" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "Antall per" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" +msgstr "Rediger lagertildeling" + +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "Slett lagertildeling" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "Rediger tildeling" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "Slett tildeling" + +#: templates/js/translated/build.js:2443 +msgid "build line" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "Sporbar del" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "Utilstrekkelig lagerbeholdning" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "Tilstrekkelig lagerbeholdning" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "Forbruksvare" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "" +msgstr "Legg til produsent" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "" +msgstr "Legg til produsentdel" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "" +msgstr "Rediger produsentdel" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "" +msgstr "Legg til leverandør" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" -msgstr "" +msgstr "Legg til leverandørdel" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "Alle valgte leverandørdeler vil slettes" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" -msgstr "" +msgstr "Slett Leverandørdeler" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" -msgstr "" +msgstr "Leverte deler" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "" +msgstr "Produserte deler" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" -msgstr "" +msgstr "Legg til ny kontakt" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "" +msgstr "Rediger kontakt" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" -msgstr "" - -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 -msgid "Role" -msgstr "" +msgstr "Alle valgte kontakter vil bli slettet" #: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 +msgid "Role" +msgstr "Rolle" + +#: templates/js/translated/company.js:676 msgid "Delete Contacts" -msgstr "" +msgstr "Slett kontakter" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" -msgstr "" +msgstr "Ingen kontakter funnet" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "" +msgstr "Telefonnummer" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "" +msgstr "E-postadresse" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" -msgstr "" +msgstr "Slett kontakt" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "Opprett ny adresse" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "Rediger adresse" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "Alle valgte adresser vil bli slettet" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "Slett adresser" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "Ingen adresser funnet" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "Poststed" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "Delstat/provins" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "Notater for bud" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "Interne notater" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "Slett adresse" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" -msgstr "" +msgstr "Alle valgte produsentdeler vil bli slettet" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" -msgstr "" +msgstr "Slett produsentdeler" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" -msgstr "" +msgstr "Alle valgte parametere vil bli slettet" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" -msgstr "" +msgstr "Slett parametere" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "Bestill deler" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "Slett produsentdeler" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "Handlinger for produsentdeler" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "Ingen produsentdeler funnet" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "Maldel" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "Sammenstilt del" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "Ingen parametere funnet" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "Rediger parameter" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "Slett parameter" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "Rediger Parameter" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "Slett Parameter" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "Slett leverandørdeler" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "Ingen leverandørdeler funnet" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "Tilgjengelighet" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "Rediger leverandørdel" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "Slett leverandørdel" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "Slett Prisbrudd" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "Rediger Prisbrudd" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "Ingen informasjon om prisbrudd funnet" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "Sist oppdatert" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "Rediger prisbrudd" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "Slett prisbrudd" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "sant" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "usant" @@ -10448,89 +11043,89 @@ msgstr "usant" msgid "Select filter" msgstr "Velg filter" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "Skriv ut etiketter" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "Skriv ut rapporter" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "Last ned tabelldata" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "Last tabelldata på nytt" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "Legg til nytt filter" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "Fjern alle filtre" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "Opprett filter" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "Handling forbudt" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "Opprett-operasjon ikke tillatt" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "Oppdater-operasjon ikke tillatt" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "Slett-operasjon ikke tillatt" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "Vis-operasjon ikke tillatt" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "Holde dette skjemaet åpent" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "Angi et gyldig nummer" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "Skjemafeil eksisterer" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "Ingen resultater funnet" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "Søker" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "Tøm inndata" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "Filkolonne" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "Feltnavn" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "Velg Kolonner" @@ -10544,104 +11139,124 @@ msgstr "NEI" #: templates/js/translated/helpers.js:93 msgid "True" -msgstr "" +msgstr "Sant" #: templates/js/translated/helpers.js:94 msgid "False" +msgstr "Usant" + +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" -msgstr "Velg skriver" - -#: templates/js/translated/label.js:62 -msgid "Export to PDF" -msgstr "Eksporter til PDF" - -#: templates/js/translated/label.js:114 -msgid "selected" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "Velg etikettmal" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "Velg artikler" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "Ingen artikler valgt for utskrift" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "" +msgstr "Alternativer for delopprettelse" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "" +msgstr "Alternativer for delduplisering" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "" +msgstr "Legg til kategori" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" -msgstr "" +msgstr "Overordnet del-kategori" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" -msgstr "" +msgstr "Ikon (valgfritt) - Utforsk alle tilgjengelige ikoner på" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" -msgstr "" +msgstr "Opprett del-kategori" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" -msgstr "" +msgstr "Opprett ny kategori etter denne" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" -msgstr "" +msgstr "Del-kategori opprettet" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" -msgstr "" +msgstr "Rediger del-kategori" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" -msgstr "" +msgstr "Er du sikker på at du vil slette denne del-kategorien?" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" -msgstr "" +msgstr "Flytt til overordnet kategori" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" -msgstr "" +msgstr "Slett del-kategori" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" -msgstr "" +msgstr "Handling for deler i denne kategorien" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" -msgstr "" +msgstr "Handling for underkategorier" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" -msgstr "" +msgstr "Opprett Del" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" -msgstr "" +msgstr "Opprett enda en del etter denne" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "Del opprettet" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "Rediger del" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "Del redigert" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "Opprett delvariant" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "Aktiv del" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "Delen kan ikke slettes ettersom den er aktiv" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "Sletting av denne delen kan ikke angres" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "Eventuelle lagervarer for denne delen vil bli slettet" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "Denne delen vil bli fjernet fra eventuelle stykklister" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "All produsent- og leverandørinformasjon for denne delen vil bli slettet" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "Slett del" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "Du abonnerer på varsler for denne artikkelen" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "Du abonnerer nå på varsler for denne artikkelen" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "Abonner på varsler for denne artikkelen" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "Du har avsluttet abonnementet på varsler for denne artikkelen" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" -msgstr "Godkjenning av stykkliste vil merke hvert linjeelement som godkjent" +msgstr "Godkjenning av BOM vil merke hvert linjeelement som godkjent" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "Godkjenn Stykkliste" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "Godkjente Stykkliste" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "Kopier Stykkliste" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "Lite lager" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "Ingen varer på lager" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "Etterspørsel" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "Enhet" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "Sporbar del" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "Virtuell del" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "Abonnert del" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "Salgbar del" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" -msgstr "" +msgstr "Generer lagertellingsrapport" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" -msgstr "" +msgstr "Ingen varianter funnet" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" -msgstr "" +msgstr "Ingen del-parametermaler funnet" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" -msgstr "" +msgstr "Rediger del-parametermal" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" -msgstr "" +msgstr "Alle parametere som henviser til denne malen vil også slettes" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" -msgstr "" +msgstr "Slett del-parametermal" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" -msgstr "" +msgstr "Ingen innkjøpsordrer funnet" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" -msgstr "" +msgstr "Ingen deler funnet" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" -msgstr "" +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "Sett kategori" -#: templates/js/translated/part.js:2495 -msgid "Category is required" -msgstr "" +#: templates/js/translated/part.js:2283 +msgid "parts" +msgstr "deler" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "Ingen kategori" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "Vis som liste" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "Vis som rutenett" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" -msgstr "" +msgstr "Ingen underkategorier funnet" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "" +msgstr "Vis som tre" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" -msgstr "" +msgstr "Inkluder underkategorier" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" -msgstr "" +msgstr "Abonnert kategori" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" -msgstr "" +msgstr "Rediger testresultat" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" -msgstr "" +msgstr "Slett testresultat" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" -msgstr "" +msgstr "Denne testen er definert for en overordnet del" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" -msgstr "" +msgstr "Rediger testresultatmal" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" -msgstr "" +msgstr "Slett testresultatmal" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "Eksempel" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11134,7 +11737,7 @@ msgstr "" #: templates/js/translated/pricing.js:321 msgid "No BOM data available" -msgstr "" +msgstr "Ingen BOM-data tilgjengelig" #: templates/js/translated/pricing.js:463 msgid "No supplier pricing data available" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" -msgstr "" +msgstr "Merk ordren som fullført?" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 -msgid "Cancel Purchase Order" -msgstr "" - -#: templates/js/translated/purchase_order.js:493 -msgid "Are you sure you wish to cancel this purchase order?" -msgstr "" - #: templates/js/translated/purchase_order.js:499 -msgid "This purchase order can not be cancelled" -msgstr "" +msgid "Cancel Purchase Order" +msgstr "Kanseller Innkjøpsordre" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:504 +msgid "Are you sure you wish to cancel this purchase order?" +msgstr "Er du sikker du vil kansellere innkjøpsordren?" + +#: templates/js/translated/purchase_order.js:510 +msgid "This purchase order can not be cancelled" +msgstr "Denne innkjøpsordren kan ikke kanselleres" + +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" -msgstr "" +msgstr "Antall å bestille" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" -msgstr "" +msgstr "Ny leverandørdel" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" -msgstr "" +msgstr "Ny innkjøpsordre" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" -msgstr "" +msgstr "Legg til innkjøpsordre" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" -msgstr "" +msgstr "Mottatt antall" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" -msgstr "" +msgstr "Antall å motta" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" -msgstr "" +msgstr "Lagerstatus" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" -msgstr "" +msgstr "Legg til strekkode" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" -msgstr "" +msgstr "Fjern strekkode" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" -msgstr "" +msgstr "Legg til serienumre" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" -msgstr "" +msgstr "Serienumre" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 -msgid "Quantity to Receive" -msgstr "" - -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 -msgid "Confirm receipt of items" -msgstr "" - #: templates/js/translated/purchase_order.js:1300 +msgid "Quantity to Receive" +msgstr "Antall å motta" + +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 +msgid "Confirm receipt of items" +msgstr "Bekreft mottak av varer" + +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" -msgstr "" +msgstr "Lagervaren peker til en Del som er BOMen for denne lagervaren" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12616,50 +13259,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12668,59 +13267,99 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po index e8730fffa6..4f3bc38c7b 100644 --- a/InvenTree/locale/pl/LC_MESSAGES/django.po +++ b/InvenTree/locale/pl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "Nie znaleziono punktu końcowego API" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Szczegóły błędu można znaleźć w panelu administracyjnym" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Wprowadź dane" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Uwagi" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "Wartość '{name}' nie pojawia się w formacie wzoru" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Podana wartość nie pasuje do wymaganego wzoru: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Wprowadź hasło" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Wprowadź nowe hasło" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Potwierdź hasło" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Potwierdź nowe hasło" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Stare hasło" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "Adres email (ponownie)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Potwierdzenie adresu email" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Należy ponownie wpisać ten sam adres e-mail." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Podany podstawowy adres e-mail jest nieprawidłowy." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Podany e-mail domeny nie został zatwierdzony." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Podano nieprawidłową ilość" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Pusty ciąg numeru seryjnego" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Podwójny numer seryjny" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Nieprawidłowy zakres grupy: {g}" +msgid "Invalid group range: {group}" +msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "Zakres grupy {g} przekracza dozwoloną ilość ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Nieprawidłowa sekwencja grupy: {g}" +msgid "Invalid group sequence: {group}" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Nie znaleziono numerów seryjnych" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Liczba unikalnych numerów seryjnych ({s}) musi odpowiadać ilości ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Usuń znaczniki HTML z tej wartości" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Błąd połączenia" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Serwer odpowiedział z nieprawidłowym kodem statusu" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Wystąpił wyjątek" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Serwer odpowiedział z nieprawidłową wartością Content-Length" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Rozmiar obrazu jest zbyt duży" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Przekroczono maksymalny rozmiar pobieranego obrazu" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Zdalny serwer zwrócił pustą odpowiedź" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "Podany adres URL nie jest poprawnym plikiem obrazu" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "Adres E-Mail" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Nieprawidłowo sformatowany wzór" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Określono nieznany format klucza" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Brak wymaganego formatu klucza" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Pole odniesienia nie może być puste" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "Odniesienie musi być zgodne z wymaganym wzorem" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Numer odniesienia jest zbyt duży" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Brak pliku" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Brak zewnętrznego odnośnika" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Załącznik" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Wybierz plik do załączenia" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Łącze" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Link do zewnętrznego adresu URL" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Komentarz" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Komentarz pliku" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Użytkownik" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "data przesłania" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Nazwa pliku nie może być pusta" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Nieprawidłowy katalog załącznika" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Nazwa pliku zawiera niedozwolony znak '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Brak rozszerzenia w nazwie pliku" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Załącznik o tej nazwie już istnieje" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Błąd zmiany nazwy pliku" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Błędny wybór" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Nazwa" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Opis" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Opis (opcjonalny)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "nadrzędny" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Ścieżka" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Dane kodu kreskowego" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Dane kodu kreskowego stron trzecich" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Hasz kodu kreskowego" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Unikalny hasz danych kodu kreskowego" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Znaleziono istniejący kod kreskowy" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Błąd serwera" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "Błąd został zapisany w logach serwera." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Numer musi być prawidłowy" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Waluta" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -484,143 +509,155 @@ msgstr "Brakuje wymaganej kolumny: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Zduplikowana kolumna: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "Adres URL zdalnego pliku obrazu" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Pobieranie obrazów ze zdalnego URL nie jest włączone" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Czeski" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Duński" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Niemiecki" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Grecki" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Angielski" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Hiszpański" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Hiszpański (Meksyk)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Perski" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Francuski" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Hebrajski" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Węgierski" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Włoski" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japoński" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Koreański" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Holenderski" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norweski" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Polski" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portugalski" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portugalski (Brazylijski)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Rosyjski" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Słoweński" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Szwedzki" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Tajski" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Turecki" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Wietnamski" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Chiński" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Sprawdzenie robotnika w tle nie powiodło się" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "Nie skonfigurowano backendu e-mail" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "Sprawdzanie poziomu zdrowia InvenTree nie powiodło się" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "W toku" @@ -630,8 +667,8 @@ msgstr "Umieszczony" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Zakończono" @@ -654,10 +691,10 @@ msgstr "Zwrócone" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Wysłane" @@ -689,7 +726,7 @@ msgstr "Poddany kwarantannie" msgid "Legacy stock tracking entry" msgstr "Starsze śledzenie wpisów stanu magazynowego" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Utworzono element magazynowy" @@ -745,7 +782,7 @@ msgstr "Podziel z pozycji nadrzędnej" msgid "Split child item" msgstr "Podziel element podrzędny" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Scalone przedmioty magazynowe" @@ -765,7 +802,7 @@ msgstr "Dane wyjściowe kolejności kompilacji ukończone" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Zużyte przez kolejność kompilacji" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Wyślij do klienta" @@ -813,119 +850,165 @@ msgstr "" msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Nieprawidłowy kod waluty" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Wartość przedawnienia nie może być ujemna" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Przedawnienie nie może przekroczyć 100 %" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Nieprawidłowa wartość przedawnienia" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Edytuj informacje użytkownika" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Ustaw hasło" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Hasła muszą być zgodne" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Podano nieprawidłowe hasło" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Informacja systemowa" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "O InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "Kompilacja musi zostać anulowana, zanim będzie mogła zostać usunięta" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "Opcjonalne" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "Przydzielono" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Dostępne" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Zlecenie Budowy" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Zlecenia budowy" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Nieprawidłowy wybór kompilacji nadrzędnej" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Odwołanie do zamówienia wykonania" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Referencja" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Budowa nadrzędna" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Zamówienie budowy, do którego budowa jest przypisana" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Komponent" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Wybierz część do budowy" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Odwołanie do zamówienia sprzedaży" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Zamówienie sprzedaży, do którego budowa jest przypisana" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Lokalizacja źródła" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Wybierz lokalizację, z której pobrać element do budowy (pozostaw puste, aby wziąć z dowolnej lokalizacji)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Lokalizacja docelowa" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Wybierz lokalizację, w której będą przechowywane ukończone elementy" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Ilość do stworzenia" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Ilość przedmiotów do zbudowania" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Ukończone elementy" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Ilość produktów magazynowych które zostały ukończone" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Status budowania" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Kod statusu budowania" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Kod partii" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Kod partii dla wyjścia budowy" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Data utworzenia" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Docelowy termin zakończenia" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Docelowa data zakończenia kompilacji. Po tej dacie kompilacja będzie zaległa." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Data zakończenia" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "zrealizowane przez" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Wydany przez" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Użytkownik, który wydał to zamówienie" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Odpowiedzialny" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Link Zewnętrzny" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Kolejność kompilacji {build} została zakończona" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "Kolejność kompilacji została zakończona" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Nie określono danych wyjściowych budowy" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Budowanie wyjścia jest już ukończone" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "Skompilowane dane wyjściowe nie pasują do kolejności kompilacji" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "Ilość musi być większa niż zero" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Alokowana ilość musi być większa niż zero" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Nie znaleziono wybranego elementu magazynowego w BOM" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Budowa" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Element magazynowy" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Lokalizacja magazynowania przedmiotu" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Ilość" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Alokowana ilość musi być większa niż zero" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Element magazynowy" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Lokalizacja magazynowania przedmiotu" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Zainstaluj do" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Docelowa lokalizacja magazynowa przedmiotu" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Numer seryjny" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Lokalizacja" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Status" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "Akceptuj niekompletne" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "Element BOM" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "Towar musi znajdować się w magazynie" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "Akcje kodów kreskowych" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "Pokaż Kod QR" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "Akcje drukowania" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Edytuj Budowę" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Anuluj Budowę" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "Data docelowa" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "Zaległe" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Zakończone" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "Zamówienie zakupu" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Dodane przez" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "Źródło magazynu" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "Przeznaczenie" @@ -1742,23 +1840,23 @@ msgstr "Nie określono lokalizacji docelowej" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "Partia" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "Utworzony" @@ -1766,147 +1864,106 @@ msgstr "Utworzony" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Zakończone" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "Budowa niezakończona" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "Przydziel zapasy do budowy" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" -msgstr "Cofnij przydział zapasów" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "Cofnij przydział zapasów" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "Automatyczne przypisywanie" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "Przydziel zapasy" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "Zamów wymagane komponenty" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "Zamów komponent" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Załączniki" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "Notatki tworzenia" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "Nowe zlecenie budowy" @@ -1914,14 +1971,10 @@ msgstr "Nowe zlecenie budowy" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "{name.title()} Plik" msgid "Select {name} file to upload" msgstr "Wybierz plik {name} do przesłania" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "Ustawienia wartości" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "Wartość musi być wartością binarną" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "Wartość musi być liczbą całkowitą" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "Ciąg musi być unikatowy" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "Brak grupy" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "Wymagane ponowne uruchomienie" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "Zmieniono ustawienie, które wymaga restartu serwera" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "Użyj nazwy instancji" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Nazwa firmy" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "Wewnętrzna nazwa firmy" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "Bazowy URL" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "Bazowy adres URL dla instancji serwera" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Domyślna waluta" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "Pobierz z adresu URL" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "Zezwól na pobieranie zewnętrznych obrazów i plików z zewnętrznego URL" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "dni" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "Obsługa kodu kreskowego" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "Włącz obsługę skanera kodów" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "Wyrażenie regularne IPN" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "Zezwól na powtarzający się IPN" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" -msgstr "Zezwól na edycję IPN" - -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" -msgstr "Skopiuj BOM komponentu" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" +msgstr "dni" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Pobierz z adresu URL" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Zezwól na pobieranie zewnętrznych obrazów i plików z zewnętrznego URL" + +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" -msgstr "Szablon" - #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" -msgstr "Złożenie" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" +msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" -msgstr "Komponent" +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" -msgstr "Możliwość zakupu" +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" -msgstr "Części są domyślnie z możliwością zakupu" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "Możliwość sprzedaży" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "Części są domyślnie z możliwością sprzedaży" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" -msgstr "Możliwość śledzenia" +#: common/models.py:1197 +msgid "Automatic Backup" +msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" -msgstr "Części są domyślnie z możliwością śledzenia" +msgid "Enable automatic backup of database and media files" +msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" -msgstr "Wirtualny" +#: common/models.py:1204 +msgid "Auto Backup Interval" +msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" -msgstr "Części są domyślnie wirtualne" - -#: common/models.py:1211 -msgid "Show Import in Views" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "Obsługa kodu kreskowego" + +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1280 +msgid "IPN Regex" +msgstr "Wyrażenie regularne IPN" + +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" +msgstr "Zezwól na powtarzający się IPN" + +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1292 +msgid "Allow Editing IPN" +msgstr "Zezwól na edycję IPN" + +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "Skopiuj BOM komponentu" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" -msgstr "" - -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" -msgstr "" - -#: common/models.py:1296 -msgid "Stock Item Pricing Age" -msgstr "" - -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" +msgstr "Szablon" + +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" -msgstr "Ceny wewnętrzne" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" +msgstr "Złożenie" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" +msgstr "Komponent" + +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" -msgstr "" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" +msgstr "Możliwość zakupu" -#: common/models.py:1346 -msgid "Enable label printing" -msgstr "Włącz drukowanie etykiet" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" +msgstr "Części są domyślnie z możliwością zakupu" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" -msgstr "Włącz drukowanie etykiet z interfejsu WWW" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "Możliwość sprzedaży" -#: common/models.py:1353 -msgid "Label Image DPI" -msgstr "DPI etykiety" +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "Części są domyślnie z możliwością sprzedaży" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" -msgstr "" +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" +msgstr "Możliwość śledzenia" #: common/models.py:1363 -msgid "Enable Reports" -msgstr "Włącz raporty" +msgid "Parts are trackable by default" +msgstr "Części są domyślnie z możliwością śledzenia" -#: common/models.py:1364 -msgid "Enable generation of reports" -msgstr "" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" +msgstr "Wirtualny" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" -msgstr "Tryb Debugowania" +#: common/models.py:1370 +msgid "Parts are virtual by default" +msgstr "Części są domyślnie wirtualne" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" -msgstr "Rozmiar strony" - -#: common/models.py:1378 -msgid "Default page size for PDF reports" -msgstr "Domyślna wielkość strony dla raportów PDF" - -#: common/models.py:1388 -msgid "Enable Test Reports" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" -msgstr "Włącz generowanie raportów testów" - -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" +msgstr "Ceny wewnętrzne" + +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" -msgstr "" +#: common/models.py:1518 +msgid "Enable label printing" +msgstr "Włącz drukowanie etykiet" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" -msgstr "" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" +msgstr "Włącz drukowanie etykiet z interfejsu WWW" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" -msgstr "" +#: common/models.py:1525 +msgid "Label Image DPI" +msgstr "DPI etykiety" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" -msgstr "" - -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" -msgstr "Włącz opcję zapomnianego hasła" +msgid "Enable Reports" +msgstr "Włącz raporty" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" -msgstr "Włącz funkcję zapomnianego hasła na stronach logowania" +msgid "Enable generation of reports" +msgstr "" -#: common/models.py:1542 -msgid "Enable registration" -msgstr "Włącz rejestrację" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" +msgstr "Tryb Debugowania" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" -msgstr "Włącz samodzielną rejestrację dla użytkowników na stronach logowania" +msgid "Generate reports in debug mode (HTML output)" +msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" -msgstr "Włącz SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" +msgstr "Rozmiar strony" #: common/models.py:1550 -msgid "Enable SSO on the login pages" -msgstr "Włącz SSO na stronach logowania" +msgid "Default page size for PDF reports" +msgstr "Domyślna wielkość strony dla raportów PDF" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" -msgstr "" +msgid "Enable generation of test reports" +msgstr "Włącz generowanie raportów testów" #: common/models.py:1563 -msgid "Email required" -msgstr "Adres e-mail jest wymagany" +msgid "Attach Test Reports" +msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" -msgstr "Autouzupełnianie użytkowników SSO" +msgid "Globally Unique Serials" +msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" -msgstr "Automatycznie wypełnij dane użytkownika z danych konta SSO" +msgid "Serial numbers for stock items must be globally unique" +msgstr "" #: common/models.py:1577 -msgid "Mail twice" -msgstr "E-mail dwa razy" +msgid "Autofill Serial Numbers" +msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" -msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich adres e-mail" +msgid "Autofill serial numbers in forms" +msgstr "" #: common/models.py:1584 -msgid "Password twice" -msgstr "Hasło dwukrotnie" +msgid "Delete Depleted Stock" +msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" -msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich hasło" +msgid "Determines default behaviour when a stock item is depleted" +msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" -msgstr "Grupuj przy rejestracji" +msgid "Enable stock expiry functionality" +msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" -msgstr "Wymuś MFA" +msgid "Allow sale of expired stock" +msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." -msgstr "Użytkownicy muszą używać zabezpieczeń wieloskładnikowych." +#: common/models.py:1611 +msgid "Stock Stale Time" +msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" -msgstr "Sprawdź wtyczki przy starcie" +msgid "Number of days stock items are considered stale before expiring" +msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" -msgstr "Włącz integrację URL" - -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" -msgstr "Włącz wtyczki, aby dodać ścieżki URL" - -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" -msgstr "Włącz integrację z aplikacją" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" +msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" -msgstr "Włącz wtyczki, aby dodać aplikacje" +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1646 +msgid "Build Order Reference Pattern" +msgstr "" + +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" -msgstr "Włącz wtyczki, aby uruchamiać zaplanowane zadania" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" +msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" -msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter" - -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "Włącz opcję zapomnianego hasła" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "Włącz funkcję zapomnianego hasła na stronach logowania" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "Włącz rejestrację" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "Włącz samodzielną rejestrację dla użytkowników na stronach logowania" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "Włącz SSO" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "Włącz SSO na stronach logowania" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "Adres e-mail jest wymagany" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "Autouzupełnianie użytkowników SSO" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" +msgstr "Automatycznie wypełnij dane użytkownika z danych konta SSO" + #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" -msgstr "" +msgid "Mail twice" +msgstr "E-mail dwa razy" -#: common/models.py:1758 -msgid "Show subscribed parts" -msgstr "Pokaż obserwowane części" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" +msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich adres e-mail" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" -msgstr "Pokaż obserwowane części na stronie głównej" +msgid "Password twice" +msgstr "Hasło dwukrotnie" -#: common/models.py:1765 -msgid "Show subscribed categories" -msgstr "Pokaż obserwowane kategorie" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" +msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich hasło" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" -msgstr "Pokaż obserwowane kategorie części na stronie głównej" +msgid "Allowed domains" +msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" -msgstr "Pokaż najnowsze części" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" -msgstr "Pokaż najnowsze części na stronie głównej" +msgid "Group on signup" +msgstr "Grupuj przy rejestracji" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "" +msgid "Enforce MFA" +msgstr "Wymuś MFA" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" -msgstr "" +#: common/models.py:1781 +msgid "Users must use multifactor security." +msgstr "Użytkownicy muszą używać zabezpieczeń wieloskładnikowych." #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" +msgstr "Sprawdź wtyczki przy starcie" + +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1796 +msgid "Enable URL integration" +msgstr "Włącz integrację URL" + +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" +msgstr "Włącz wtyczki, aby dodać ścieżki URL" + +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "" +#: common/models.py:1812 +msgid "Enable app integration" +msgstr "Włącz integrację z aplikacją" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "" +#: common/models.py:1813 +msgid "Enable plugins to add apps" +msgstr "Włącz wtyczki, aby dodać aplikacje" -#: common/models.py:1807 -msgid "Show low stock" -msgstr "Pokaż niski stan magazynowy" - -#: common/models.py:1808 -msgid "Show low stock items on the homepage" -msgstr "Pokaż elementy o niskim stanie na stronie głównej" - -#: common/models.py:1814 -msgid "Show depleted stock" -msgstr "" - -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "Pokaż wymagany stan zapasów" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" -msgstr "" +msgid "Enable plugins to run scheduled tasks" +msgstr "Włącz wtyczki, aby uruchamiać zaplanowane zadania" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" -msgstr "" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" +msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "Szukaj części" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" -msgstr "" +#: common/models.py:1932 +msgid "Show subscribed parts" +msgstr "Pokaż obserwowane części" #: common/models.py:1933 -msgid "Search Manufacturer Parts" -msgstr "" +msgid "Show subscribed parts on the homepage" +msgstr "Pokaż obserwowane części na stronie głównej" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" -msgstr "" +#: common/models.py:1939 +msgid "Show subscribed categories" +msgstr "Pokaż obserwowane kategorie" #: common/models.py:1940 -msgid "Hide Inactive Parts" -msgstr "Ukryj nieaktywne części" +msgid "Show subscribed part categories on the homepage" +msgstr "Pokaż obserwowane kategorie części na stronie głównej" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" -msgstr "" +#: common/models.py:1946 +msgid "Show latest parts" +msgstr "Pokaż najnowsze części" #: common/models.py:1947 -msgid "Search Categories" -msgstr "" +msgid "Show latest parts on the homepage" +msgstr "Pokaż najnowsze części na stronie głównej" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" -msgstr "" +#: common/models.py:1967 +msgid "Show low stock" +msgstr "Pokaż niski stan magazynowy" #: common/models.py:1968 -msgid "Search Locations" -msgstr "" +msgid "Show low stock items on the homepage" +msgstr "Pokaż elementy o niskim stanie na stronie głównej" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" -msgstr "" +#: common/models.py:1981 +msgid "Show needed stock" +msgstr "Pokaż wymagany stan zapasów" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" -msgstr "Pokaż ilość w formularzach" +msgid "Show news on the homepage" +msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" -msgstr "Stały pasek nawigacyjny" +msgid "Configure which label printer should be selected by default" +msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" -msgstr "Format daty" - -#: common/models.py:2074 -msgid "Preferred format for displaying dates" -msgstr "Preferowany format wyświetlania dat" - -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" -msgstr "Planowanie komponentów" - -#: common/models.py:2089 -msgid "Display part scheduling information" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2079 +msgid "Search Parts" +msgstr "Szukaj części" + +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2100 +msgid "Hide Inactive Parts" +msgstr "Ukryj nieaktywne części" + +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" +msgstr "" + +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "Pokaż ilość w formularzach" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "Stały pasek nawigacyjny" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "Format daty" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "Preferowany format wyświetlania dat" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "Planowanie komponentów" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Cena" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "Punkt końcowy" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "Aktywny" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "Sekret" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "Współdzielony sekret dla HMAC" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "Id wiadomości" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "Unikalny identyfikator dla tej wiadomości" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "Host, od którego otrzymano tę wiadomość" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "Nagłówek" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "Nagłówek tej wiadomości" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "Zawartość" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "Autor" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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 "Obraz" -#: common/models.py:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "Opis firmy" msgid "Description of the company" msgstr "Opis firmy" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "Strona WWW" @@ -3507,331 +3609,395 @@ msgstr "Strona WWW" msgid "Company website URL" msgstr "Witryna internetowa firmy" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Adres" - -#: company/models.py:119 -msgid "Company address" -msgstr "Adres firmy" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Numer telefonu" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "Numer telefonu kontaktowego" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "Adres E-Mail" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "Kontaktowy adres e-mail" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Kontakt" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "Punkt kontaktowy" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "Link do informacji o zewnętrznym przedsiębiorstwie" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "jest klientem" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "Czy sprzedajesz produkty tej firmie?" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "jest dostawcą" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "Czy kupujesz przedmioty od tej firmy?" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "jest producentem" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "Czy to przedsiębiorstwo produkuje części?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Firma" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Część bazowa" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "Wybierz część" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Producent" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Wybierz producenta" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "Numer producenta komponentu" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Komponent producenta" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Wartość" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "Jednostki" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "Jednostki parametru" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Dostawca" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "Wybierz dostawcę" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "Uwaga" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "koszt podstawowy" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Opakowanie" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "Opakowanie części" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "wielokrotność" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "Dostępne" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "Domyślna waluta używana dla tego dostawcy" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "Utwórz zamówienie zakupu" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "Edytuj firmę" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "Usuń firmę" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "Usuń firmę" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "Usuń firmę" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Prześlij nowy obraz" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Pobierz obraz z adresu URL" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Klient" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "Używa domyślnej waluty" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Adres" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "Telefon" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "Załaduj obrazek" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "Pobierz obraz" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "Komponenty dostawcy" @@ -3916,156 +4089,144 @@ msgstr "Utwórz nowego dostawcę części" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "Nowy dostawca części" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "Zamów komponenty" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "Usuń części" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "Usuń części" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "Części producenta" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "Utwórz nową część producenta" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "Nowa część producenta" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "Zapasy dostawcy" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "Zamówienia zakupu" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "Utwórz nowe zamówienie zakupu" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "Nowe zamówienie zakupu" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "Utwórz nowe zlecenie sprzedaży" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "Notatki firmy" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "Lista dostawców" +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "Producenci" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "Zamów komponent" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "Edytuj komponent producenta" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "Usuń komponent producenta" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "Komponent wewnętrzny" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "Dostawcy" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "Usuń" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parametry" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "Nowy parametr" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "Usuń parametry" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "Dodaj parametr" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "Zamów komponent" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "Utwórz nowy towar" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Nowy towar" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "Informacja cenowa" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "Towary" @@ -4244,102 +4392,95 @@ msgstr "Towary" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "Nowy dostawca" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "Now producent" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "Klienci" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "Nowy klient" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "Firmy" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "Nowa firma" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "Nazwa etykiety" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "Opis etykiety" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "Etykieta" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "Aktywne" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "Szerokość [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "Wysokość [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "Wzór nazwy pliku" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "Filtry" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "Cena całkowita" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "Zlecenie zakupu" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "Link do zewnętrznej witryny" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "Utworzony przez" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "Odniesienie zamówienia" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "Status zamówienia zakupu" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "odebrane przez" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "Data wydania" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "Data wystawienia zamówienia" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "Wartość musi być liczbą dodatnią" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "Data wysyłki" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "wysłane przez" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "Ilość elementów" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "Zamówienie" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "Odebrane" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Cena zakupu" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "Cena zakupu jednostkowego" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "Gdzie kupujący chce przechowywać ten przedmiot?" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Cena sprzedaży" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "Jednostkowa cena sprzedaży" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "Wysłana ilość" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "Data wysyłki" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "Sprawdzone przez" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "Użytkownik, który sprawdził tę wysyłkę" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Przesyłka" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "Numer przesyłki" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "Numer śledzenia" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "Informacje o śledzeniu przesyłki" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "Przesyłka została już wysłana" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Zarezerwowana ilość nie może przekraczać ilości na stanie" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "Linia" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "Komponent" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "Zamówienie nie może zostać anulowane" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Kod kreskowy" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "Eksportuj zamówienie do pliku" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "Edytuj zamówienie" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "Anuluj zamówienie" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "Oznacz zamówienie jako zakończone" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "Kompletne zamówienie" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "Numer zamówienia" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "Opis zamówienia" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "Status zamówienia" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "Niekompletny" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "Wydany" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "Duplikuj wybrane" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Usuń wiersz" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "Dodaj element zamówienia" @@ -5165,30 +5302,25 @@ msgstr "Dodaj element zamówienia" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "Otrzymane elementy" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "Notatki zamówień" @@ -5197,40 +5329,40 @@ msgstr "Notatki zamówień" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "Całkowity Koszt" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "Oczekujące przesyłki" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Akcje" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "Nowa wysyłka" @@ -5293,64 +5424,65 @@ msgstr "Nowa wysyłka" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "Nie znaleziono ceny" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "ID komponentu" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "Nazwa komponentu" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "Wersja" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Słowa kluczowe" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "ID kategorii" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Wariant" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimalny stan magazynowy" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "Na stanie" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "W Zamówieniu" @@ -5383,115 +5515,108 @@ msgstr "W Zamówieniu" msgid "Used In" msgstr "Użyte w" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "Przydzielono" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "Ścieżka kategorii" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "Części" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "IPN komponentu" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "Ważny" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "Ta opcja musi być zaznaczona" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Domyślna lokalizacja" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "Dostępna ilość" @@ -5499,461 +5624,468 @@ msgstr "Dostępna ilość" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Kategoria komponentu" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "Kategorie części" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "Domyślna lokalizacja dla komponentów w tej kategorii" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "Domyślne słowa kluczowe" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "Nieprawidłowy wybór dla części nadrzędnej" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" -msgstr "Część '{p1}' jest używana w BOM dla '{p2}' (rekursywne)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "IPN musi być zgodny z wyrażeniem regularnym {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "Nazwa komponentu" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "Czy szablon" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "Czy ta część stanowi szablon części?" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "Czy ta część jest wariantem innej części?" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "Kategoria" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "Domyślne wygasanie" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Czy ten komponent może być zbudowany z innych komponentów?" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Czy ta część może być użyta do budowy innych części?" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "Czy ta część wymaga śledzenia każdego towaru z osobna?" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "Czy ta część jest aktywna?" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "Czy to wirtualna część, taka jak oprogramowanie lub licencja?" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "Tworzenie użytkownika" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "Ostatnia inwentaryzacja" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "Sprzedaj wiele" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "Data" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "Nazwa testu" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "Testowy opis" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "Wprowadź opis do tego testu" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Wymagane" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "Wymaga wartości" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "Wymaga załącznika" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "Część nadrzędna" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "Dane" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "Wartość parametru" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "Wartość domyślna" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "Unikalny wartość ID komponentu" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "Wartość IPN części" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "Poziom" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "Element BOM" + +#: part/models.py:3771 msgid "Select parent part" msgstr "Wybierz część nadrzędną" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "Podczęść" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "Opcjonalne" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "Ten element BOM jest opcjonalny" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "Notatki pozycji BOM" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "Suma kontrolna" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Zatwierdzone" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Zezwalaj na warianty" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "Część zastępcza" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "Część 1" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "Część 2" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "Wybierz powiązaną część" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "Waluta zakupu tego towaru" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "Kopiuj obraz" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "Kopiuj BOM" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "Kopiuj parametry" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "Kopiuj obraz" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "Kopiuj BOM" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "Kopiuj parametry" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "Duplikuj część" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "Usuń istniejące dane" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "Pomiń nieprawidłowe wiersze" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "Włącz tę opcję, aby pominąć nieprawidłowe wiersze" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "Wyczyść istniejący BOM" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "Nie podano ilości" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "Nieprawidłowa ilość" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "Nie masz uprawnień do edycji BOM." @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "Usuń elementy" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "Masz włączone powiadomienia dla tej kategorii" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "Włącz powiadomienia dla tej kategorii" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "Akcje kategorii" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "Edytuj kategorię" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "Edytuj kategorię" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "Usuń kategorię" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "Usuń kategorię" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "Kategoria najwyższego poziomu" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Podkategorie" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "Części (w tym podkategorie)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "Utwórz nową część" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "Nowy komponent" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "Opcje" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "Ustaw kategorię" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "Ustaw kategorię" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "Parametry części" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "Stwórz nową kategorię komponentów" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "Nowa kategoria" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "Odśwież" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "Warianty Części" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "Utwórz nowy wariant" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "Nowy wariant" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "Powiązane części" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "Dodaj powiązane" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "Zestawienie materiałowe" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "Akcje eksportu" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "Eksportuj BOM" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "Drukuj raport BOM" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "Wgraj BOM" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "Weryfikuj BOM" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "Dodaj część do BOM" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "Złożenia" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "Dostawcy Części" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "Producenci części" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "Powiązane części" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "Dodaj powiązaną część" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "Wybierz format pliku" @@ -6747,158 +6871,158 @@ msgstr "Wybierz format pliku" msgid "Part List" msgstr "Lista części" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "Masz włączone powiadomienia dla tej części" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "Włącz powiadomienia dla tej części" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "Drukuj etykietę" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "Pokaż informacje o cenach" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "Akcje magazynowe" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "Duplikuj część" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "Edytuj część" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "Usuń część" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "Nieaktywny" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "Część jest wirtualna (nie fizyczna)" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "Przypisane do zamówień sprzedaży" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "Minimalny poziom stanu magazynowego" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "Ostatni numer seryjny" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "Szukaj numeru seryjnego" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "Kod QR części" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "Oblicz" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "Nie znaleziono pasujących obrazów" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "Ukryj szczegóły części" @@ -6955,15 +7079,15 @@ msgstr "Warianty" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "Stan" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "Cennik" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "Ostatnia aktualizacja" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "Brak w magazynie" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "Mała ilość w magazynie" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "Nieznana baza danych" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "Wybierz obrazek części" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "Zaktualizowano zdjęcie części" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "Nie znaleziono obrazka części" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "Cennik części" @@ -7150,20 +7273,21 @@ msgstr "Nie określono działania" msgid "No matching action found" msgstr "Nie znaleziono pasującej akcji" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "Nie znaleziono wyników dla danych kodu kreskowego" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "Znaleziono wyniki dla danych kodu kreskowego" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" +msgstr "" + +#: plugin/models.py:28 msgid "Plugin Configuration" msgstr "Konfiguracja wtyczki" -#: plugin/models.py:28 +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "Konfiguracja wtyczek" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "Klucz" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "Klucz wtyczki" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "Nazwa wtyczki" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "Czy wtyczka jest aktywna" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "Zainstalowane" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "Wtyczka" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "Włącz PO" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "Włącz funkcjonalność PO w interfejsie InvenTree" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "Klucz API" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "Klucz wymagany do uzyskania dostępu do zewnętrznego API" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "Liczbowy" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "Ustawienie numeryczne" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "Ustawienie jednokrotnego wyboru" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "Ustawienie wielokrotnego wyboru" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "Źródłowy adres URL" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Źródło pakietu - może to być niestandardowy rejestr lub ścieżka VCS" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "Nazwa pakietu" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Nazwa pakietu wtyczki - może również zawierać wskaźnik wersji" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "Potwierdź instalację wtyczki" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Spowoduje to zainstalowanie tej wtyczki w bieżącej instancji. Instancja przejdzie do trybu konserwacji." -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "Instalacja nie została potwierdzona" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "Nazwa szablonu" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "Filtr części" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "Wycinek" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "Cena jednostkowa" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 msgid "Total" msgstr "Razem" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Numer Seryjny" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "Wynik" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "Zainstalowane elementy" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Numer seryjny" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "ID lokalizacji" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Ścieżka lokalizacji" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "ID części dostawcy" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Zainstalowane w" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "Data ważności" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "Lokacje stanu magazynowego" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Właściciel" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "Wybierz właściciela" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "Nadrzędny towar" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "Część podstawowa" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "Wybierz pasującą część dostawcy dla tego towaru" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "Ilość w magazynie" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "Usuń po wyczerpaniu" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "Ilość musi być liczbą całkowitą" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" -msgstr "Ilość nie może przekraczać dostępnej ilości towaru ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "Numer seryjny już istnieje" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "Notatki do wpisu" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "Należy podać wartość dla tego testu" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "Nazwa testu" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "Wynik testu" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "Część musi być dostępna do sprzedaży" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "Skanuj do lokacji" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "Akcje druku" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "Przelicz stan magazynowy" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "Usuń stan magazynowy" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "Przenieś stan magazynowy" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "Odinstaluj" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "Zainstaluj" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Budowa" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "Element nadrzędny" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "Nie ustawiono producenta" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "Tylko do odczytu" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "poprzednia strona" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "następna strona" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "Lokacje nie są ustawione" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "Testy" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "Termin minął" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "Ostrzeżenie" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "Wróć do stanu magazynowego" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 +msgid "Location actions" +msgstr "" + +#: stock/templates/stock/location.html:106 msgid "Edit location" msgstr "Edytuj lokację" -#: stock/templates/stock/location.html:106 +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Podlokalizacje" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "Nowa lokalizacja" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "Zaloguj się" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "Indeks" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "Obserwowane elementy" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "Obserwowane kategorie" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "Najnowsze części" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "Wyczerpane stany magazynowe" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "Zaległe zlecenia budowy" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "Trwające zlecenia zakupu" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "Zaległe zlecenia zakupu" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "Trwające zlecenia sprzedaży" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "Zaległe zlecenia sprzedaży" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "Ustawienia" @@ -8651,7 +9063,7 @@ msgstr "Import części" msgid "Import Part" msgstr "Import części" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "Wtyczki" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "Instaluj wtyczkę" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "Błąd stosu wtyczki" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "Etap" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "Wiadomość" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "Informacje o wtyczce" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "Wersja" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "Ścieżka instalacji" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "Autor commitu" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "Data commitu" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "Hash commitu" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "Wiadomość commitu" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "Status podpisu" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "Klucz podpisu" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "Nie ustawiono wartości" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "Edytuj ustawienie" @@ -8851,50 +9275,103 @@ msgstr "Edytuj ustawienie użytkownika" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Usuń" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "Nie znaleziono szablonów parametrów kategorii" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "Edytuj szablon" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "Usuń szablon" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "Strona główna" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "Szukaj" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "Raportowanie" @@ -8932,11 +9409,11 @@ msgstr "Ustawienia globalne" msgid "Server" msgstr "Serwer" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "Kategorie" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "Ustawienia konta" @@ -8958,13 +9439,6 @@ msgstr "Ustawienia konta" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9204,44 +9679,48 @@ msgstr "Aktualna" msgid "Update Available" msgstr "Dostępna aktualizacja" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "Dokumentacja InvenTree" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "Wersja interfejsu API" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "Wersja Pythona" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "Wersja Django" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "Zobacz kod na GitHub" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "Autorzy" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "Aplikacja mobilna" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "Prześlij raport o błędzie" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "skopiuj do schowka" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "kopiuj informacje o wersji" @@ -9259,7 +9738,7 @@ msgstr "Potwierdź adres e-mail" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "Proszę potwierdzić że %(email)s jest adresem e-mail dla użytkownika %(user_display)s." -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Potwierdź" @@ -9435,30 +9914,30 @@ msgstr "Dodaj link" msgid "Add Attachment" msgstr "Dodaj załącznik" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "Skaner kodów" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "Wymagane ponowne uruchomienie serwera" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "Zmieniono opcję konfiguracji, która wymaga ponownego uruchomienia serwera" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "Skontaktuj się z administratorem systemu w celu uzyskania dalszych informacji" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "Wymagana ilość" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "Minimalna ilość" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "Brak odpowiedzi" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "Brak odpowiedzi z serwera InvenTree" @@ -9521,27 +10000,27 @@ msgstr "Błąd 400: Błędne żądanie" msgid "API request returned error code 400" msgstr "Żądanie interfejsu API zwróciło kod błędu 400" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "Błąd 401: Nieuwierzytelniony" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "Dane uwierzytelniające nie zostały dostarczone" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "Błąd 403: Odmowa dostępu" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "Nie masz uprawnień wymaganych do dostępu do tej funkcji" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "Błąd 404: Nie znaleziono zasobu" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "Żądany zasób nie mógł być zlokalizowany na serwerze" @@ -9553,19 +10032,27 @@ msgstr "Błąd 405: Metoda nie jest dozwolona" msgid "HTTP method not allowed at URL" msgstr "Metoda HTTP nie jest dozwolona pod tym adresem URL" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "Błąd 408: Przekroczony limit czasu" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "Limit czasu połączenia podczas żądania danych z serwera" #: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 msgid "Unhandled Error Code" msgstr "Nieobsługiwany kod błędu" -#: templates/js/translated/api.js:262 +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "Kod błędu" @@ -9573,23 +10060,35 @@ msgstr "Kod błędu" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "Nie znaleziono załączników" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "Edytuj załącznik" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "Data przesłania" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "Edytuj załącznik" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "Usuń załącznik" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "Nieznana odpowiedź serwera" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "Niepoprawna odpowiedź serwera" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "Rozłącz" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "Wyświetl dane wiersza" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "Dane wiersza" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "Zamknij" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "Pobierz szablon BOM-u" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "Poziomy" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "Dodaj zamiennik" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "Zobacz BOM" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "Czy na pewno przerwać tę budowę?" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "Ostatni numer seryjny" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "Utwórz zlecenie budowy" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "Wyjście" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "Ilość za" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "Wybierz części" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "Wybierz" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "Brak informacji o użytkowniku" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "Dodaj producenta" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "Dodaj część producenta" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "Dodaj dostawcę" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "Wszystkie wybrane komponenty dostawcy zostaną usunięte" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "Dodaj nową firmę" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "Usuń parametry" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "Zamów komponenty" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "Nie znaleziono parametrów" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "Edytuj Parametr" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "Usuń parametr" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "Edytuj Parametr" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "Usuń parametr" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "Edytuj przedział cenowy" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "Ostatnio aktualizowane" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "Edytuj przedział cenowy" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "prawda" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "fałsz" @@ -10448,89 +11043,89 @@ msgstr "fałsz" msgid "Select filter" msgstr "Wybierz filtr" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "Dodaj nowy filtr" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "Wyczyść wszystkie filtry" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "Utwórz filtr" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "Działanie zabronione" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "Operacja utworzenia nie jest dozwolona" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "Operacja aktualizacji nie jest dozwolona" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "Operacja usuwania nie jest dozwolona" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "Operacja przeglądania nie jest dozwolona" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "Pozostaw ten formularz otwarty" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "Wprowadź poprawny numer" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "Istnieją błędy formularza" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "Nie znaleziono wyników" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "Wyszukiwanie" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "Wyczyść wejście" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "Kolumna pliku" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "Nazwa pola" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "Wybór Kolumn" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "Wybierz szablon etykiety" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "Nie znaleziono etykiet" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "Anuluj" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "Zatwierdź" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "Tytuł formularza" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "Oczekiwanie na serwer..." -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "Pokaż informacje o błędzie" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "Zaakceptuj" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "Wczytywanie danych" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "Niepoprawna odpowiedź serwera" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "Brak danych formularza z odpowiedzi serwera" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "Błąd podczas wysyłania danych formularza" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "Brak danych w formularzu odpowiedzi JSON" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "400: Nieprawidłowe zapytanie" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "Serwer zwrócił kod błędu 400" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "Błąd podczas żądania danych formularza" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "Atrybuty części" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "Utwórz nową kategorię części" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "Edytuj kategorię części" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "Czy na pewno chcesz usunąć tę kategorię części?" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "Utwórz część" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "Utwórz kolejną część po tej" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "Część utworzona pomyślnie" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "Edytuj część" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "Część zmodyfikowana" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "Utwórz wariant części" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "Masz włączone powiadomienia dla tej części" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "Masz włączone powiadomienia dla tej części" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "Włącz powiadomienia dla tej części" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "Zostałeś wypisany z powiadomień dla tej części" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "Obserwowane części" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "Nie znaleziono wariantów" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "Nie znaleziono szablonów parametrów części" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "Nie znaleziono części" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "Brak kategorii" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "Wyświetl jako listę" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "Wyświetl jako siatkę" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "Ustaw kategorię części" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "Ustaw kategorię" + +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" -msgstr "" +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "Brak kategorii" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "Wyświetl jako listę" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "Wyświetl jako siatkę" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "Wyświetl jako drzewo" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "Obserwowana kategoria" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "Edytuj zamówienie zakupu" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "Oznacz zamówienie jako zakończone?" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "Kod zamówienia" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "Ilość do otrzymania" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "Potwierdź odbiór elementów" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "Przedmioty" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "Nieprawidłowy klient" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "Nie znaleziono zamówień sprzedaży" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "Edytuj wysyłkę" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "Kompletna wysyłka" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "Usuń wysyłkę" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "Edytuj wysyłkę" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "Usuń wysyłkę" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "Nie odnaleziono pasujących przesyłek" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "Numer referencyjny przesyłki" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "Nie wysłano" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "Śledzenie" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "Potwierdź przydział zapasów" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "Cena zakupu" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "Oblicz cenę" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "Zaktualizuj cenę jednostkową" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "Czy na pewno chcesz skasować tą lokację?" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "Czy na pewno chcesz usunąć tą część?" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "Przenieś" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "Weź" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "Dodaj stan" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "Dodaj" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "Usuń stan magazynowy" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "Wybierz przedmioty magazynowe" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "BRAK WYNIKÓW" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "Dodaj wynik testu" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "W produkcji" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "Scal stany magazynowe" + +#: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "Usuń stan magazynowy" + +#: templates/js/translated/stock.js:1923 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1850 +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1855 +#: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1858 +#: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1863 +#: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1865 +#: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1868 +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "Szczegóły" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "Lokalizacja już nie istnieje" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "Zamówienie zakupu już nie istnieje" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "Klient już nie istnieje" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "Element magazynowy już nie istnieje" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "Dodano" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "Usunięto" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "Status zamówienia" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "Przypisane do mnie" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "Uwzględnij podlokalizacje" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "Obesrwowane" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: 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 "Numer seryjny" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "Kod partii" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "Aktywne części" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "Część jest zespołem" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "Jest przydzielony" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "Przedmiot został przydzielony" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "W produkcji" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "Obejmuje warianty" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "Zainstalowane" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "Posiada cenę zakupu" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "Test pomyślny" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "Pokaż aktywne części" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "Posiada IPN" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "Część posiada wewnętrzny numer części" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "Możliwość zakupu" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "Eksportuj dane tabeli" msgid "Select File Format" msgstr "Wybierz format pliku" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "Wczytywanie danych" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "wierszy na stronę" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "Pokaż wszystkie wiersze" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "Pokazywane" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "do" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "z" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "wierszy" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "Brak pasujących wyników" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "Ukryj/Pokaż stronicowanie" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "Przełącz" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "Kolumny" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "Wszystkie" @@ -12454,11 +13097,11 @@ msgstr "Pokaż powiadomienia" msgid "New Notifications" msgstr "Nowe powiadomienia" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "Wyloguj się" @@ -12474,11 +13117,11 @@ msgstr "Pokaż wszystkie powiadomienia i historię" msgid "QR data not provided" msgstr "Dane QR nie zostały dostarczone" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "Zostałeś pomyślnie wylogowany." -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "Zaloguj się ponownie" @@ -12616,50 +13259,6 @@ msgstr "Ustawienia e-maila" msgid "Email settings not configured" msgstr "Ustawienia e-mail nie zostały skonfigurowane" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "Akcje kodów kreskowych" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "Opcje magazynowe" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "Dodaj do wybranych produktów magazynowych" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "Usuń z wybranych przedmiotów magazynowych" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "Przenieś wybrane przedmioty magazynowe" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "Połącz wybrane przedmioty magazynowe" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "Scal stany magazynowe" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "Zamów wybrane elementy" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "Usuń zaznaczone elementy" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "Usuń stan magazynowy" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "Tak" @@ -12668,59 +13267,99 @@ msgstr "Tak" msgid "No" msgstr "Nie" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "Użytkownicy" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "Informacje osobiste" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "Uprawnienia" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "Ważne daty" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "Uprawnienia nadane" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "Grupa" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "Widok" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "Uprawnienie do wyświetlania przedmiotów" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "Uprawnienie do dodawania przedmiotów" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "Zmień" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "Uprawnienie do edycji przedmiotów" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "Uprawnienie do usuwania przedmiotów" diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po index b2ef83de5b..5b79c65cfd 100644 --- a/InvenTree/locale/pt/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API endpoint não encontrado" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "Usuário não tem permissão para ver este modelo" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "Nenhum valor fornecido" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" -msgstr "O valor fornecido não é um número válido" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "Valor fornecido tem uma unidade inválida" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "Valor fornecido não pôde ser convertido para a unidade especificada" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Detalhes do erro podem ser encontrados no painel de administrador" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Insira uma Data" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Anotações" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "Valor '{name}' não está no formato correto" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "O valor fornecido não corresponde ao padrão exigido: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Digite a senha" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Insira uma nova senha" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Confirmar senha" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Confirmar nova senha" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Senha atual" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "E-mail (novamente)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Confirmação do endereço de email" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." -msgstr "Voce precisa digital o mesmo email." +msgstr "Você deve digitar o mesmo e-mail todas as vezes." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "O endereço primário de e-mail não é válido." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "O domínio de e-mail providenciado não foi aprovado." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "Cadastro está desativado." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" -msgstr "Quantidade invalida" +msgstr "Quantidade fornecida inválida" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" -msgstr "Numero serial em branco" +msgstr "Número serial em branco" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Número de série duplicado" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Numero de grupo invalido:{g}" +msgid "Invalid group range: {group}" +msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "Intervalo de grupos {g} excede a quantidade permitida ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Sequencia de grupo invalida:{g}" +msgid "Invalid group sequence: {group}" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" -msgstr "Nenhum numero serial encontrado" +msgstr "Nenhum número de série foi encontrado" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Numero de numeros seriais ({s}) precisa bater com quantidade ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Remova as \"tags\" HTML deste valor" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Erro de conexão" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "O servidor respondeu com código estado inválido" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Ocorreu uma exceção" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "O servidor respondeu com valor inválido do tamanho de conteúdo" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Tamanho da imagem muito grande" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "O download da imagem excedeu o tamanho máximo" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "O servidor remoto retornou resposta vazia" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "A URL fornecida não é um arquivo de imagem válido" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "[{site.name}] Acesse no aplicativo" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "Email" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "Metadados deve ser um objeto dict python" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "Metadados da Extensão" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "Campo de metadados JSON, para uso por extensões externas" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Padrão formatado incorretamente" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Chave de formato desconhecida especificada" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Chave de formato obrigatória ausente" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "O campo de referência não pode ficar vazio" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "A referência deve corresponder ao padrão exigido" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "O número de referência é muito grande" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" -msgstr "Arquivo nao encontrado" +msgstr "Arquivo ausente" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" -msgstr "Link externo nao encontrado" +msgstr "Link externo não encontrado" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Anexo" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Selecione arquivo para anexar" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Link" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Link para URL externa" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Comentario" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Comentario sobre arquivo" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Usuario" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "data de upload" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Nome do arquivo nao pode estar vazio" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Diretorio para anexo invalido" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Arquivo contem characteres ilegais '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Arquivo sem extensao" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Anexo ja existe" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Erro renomeando o arquivo" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "Nomes duplicados não podem existir sob o mesmo parental" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Escolha inválida" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Nome" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" -msgstr "Descricao" +msgstr "Descrição" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" -msgstr "Descricao (opicional)" +msgstr "Descrição (opcional)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "parent" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Caminho" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "Notas Markdown (opcional)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Dados de código de barras" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Dados de código de barras de terceiros" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Hash de código de barras" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Hash exclusivo de dados de código de barras" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Código de barras existente encontrado" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Erro de servidor" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "Log de erro salvo pelo servidor." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Preicsa ser um numero valido" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Moeda" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "Selecione a Moeda nas opções disponíveis" @@ -484,143 +509,155 @@ msgstr "Falta a coluna obrigatória: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Coluna duplicada: \"{col}\"" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "Endereço da URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "URL do arquivo de imagem remoto" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Baixar imagens de URL remota não está habilitado" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Tcheco" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Dinamarquês" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Alemão" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Grego" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Inglês" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Espanhol" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Espanhol (Mexicano)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Persa" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "Finlandês" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Francês" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Hebraico" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "Hindu" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Húngaro" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Italiano" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japonês" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Coreano" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Holandês" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norueguês" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Polonês" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Português" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Português (Brasileiro)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Russo" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Esloveno" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Sueco" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Tailandês" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Turco" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnamita" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Chinês" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "Chinês (Simplificado)" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "Chinês (Tradicional)" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Falha em verificar o histórico do trabalhador" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "Serviço de fundo do e-mail não foi configurado" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "Verificação de saúde do sistema InvenTree falhou" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Pendente" @@ -630,8 +667,8 @@ msgstr "Colocado" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Completado" @@ -654,10 +691,10 @@ msgstr "Retornado" msgid "In Progress" msgstr "Em Progresso" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Enviado" @@ -689,7 +726,7 @@ msgstr "Em quarentena" msgid "Legacy stock tracking entry" msgstr "Entrada de rastreamento de estoque antiga" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Item de estoque criado" @@ -745,7 +782,7 @@ msgstr "Separado do Item Paternal" msgid "Split child item" msgstr "Separar o Item filho" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Itens de estoque mesclados" @@ -765,9 +802,9 @@ msgstr "Criação do pedido de produção completado" msgid "Build order output rejected" msgstr "Saída do pedido de produção rejeitada" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" -msgstr "Usado na ordem de produção" +msgstr "Usado no pedido de produção" #: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" @@ -781,13 +818,13 @@ msgstr "Recebido referente ao Pedido de Compra" msgid "Returned against Return Order" msgstr "Devolvido contra Pedido de Retorno" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Enviado ao cliente" #: InvenTree/status_codes.py:142 msgid "Returned from customer" -msgstr "Retornado ao cliente" +msgstr "Devolvido pelo cliente" #: InvenTree/status_codes.py:149 msgid "Production" @@ -813,119 +850,165 @@ msgstr "Reembolsar" msgid "Reject" msgstr "Recusar" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "Unidade física inválida" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Não é um código de moeda válido" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Valor excedente não deve ser negativo" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Excedente não deve exceder 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Valor de excedente inválido" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Editar informações do usuário" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Definir senha" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Os campos de senha devem coincidir" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Senha incorreta fornecida" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Informação do Sistema" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Sobre o InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "Produção deve ser cancelada antes de ser deletada" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "Consumível" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "Opcional" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "Monitorado" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "Alocado" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Disponível" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Ondem de Produção" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Ordens de Produções" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Escolha de Produção parental inválida" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Referência do pedido de produção" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Referência" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "Breve descrição da produção (opcional)" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Produção Progenitor" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" -msgstr "Ordem de produção para qual este serviço está alocado" +msgstr "Pedido de produção para qual este serviço está alocado" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Ordem de produção para qual este serviço está alocado" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Peça" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Selecionar peça para produção" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Referência do pedido de venda" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" -msgstr "Ordem de Venda para qual esta produção está alocada" +msgstr "Pedido de Venda para qual esta produção está alocada" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Local de Origem" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Selecione a localização para pegar do estoque para esta produção (deixe em branco para tirar a partir de qualquer local de estoque)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Local de Destino" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Selecione o local onde os itens concluídos serão armazenados" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Quantidade de Produção" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Número de itens em estoque para produzir" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Itens concluídos" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Número de itens em estoque concluídos" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Progresso da produção" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Código de situação da produção" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Código de Lote" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Código do lote para esta saída de produção" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Criado em" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Data alvo final" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Data alvo para finalização de produção. Estará atrasado a partir deste dia." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Data de conclusão" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" -msgstr "Concluído em" +msgstr "Concluído por" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" -msgstr "Emitido em" +msgstr "Emitido por" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" -msgstr "Usuário que emitiu esta ordem de produção" +msgstr "Usuário que emitiu este pedido de produção" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Responsável" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" -msgstr "Usuário ou grupo responsável para esta ordem de produção" +msgstr "Usuário ou grupo responsável para este pedido de produção" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Link Externo" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "Prioridade de Produção" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" -msgstr "Prioridade desta ordem de produção" +msgstr "Prioridade deste pedido de produção" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "Código do projeto" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "Código do projeto para este pedido de produção" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "O Pedido de produção {build} foi concluído!" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "Um pedido de produção foi concluído" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Nenhuma saída de produção especificada" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Saída de produção já completada" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" -msgstr "Saída da produção não corresponde à Ordem de Produção" +msgstr "Saída da produção não corresponde ao Pedido de Produção" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "Quantidade deve ser maior que zero" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "Quantidade não pode ser maior do que a quantidade de saída" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Item de produção deve especificar a saída, pois peças mestres estão marcadas como rastreáveis" +#: build/models.py:1266 +msgid "Build object" +msgstr "Objeto de produção" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "Quantidade alocada ({q}) não deve exceder a quantidade disponível em estoque ({a})" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "O item do estoque está sobre-alocado" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Quantidade alocada deve ser maior que zero" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "Quantidade deve ser 1 para estoque serializado" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Item do estoque selecionado não encontrado na LDM" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Produção" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "Faça uma Produção para atribuir peças" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Item de estoque" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Origem do item em estoque" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Quantidade" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "Quantidade necessária para o pedido de produção" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "Item de produção deve especificar a saída, pois peças mestres estão marcadas como rastreáveis" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "Quantidade alocada ({q}) não deve exceder a quantidade disponível em estoque ({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "O item do estoque está sobre-alocado" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Quantidade alocada deve ser maior que zero" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Quantidade deve ser 1 para estoque serializado" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "Item estoque selecionado não coincide com linha da LDM" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Item de estoque" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Origem do item em estoque" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Quantidade do estoque para alocar à produção" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Instalar em" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Destino do Item do Estoque" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "Saída da Produção" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "Saída de produção não coincide com a produção progenitora" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "Peça de saída não coincide com a peça da ordem de produção" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "Esta saída de produção já foi concluída" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "A saída de produção não está completamente alocada" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "Entre a quantidade da saída de produção" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "Quantidade inteira necessária para peças rastreáveis" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Quantidade inteira necessária, pois a lista de materiais contém peças rastreáveis" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Números de Série" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "Digite os números de série para saídas de produção" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "Alocar Números de Série Automaticamente" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "Alocar automaticamente os itens necessários com os números de série correspondentes" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "Os seguintes números de série já existem ou são inválidos" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "Uma lista de saídas de produção deve ser fornecida" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Local" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "Local de estoque para saídas recicladas" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "Descartar alocações" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" -msgstr "" +msgstr "Descartar quaisquer alocações de estoque para saídas sucateadas" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" -msgstr "" +msgstr "Motivo para sucatear saída(s) de produção" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "Local para saídas de produção concluídas" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Situação" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "Aceitar Alocação Incompleta" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "Concluir saídas se o estoque não tiver sido totalmente alocado" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "Remover Estoque Alocado" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "Subtrair qualquer estoque que já tenha sido alocado para esta produção" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "Remover Saídas Incompletas" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "Excluir quaisquer saídas de produção que não tenham sido completadas" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "Não permitido" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "Aceitar conforme consumido por esta ordem de produção" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" -msgstr "Desatribua antes de completar esta ordem de produção" +msgstr "Desatribua antes de completar este pedido de produção" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "Estoque sobrealocado" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" -msgstr "Como deseja manejar itens de estoque extras atribuídos a ordem de produção" +msgstr "Como deseja manejar itens de estoque extras atribuídos ao pedido de produção" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "Alguns itens de estoque foram sobrealocados" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "Aceitar não alocados" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "Aceitar que os itens de estoque não foram totalmente alocados para esta produção" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "Estoque obrigatório não foi totalmente alocado" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "Aceitar Incompleto" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "Aceitar que o número requerido de saídas de produção não foi concluído" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "Quantidade de produção requerida não foi concluída" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "Pedido de produção tem saídas incompletas" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "Item LDM" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "Linha de produção" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "Saída da Produção" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "Saída de produção deve indicar a mesma produção" -#: build/serializers.py:782 -msgid "bom_item.part must point to the same part as the build order" -msgstr "bin_item.part deve indicar a mesma peça da ordem de produção" +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "Item da linha de produção" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:786 +msgid "bom_item.part must point to the same part as the build order" +msgstr "bin_item.part deve indicar a mesma peça do pedido de produção" + +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "Item deve estar em estoque" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantidade disponível ({q}) excedida" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "Saída de produção deve ser definida para alocação de peças rastreadas" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Saída de produção deve ser definida para alocação de peças não rastreadas" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "O item em estoque já foi alocado para essa saída de produção" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "Alocação do Item precisa ser fornecida" @@ -1513,122 +1611,123 @@ msgstr "Itens opcionais" #: build/serializers.py:970 msgid "Allocate optional BOM items to build order" -msgstr "Alocar itens LDM opcionais para a ordem de produção" +msgstr "Alocar itens LDM opcionais para o pedido de produção" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "Estoque obrigatório para o pedido de produção" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "Pedido de produção vencido" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "Pedido de produção {bo} está atrasada" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" -msgstr "" +msgstr "Miniatura da parte" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "Ações de código de barras" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "Mostrar QR Code" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "Desatribuir Código de Barras" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "Atribuir Código de Barras" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "Ações de impressão" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "Imprimir relatório do pedido de produção" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "Ações de produção" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Editar produção" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Cancelar produção" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "Duplicar produção" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "Excluir produção" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "Concluir produção" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "Descrição da produção" #: build/templates/build/build_base.html:117 msgid "No build outputs have been created for this build order" -msgstr "Nenhuma saída de produção foi criada para esta ordem de serviço" +msgstr "Nenhuma saída de produção foi criada para este pedido de produção" #: build/templates/build/build_base.html:124 msgid "Build Order is ready to mark as completed" -msgstr "Ordem de produção está pronta para ser marcada como concluída" +msgstr "Pedido de produção está pronta para ser marcada como concluída" #: build/templates/build/build_base.html:129 msgid "Build Order cannot be completed as outstanding outputs remain" -msgstr "Ordem de produção não pode ser concluída, os resultados pendentes permanecem" +msgstr "Pedido de produção não pode ser concluída, os resultados pendentes permanecem" #: build/templates/build/build_base.html:134 msgid "Required build quantity has not yet been completed" @@ -1639,18 +1738,18 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Estoque não foi totalmente alocado para este Pedido de Produção" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "Data alvo" @@ -1661,53 +1760,52 @@ msgstr "Essa produção expirou em %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "Expirou" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Concluído" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "Saídas Concluídas" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "Pedido de Venda" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Emitido por" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "Prioridade" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "Excluir Ordem de Produção" +msgstr "Excluir Pedido de Produção" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" @@ -1729,8 +1827,8 @@ msgstr "Origem do estoque" msgid "Stock can be taken from any available location." msgstr "O estoque pode ser tirado de qualquer local disponível." -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "Destino" @@ -1742,23 +1840,23 @@ msgstr "Loca de destino não especificado" msgid "Allocated Parts" msgstr "Peças alocadas" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "Lote" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "Criado" @@ -1766,147 +1864,106 @@ msgstr "Criado" msgid "No target date set" msgstr "Sem data alvo definida" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Concluído" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "Produção não concluída" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "Pedido de Produção Filho" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "Alocar Estoque para Produção" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" -msgstr "Estoque não alocado" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "Desalocar estoque" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "Desalocar estoque" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "Estoque não Alocado" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "Alocar o estoque para produção automaticamente" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "Alocar automaticamente" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "Alocar estoque para a produção manualmente" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "Alocar estoque" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "Pedir peças necessárias" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "Pedir Peças" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "Estoque não rastreável foi totalmente alocado para este Pedido de Produção" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "Estoque não rastreável não foi totalmente alocado para este Pedido de Produção" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "Alocar itens selecionados" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "Esse Pedido de Produção não possuí nenhum item não rastreável associado à LDM" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "Saída de Produção Incompletas" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "Criar nova saída de produção" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "Nova saída de produção" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "Ações de saídas" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "Concluir saídas de produções selecionados" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "Saídas concluídas" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "Excluir saídas de produções selecionados" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "Exlcuir saídas" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" -msgstr "" +msgstr "Consumir estoque" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "Saídas de Produção concluídas" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Anexos" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "Notas de produção" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "Alocação Concluída" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" -msgstr "Todos os itens não rastreáveis foram alocados" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "Todas as linhas foram totalmente alocadas" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "Novo Pedido de Produção" @@ -1914,14 +1971,10 @@ msgstr "Novo Pedido de Produção" msgid "Build Order Details" msgstr "Detalhes do Pedido de Produção" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "Saídas Incompletas" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "Saídas Concluídas" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "Arquivo {name.title()}" msgid "Select {name} file to upload" msgstr "Selecione {name} arquivo para carregar" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "Atualizado" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "Tempo da última atualização" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "Código do projeto" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "Código único do projeto" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "Descrição do projeto" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "Senha de configurações (deve ser única — diferencia maiúsculas de minúsculas)" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "Valor da Configuração" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "Valor escolhido não é uma opção válida" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "Valor deve ser um valor booleano" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "Valor deve ser um número inteiro" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "A frase senha deve ser diferenciada" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "Nenhum grupo" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "Um domínio vazio não é permitido." -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Nome de domínio inválido: {domain}" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "Reinicialização necessária" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "Uma configuração que requer uma reinicialização do servidor foi alterada" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "Nome da Instância do Servidor" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "Descritor de frases para a instância do servidor" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "Usar nome da instância" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "Usar o nome da instância na barra de título" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "Restringir a exibição 'sobre'" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "Mostrar 'sobre' modal apenas para superusuários" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Nome da empresa" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "Nome interno da Empresa" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "URL de Base" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "URL Base da instância do servidor" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Moeda Padrão" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "Selecione a moeda base para cálculos de preços" -#: common/models.py:979 -msgid "Download from URL" -msgstr "Baixar do URL" +#: common/models.py:1126 +msgid "Currency Update Interval" +msgstr "" -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "Permitir baixar imagens remotas e arquivos de URLs externos" +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "Limite de tamanho para baixar" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "Maior tamanho de imagem remota baixada permitida" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "Usuário-agente utilizado para baixar da URL" - -#: common/models.py:999 -msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" -msgstr "Permitir a substituição de imagens e arquivos usados baixados por usuário-agente (deixar em branco por padrão)" - -#: common/models.py:1004 -msgid "Require confirm" -msgstr "Exigir confirmação" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "Exigir confirmação explícita do usuário para uma certa ação." - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "Profundidade da árvore" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "Profundidade padrão de visualização da árvore. Níveis mais profundos podem ser carregados gradualmente conforme necessário." - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "Atualizar Intervalo de Verificação" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "Frequência para verificar atualizações (defina como zero para desativar)" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 msgid "days" msgstr "dias" -#: common/models.py:1032 +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Baixar do URL" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Permitir baixar imagens remotas e arquivos de URLs externos" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "Limite de tamanho para baixar" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "Maior tamanho de imagem remota baixada permitida" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "Usuário-agente utilizado para baixar da URL" + +#: common/models.py:1164 +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "Permitir a substituição de imagens e arquivos usados baixados por usuário-agente (deixar em branco por padrão)" + +#: common/models.py:1169 +msgid "Require confirm" +msgstr "Exigir confirmação" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "Exigir confirmação explícita do usuário para uma certa ação." + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "Profundidade da árvore" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "Profundidade padrão de visualização da árvore. Níveis mais profundos podem ser carregados gradualmente conforme necessário." + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "Atualizar Intervalo de Verificação" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "Frequência para verificar atualizações (defina como zero para desativar)" + +#: common/models.py:1197 msgid "Automatic Backup" msgstr "Cópia de Segurança Automática" -#: common/models.py:1033 +#: common/models.py:1198 msgid "Enable automatic backup of database and media files" msgstr "Ativar cópia de segurança automática do banco de dados e arquivos de mídia" -#: common/models.py:1039 +#: common/models.py:1204 msgid "Auto Backup Interval" msgstr "Intervalo de Backup Automático" -#: common/models.py:1040 +#: common/models.py:1205 msgid "Specify number of days between automated backup events" msgstr "Especificar o número de dia entre as cópias de segurança" -#: common/models.py:1050 +#: common/models.py:1215 msgid "Task Deletion Interval" msgstr "Intervalo para Excluir da Tarefa" -#: common/models.py:1051 +#: common/models.py:1216 msgid "Background task results will be deleted after specified number of days" msgstr "Os resultados da tarefa no plano de fundo serão excluídos após um número especificado de dias" -#: common/models.py:1061 +#: common/models.py:1226 msgid "Error Log Deletion Interval" msgstr "Intervalo para Excluir do Registro de Erro" -#: common/models.py:1062 +#: common/models.py:1227 msgid "Error logs will be deleted after specified number of days" msgstr "Registros de erros serão excluídos após um número especificado de dias" -#: common/models.py:1072 +#: common/models.py:1237 msgid "Notification Deletion Interval" msgstr "Intervalo para Excluir de Notificação" -#: common/models.py:1073 +#: common/models.py:1238 msgid "User notifications will be deleted after specified number of days" msgstr "Notificações de usuários será excluído após um número especificado de dias" -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Suporte aos códigos de barras" -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "Habilitar suporte a leitor de códigos de barras" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" -#: common/models.py:1090 +#: common/models.py:1255 msgid "Barcode Input Delay" msgstr "Atraso na entrada de código de barras" -#: common/models.py:1091 +#: common/models.py:1256 msgid "Barcode input processing delay time" msgstr "Tempo de atraso de processamento de entrada de barras" -#: common/models.py:1101 +#: common/models.py:1266 msgid "Barcode Webcam Support" msgstr "Suporte a código de barras via Câmera" -#: common/models.py:1102 +#: common/models.py:1267 msgid "Allow barcode scanning via webcam in browser" msgstr "Permitir escanear código de barras por câmera pelo navegador" -#: common/models.py:1108 +#: common/models.py:1273 msgid "Part Revisions" msgstr "Revisões de peças" -#: common/models.py:1109 +#: common/models.py:1274 msgid "Enable revision field for Part" msgstr "Habilitar campo de revisão para a Peça" -#: common/models.py:1115 +#: common/models.py:1280 msgid "IPN Regex" msgstr "Regex IPN" -#: common/models.py:1116 +#: common/models.py:1281 msgid "Regular expression pattern for matching Part IPN" msgstr "Padrão de expressão regular adequado para Peça IPN" -#: common/models.py:1120 +#: common/models.py:1285 msgid "Allow Duplicate IPN" msgstr "Permitir Duplicação IPN" -#: common/models.py:1121 +#: common/models.py:1286 msgid "Allow multiple parts to share the same IPN" msgstr "Permitir que várias peças compartilhem o mesmo IPN" -#: common/models.py:1127 +#: common/models.py:1292 msgid "Allow Editing IPN" msgstr "Permitir Edição IPN" -#: common/models.py:1128 +#: common/models.py:1293 msgid "Allow changing the IPN value while editing a part" msgstr "Permitir trocar o valor do IPN enquanto se edita a peça" -#: common/models.py:1134 +#: common/models.py:1299 msgid "Copy Part BOM Data" msgstr "Copiar dados da LDM da Peça" -#: common/models.py:1135 +#: common/models.py:1300 msgid "Copy BOM data by default when duplicating a part" msgstr "Copiar dados da LDM por padrão quando duplicar a peça" -#: common/models.py:1141 +#: common/models.py:1306 msgid "Copy Part Parameter Data" msgstr "Copiar Dados de Parâmetro da Peça" -#: common/models.py:1142 +#: common/models.py:1307 msgid "Copy parameter data by default when duplicating a part" msgstr "Copiar dados de parâmetros por padrão quando duplicar uma peça" -#: common/models.py:1148 +#: common/models.py:1313 msgid "Copy Part Test Data" msgstr "Copiar Dados Teste da Peça" -#: common/models.py:1149 +#: common/models.py:1314 msgid "Copy test data by default when duplicating a part" msgstr "Copiar dados de teste por padrão quando duplicar a peça" -#: common/models.py:1155 +#: common/models.py:1320 msgid "Copy Category Parameter Templates" msgstr "Copiar Parâmetros dos Modelos de Categoria" -#: common/models.py:1156 +#: common/models.py:1321 msgid "Copy category parameter templates when creating a part" msgstr "Copiar parâmetros do modelo de categoria quando criar uma peça" -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Modelo" -#: common/models.py:1163 +#: common/models.py:1328 msgid "Parts are templates by default" msgstr "Peças são modelos por padrão" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Montagem" -#: common/models.py:1170 +#: common/models.py:1335 msgid "Parts can be assembled from other components by default" msgstr "Peças podem ser montadas a partir de outros componentes por padrão" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Componente" -#: common/models.py:1177 +#: common/models.py:1342 msgid "Parts can be used as sub-components by default" msgstr "Peças podem ser usadas como sub-componentes por padrão" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 +#: common/models.py:1348 part/admin.py:53 part/models.py:981 msgid "Purchaseable" msgstr "Comprável" -#: common/models.py:1184 +#: common/models.py:1349 msgid "Parts are purchaseable by default" msgstr "Peças são compráveis por padrão" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Vendível" -#: common/models.py:1191 +#: common/models.py:1356 msgid "Parts are salable by default" msgstr "Peças vão vendíveis por padrão" -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Rastreável" -#: common/models.py:1198 +#: common/models.py:1363 msgid "Parts are trackable by default" msgstr "Peças vão rastreáveis por padrão" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Virtual" -#: common/models.py:1205 +#: common/models.py:1370 msgid "Parts are virtual by default" msgstr "Peças são virtuais por padrão" -#: common/models.py:1211 +#: common/models.py:1376 msgid "Show Import in Views" msgstr "Mostrar Importações em Visualizações" -#: common/models.py:1212 +#: common/models.py:1377 msgid "Display the import wizard in some part views" msgstr "Exibir o assistente de importação em algumas visualizações de partes" -#: common/models.py:1218 +#: common/models.py:1383 msgid "Show related parts" msgstr "Mostra peças relacionadas" -#: common/models.py:1219 +#: common/models.py:1384 msgid "Display related parts for a part" msgstr "Mostrar peças relacionadas para uma peça" -#: common/models.py:1225 +#: common/models.py:1390 msgid "Initial Stock Data" msgstr "Dados Iniciais de Estoque" -#: common/models.py:1226 +#: common/models.py:1391 msgid "Allow creation of initial stock when adding a new part" msgstr "Permitir Criação de estoque inicial quando adicional uma nova peça" -#: common/models.py:1232 templates/js/translated/part.js:108 +#: common/models.py:1397 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Dados Iniciais de Fornecedor" -#: common/models.py:1233 +#: common/models.py:1398 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Permitir criação de dados iniciais de fornecedor quando adicionar uma nova peça" -#: common/models.py:1239 +#: common/models.py:1404 msgid "Part Name Display Format" msgstr "Formato de Exibição do Nome da Peça" -#: common/models.py:1240 +#: common/models.py:1405 msgid "Format to display the part name" msgstr "Formato para exibir o nome da peça" -#: common/models.py:1247 +#: common/models.py:1412 msgid "Part Category Default Icon" msgstr "Ícone de Categoria de Peça Padrão" -#: common/models.py:1248 +#: common/models.py:1413 msgid "Part category default icon (empty means no icon)" msgstr "Ícone padrão de categoria de peça (vazio significa sem ícone)" -#: common/models.py:1253 +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "Forçar Unidades de Parâmetro" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "Se as unidades são fornecidas, os valores do parâmetro devem corresponder às unidades especificadas" + +#: common/models.py:1425 msgid "Minimum Pricing Decimal Places" msgstr "Mínimo de Casas Decimais do Preço" -#: common/models.py:1254 +#: common/models.py:1426 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Mínimo número de casas decimais a exibir quando renderizar dados de preços" -#: common/models.py:1264 +#: common/models.py:1436 msgid "Maximum Pricing Decimal Places" msgstr "Máximo Casas Decimais de Preço" -#: common/models.py:1265 +#: common/models.py:1437 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Número máximo de casas decimais a exibir quando renderizar dados de preços" -#: common/models.py:1275 +#: common/models.py:1447 msgid "Use Supplier Pricing" msgstr "Usar Preços do Fornecedor" -#: common/models.py:1276 +#: common/models.py:1448 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Incluir quebras de preço do fornecedor nos cálculos de preços globais" -#: common/models.py:1282 +#: common/models.py:1454 msgid "Purchase History Override" msgstr "Sobrescrever histórico de compra" -#: common/models.py:1283 +#: common/models.py:1455 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Histórico do pedido de compra substitui os intervalos dos preços do fornecedor" -#: common/models.py:1289 +#: common/models.py:1461 msgid "Use Stock Item Pricing" msgstr "Usar Preços do Item em Estoque" -#: common/models.py:1290 +#: common/models.py:1462 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Usar preço inserido manualmente no estoque para cálculos de valores" -#: common/models.py:1296 +#: common/models.py:1468 msgid "Stock Item Pricing Age" msgstr "Idade do preço do Item em Estoque" -#: common/models.py:1297 +#: common/models.py:1469 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Não incluir itens em estoque mais velhos que este número de dias no cálculo de preços" -#: common/models.py:1307 +#: common/models.py:1479 msgid "Use Variant Pricing" msgstr "Usar Preço Variável" -#: common/models.py:1308 +#: common/models.py:1480 msgid "Include variant pricing in overall pricing calculations" msgstr "Incluir preços variáveis nos cálculos de valores gerais" -#: common/models.py:1314 +#: common/models.py:1486 msgid "Active Variants Only" msgstr "Apenas Ativar Variáveis" -#: common/models.py:1315 +#: common/models.py:1487 msgid "Only use active variant parts for calculating variant pricing" msgstr "Apenas usar peças variáveis ativas para calcular preço variáveis" -#: common/models.py:1321 +#: common/models.py:1493 msgid "Pricing Rebuild Interval" msgstr "Intervalo de Reconstrução de Preços" -#: common/models.py:1322 +#: common/models.py:1494 msgid "Number of days before part pricing is automatically updated" msgstr "Número de dias antes da atualização automática dos preços das peças" -#: common/models.py:1332 +#: common/models.py:1504 msgid "Internal Prices" msgstr "Preços Internos" -#: common/models.py:1333 +#: common/models.py:1505 msgid "Enable internal prices for parts" msgstr "Habilitar preços internos para peças" -#: common/models.py:1339 +#: common/models.py:1511 msgid "Internal Price Override" msgstr "Sobrepor Valor Interno" -#: common/models.py:1340 +#: common/models.py:1512 msgid "If available, internal prices override price range calculations" msgstr "Se disponível, preços internos sobrepõe variação de cálculos de preço" -#: common/models.py:1346 +#: common/models.py:1518 msgid "Enable label printing" msgstr "Ativar impressão de etiquetas" -#: common/models.py:1347 +#: common/models.py:1519 msgid "Enable label printing from the web interface" msgstr "Ativar impressão de etiqueta pela interface da internet" -#: common/models.py:1353 +#: common/models.py:1525 msgid "Label Image DPI" msgstr "DPI da Imagem na Etiqueta" -#: common/models.py:1354 +#: common/models.py:1526 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "Resolução de DPI quando gerar arquivo de imagens para fornecer à extensão de impressão de etiquetas" -#: common/models.py:1363 +#: common/models.py:1535 msgid "Enable Reports" msgstr "Habilitar Relatórios" -#: common/models.py:1364 +#: common/models.py:1536 msgid "Enable generation of reports" msgstr "Ativar geração de relatórios" -#: common/models.py:1370 templates/stats.html:25 +#: common/models.py:1542 templates/stats.html:25 msgid "Debug Mode" msgstr "Modo de depuração" -#: common/models.py:1371 +#: common/models.py:1543 msgid "Generate reports in debug mode (HTML output)" msgstr "Gerar relatórios em modo de depuração (saída HTML)" -#: common/models.py:1377 +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 msgid "Page Size" msgstr "Tamanho da página" -#: common/models.py:1378 +#: common/models.py:1550 msgid "Default page size for PDF reports" msgstr "Tamanho padrão da página PDF para relatórios" -#: common/models.py:1388 +#: common/models.py:1556 msgid "Enable Test Reports" msgstr "Ativar Relatórios Teste" -#: common/models.py:1389 +#: common/models.py:1557 msgid "Enable generation of test reports" msgstr "Ativar geração de relatórios de teste" -#: common/models.py:1395 +#: common/models.py:1563 msgid "Attach Test Reports" msgstr "Anexar Relatórios de Teste" -#: common/models.py:1396 +#: common/models.py:1564 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Quando imprimir um Relatório de Teste, anexar uma cópia do mesmo ao item de estoque associado" -#: common/models.py:1402 +#: common/models.py:1570 msgid "Globally Unique Serials" msgstr "Seriais Únicos Globais" -#: common/models.py:1403 +#: common/models.py:1571 msgid "Serial numbers for stock items must be globally unique" msgstr "Números de série para itens de estoque devem ser globalmente únicos" -#: common/models.py:1409 +#: common/models.py:1577 msgid "Autofill Serial Numbers" msgstr "Preenchimento automático de Números Seriais" -#: common/models.py:1410 +#: common/models.py:1578 msgid "Autofill serial numbers in forms" msgstr "Preencher números de série automaticamente no formulário" -#: common/models.py:1416 +#: common/models.py:1584 msgid "Delete Depleted Stock" msgstr "Excluir Estoque Esgotado" -#: common/models.py:1417 +#: common/models.py:1585 msgid "Determines default behaviour when a stock item is depleted" msgstr "Determina o comportamento padrão quando um item de estoque é esgotado" -#: common/models.py:1423 +#: common/models.py:1591 msgid "Batch Code Template" msgstr "Modelo de Código de Lote" -#: common/models.py:1424 +#: common/models.py:1592 msgid "Template for generating default batch codes for stock items" msgstr "Modelo para gerar códigos de lote padrão para itens de estoque" -#: common/models.py:1429 +#: common/models.py:1597 msgid "Stock Expiry" msgstr "Validade do Estoque" -#: common/models.py:1430 +#: common/models.py:1598 msgid "Enable stock expiry functionality" msgstr "Ativar função de validade de estoque" -#: common/models.py:1436 +#: common/models.py:1604 msgid "Sell Expired Stock" msgstr "Vender estoque expirado" -#: common/models.py:1437 +#: common/models.py:1605 msgid "Allow sale of expired stock" msgstr "Permitir venda de estoque expirado" -#: common/models.py:1443 +#: common/models.py:1611 msgid "Stock Stale Time" msgstr "Tempo de Estoque Inativo" -#: common/models.py:1444 +#: common/models.py:1612 msgid "Number of days stock items are considered stale before expiring" msgstr "Número de dias em que os itens em estoque são considerados obsoleto antes de vencer" -#: common/models.py:1451 +#: common/models.py:1619 msgid "Build Expired Stock" msgstr "Produzir Estoque Vencido" -#: common/models.py:1452 +#: common/models.py:1620 msgid "Allow building with expired stock" msgstr "Permitir produção com estoque vencido" -#: common/models.py:1458 +#: common/models.py:1626 msgid "Stock Ownership Control" msgstr "Controle de propriedade do estoque" -#: common/models.py:1459 +#: common/models.py:1627 msgid "Enable ownership control over stock locations and items" msgstr "Ativar controle de propriedade sobre locais e itens de estoque" -#: common/models.py:1465 +#: common/models.py:1633 msgid "Stock Location Default Icon" msgstr "Ícone padrão do local de estoque" -#: common/models.py:1466 +#: common/models.py:1634 msgid "Stock location default icon (empty means no icon)" msgstr "Ícone padrão de local de estoque (vazio significa sem ícone)" -#: common/models.py:1471 +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "Mostrar Itens de Estoque Instalados" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "Exibir itens de estoque instalados nas tabelas de estoque" + +#: common/models.py:1646 msgid "Build Order Reference Pattern" msgstr "Modelo de Referência de Pedidos de Produção" -#: common/models.py:1472 +#: common/models.py:1647 msgid "Required pattern for generating Build Order reference field" msgstr "Modelo necessário para gerar campo de referência do Pedido de Produção" -#: common/models.py:1478 +#: common/models.py:1653 msgid "Enable Return Orders" msgstr "Ativar Pedidos de Devolução" -#: common/models.py:1479 +#: common/models.py:1654 msgid "Enable return order functionality in the user interface" msgstr "Ativar funcionalidade de pedido de retorno na interface do usuário" -#: common/models.py:1485 +#: common/models.py:1660 msgid "Return Order Reference Pattern" msgstr "Modelo de Referência de Pedidos de Devolução" -#: common/models.py:1486 +#: common/models.py:1661 msgid "Required pattern for generating Return Order reference field" msgstr "Modelo necessário para gerar campo de referência do Pedido de Devolução" -#: common/models.py:1492 +#: common/models.py:1667 msgid "Edit Completed Return Orders" msgstr "Editar os Pedidos de Devolução Concluídos" -#: common/models.py:1493 +#: common/models.py:1668 msgid "Allow editing of return orders after they have been completed" msgstr "Permitir a edição de pedidos de devolução após serem enviados ou concluídos" -#: common/models.py:1499 +#: common/models.py:1674 msgid "Sales Order Reference Pattern" msgstr "Modelo de Referência de Pedidos de Venda" -#: common/models.py:1500 +#: common/models.py:1675 msgid "Required pattern for generating Sales Order reference field" msgstr "Modelo necessário para gerar campo de referência do Pedido de Venda" -#: common/models.py:1506 +#: common/models.py:1681 msgid "Sales Order Default Shipment" msgstr "Envio Padrão de Pedidos de Venda" -#: common/models.py:1507 +#: common/models.py:1682 msgid "Enable creation of default shipment with sales orders" msgstr "Habilitar criação de envio padrão com Pedidos de Vendas" -#: common/models.py:1513 +#: common/models.py:1688 msgid "Edit Completed Sales Orders" msgstr "Editar os Pedidos de Vendas concluídos" -#: common/models.py:1514 +#: common/models.py:1689 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Permitir a edição de pedidos de vendas após serem enviados ou concluídos" -#: common/models.py:1520 +#: common/models.py:1695 msgid "Purchase Order Reference Pattern" msgstr "Modelo de Referência de Pedidos de Compras" -#: common/models.py:1521 +#: common/models.py:1696 msgid "Required pattern for generating Purchase Order reference field" msgstr "Modelo necessário para gerar campo de referência do Pedido de Compra" -#: common/models.py:1527 +#: common/models.py:1702 msgid "Edit Completed Purchase Orders" msgstr "Editar Pedidos de Compra Concluídos" -#: common/models.py:1528 +#: common/models.py:1703 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Permitir a edição de pedidos de compras após serem enviados ou concluídos" -#: common/models.py:1535 +#: common/models.py:1710 msgid "Enable password forgot" msgstr "Habitar esquecer senha" -#: common/models.py:1536 +#: common/models.py:1711 msgid "Enable password forgot function on the login pages" msgstr "Habilitar a função \"Esqueci minha senha\" nas páginas de acesso" -#: common/models.py:1542 +#: common/models.py:1717 msgid "Enable registration" msgstr "Habilitar cadastro" -#: common/models.py:1543 +#: common/models.py:1718 msgid "Enable self-registration for users on the login pages" msgstr "Ativar auto-registro para usuários na página de entrada" -#: common/models.py:1549 +#: common/models.py:1724 msgid "Enable SSO" msgstr "Ativar SSO" -#: common/models.py:1550 +#: common/models.py:1725 msgid "Enable SSO on the login pages" msgstr "Ativar SSO na página de acesso" -#: common/models.py:1556 +#: common/models.py:1731 msgid "Enable SSO registration" msgstr "Ativar registro SSO" -#: common/models.py:1557 +#: common/models.py:1732 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Ativar auto-registro por SSO para usuários na página de entrada" -#: common/models.py:1563 +#: common/models.py:1738 msgid "Email required" msgstr "Email obrigatório" -#: common/models.py:1564 +#: common/models.py:1739 msgid "Require user to supply mail on signup" msgstr "Exigir do usuário o e-mail no cadastro" -#: common/models.py:1570 +#: common/models.py:1745 msgid "Auto-fill SSO users" msgstr "Auto-preencher usuários SSO" -#: common/models.py:1571 +#: common/models.py:1746 msgid "Automatically fill out user-details from SSO account-data" msgstr "Preencher automaticamente os detalhes do usuário a partir de dados da conta SSO" -#: common/models.py:1577 +#: common/models.py:1752 msgid "Mail twice" msgstr "Enviar email duplo" -#: common/models.py:1578 +#: common/models.py:1753 msgid "On signup ask users twice for their mail" msgstr "No registro pedir aos usuários duas vezes pelo email" -#: common/models.py:1584 +#: common/models.py:1759 msgid "Password twice" msgstr "Senha duas vezes" -#: common/models.py:1585 +#: common/models.py:1760 msgid "On signup ask users twice for their password" msgstr "No registro pedir aos usuários duas vezes pela senha" -#: common/models.py:1591 +#: common/models.py:1766 msgid "Allowed domains" msgstr "Domínios permitidos" -#: common/models.py:1592 +#: common/models.py:1767 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Restringir registros a certos domínios (separados por vírgula, começando com @)" -#: common/models.py:1598 +#: common/models.py:1773 msgid "Group on signup" msgstr "Grupo no cadastro" -#: common/models.py:1599 +#: common/models.py:1774 msgid "Group to which new users are assigned on registration" msgstr "Grupo ao qual novos usuários são atribuídos no registro" -#: common/models.py:1605 +#: common/models.py:1780 msgid "Enforce MFA" msgstr "Forçar AMF" -#: common/models.py:1606 +#: common/models.py:1781 msgid "Users must use multifactor security." msgstr "Os usuários devem usar uma segurança multifator." -#: common/models.py:1612 +#: common/models.py:1787 msgid "Check plugins on startup" msgstr "Checar extensões no início" -#: common/models.py:1613 +#: common/models.py:1788 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Checar que todas as extensões instaladas no início — ativar em ambientes de contêineres" -#: common/models.py:1620 -msgid "Check plugin signatures" -msgstr "Checar assinaturas de extensões" - -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "Checar e mostrar assinaturas das extensões" - -#: common/models.py:1628 +#: common/models.py:1796 msgid "Enable URL integration" msgstr "Ativar integração URL" -#: common/models.py:1629 +#: common/models.py:1797 msgid "Enable plugins to add URL routes" msgstr "Ativar extensão para adicionar rotas URL" -#: common/models.py:1636 +#: common/models.py:1804 msgid "Enable navigation integration" msgstr "Ativar integração de navegação" -#: common/models.py:1637 +#: common/models.py:1805 msgid "Enable plugins to integrate into navigation" msgstr "Ativar extensões para integrar à navegação" -#: common/models.py:1644 +#: common/models.py:1812 msgid "Enable app integration" msgstr "Ativa integração com aplicativo" -#: common/models.py:1645 +#: common/models.py:1813 msgid "Enable plugins to add apps" msgstr "Ativar extensões para adicionar aplicativos" -#: common/models.py:1652 +#: common/models.py:1820 msgid "Enable schedule integration" msgstr "Ativar integração do calendário" -#: common/models.py:1653 +#: common/models.py:1821 msgid "Enable plugins to run scheduled tasks" msgstr "Ativar extensões para executar tarefas agendadas" -#: common/models.py:1660 +#: common/models.py:1828 msgid "Enable event integration" msgstr "Ativar integração de eventos" -#: common/models.py:1661 +#: common/models.py:1829 msgid "Enable plugins to respond to internal events" msgstr "Ativar extensões para responder a eventos internos" -#: common/models.py:1668 +#: common/models.py:1836 msgid "Enable project codes" msgstr "Habilitar códigos de projeto" -#: common/models.py:1669 +#: common/models.py:1837 msgid "Enable project codes for tracking projects" msgstr "Ativar códigos de projeto para rastrear projetos" -#: common/models.py:1675 +#: common/models.py:1843 msgid "Stocktake Functionality" msgstr "Funcionalidade de Balanço do Inventário" -#: common/models.py:1676 +#: common/models.py:1844 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Ativar funcionalidade de balanço para gravar níveis de estoque e calcular seu valor" -#: common/models.py:1682 +#: common/models.py:1850 +msgid "Exclude External Locations" +msgstr "Excluir Locais Externos" + +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "Excluir itens de estoque em locais externos dos cálculos do estoque" + +#: common/models.py:1857 msgid "Automatic Stocktake Period" msgstr "Período de Balanço Automático" -#: common/models.py:1683 +#: common/models.py:1858 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Número de dias entre gravação do balanço de estoque (coloque zero para desativar)" -#: common/models.py:1692 +#: common/models.py:1867 msgid "Report Deletion Interval" msgstr "Intervalo para Excluir o Relatório" -#: common/models.py:1693 +#: common/models.py:1868 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Relatórios de balanço serão apagados após um número de dias especificado" -#: common/models.py:1710 common/models.py:2147 +#: common/models.py:1885 common/models.py:2314 msgid "Settings key (must be unique - case insensitive" msgstr "Senha de configurações (deve ser única — diferencia maiúsculas de minúsculas" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" -msgstr "Nenhuma impressora (Exportar para PDF)" - -#: common/models.py:1751 +#: common/models.py:1925 msgid "Hide inactive parts" msgstr "Ocultar peças inativas" -#: common/models.py:1752 +#: common/models.py:1926 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Ocultar peças inativas nos resultados exibidos na página inicial" -#: common/models.py:1758 +#: common/models.py:1932 msgid "Show subscribed parts" msgstr "Mostrar peças subscritas" -#: common/models.py:1759 +#: common/models.py:1933 msgid "Show subscribed parts on the homepage" msgstr "Mostrar peças subscritas na tela inicial" -#: common/models.py:1765 +#: common/models.py:1939 msgid "Show subscribed categories" msgstr "Mostrar categorias subscritas" -#: common/models.py:1766 +#: common/models.py:1940 msgid "Show subscribed part categories on the homepage" msgstr "Mostrar categorias de peças subscritas na tela inicial" -#: common/models.py:1772 +#: common/models.py:1946 msgid "Show latest parts" msgstr "Mostrar peças mais recentes" -#: common/models.py:1773 +#: common/models.py:1947 msgid "Show latest parts on the homepage" msgstr "Mostrar as peças mais recentes na página inicial" -#: common/models.py:1779 -msgid "Recent Part Count" -msgstr "Contagem de peças recentes" - -#: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "Número de peças recentes para mostrar no índice" - -#: common/models.py:1786 +#: common/models.py:1953 msgid "Show unvalidated BOMs" msgstr "Mostrar LDMs não validadas" -#: common/models.py:1787 +#: common/models.py:1954 msgid "Show BOMs that await validation on the homepage" msgstr "Mostrar LDMs que aguardam validação na página inicial" -#: common/models.py:1793 +#: common/models.py:1960 msgid "Show recent stock changes" msgstr "Mostrar alterações recentes de estoque" -#: common/models.py:1794 +#: common/models.py:1961 msgid "Show recently changed stock items on the homepage" msgstr "Mostrar itens de estoque alterados recentemente na página inicial" -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "Contagem de Estoque Recente" - -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "Número recentes itens do estoque para mostrar no índice" - -#: common/models.py:1807 +#: common/models.py:1967 msgid "Show low stock" -msgstr "Mostrar baixo estoque" +msgstr "Mostrar estoque baixo" -#: common/models.py:1808 +#: common/models.py:1968 msgid "Show low stock items on the homepage" msgstr "Mostrar itens de baixo estoque na página inicial" -#: common/models.py:1814 +#: common/models.py:1974 msgid "Show depleted stock" msgstr "Mostrar estoque esgotado" -#: common/models.py:1815 +#: common/models.py:1975 msgid "Show depleted stock items on the homepage" msgstr "Mostrar itens sem estoque na página inicial" -#: common/models.py:1821 +#: common/models.py:1981 msgid "Show needed stock" msgstr "Mostrar estoque necessário" -#: common/models.py:1822 +#: common/models.py:1982 msgid "Show stock items needed for builds on the homepage" msgstr "Mostrar itens de estoque necessários para produções na tela inicial" -#: common/models.py:1828 +#: common/models.py:1988 msgid "Show expired stock" msgstr "Mostrar estoque expirado" -#: common/models.py:1829 +#: common/models.py:1989 msgid "Show expired stock items on the homepage" msgstr "Mostrar expirados itens em estoque na tela inicial" -#: common/models.py:1835 +#: common/models.py:1995 msgid "Show stale stock" msgstr "Mostrar estoque inativo" -#: common/models.py:1836 +#: common/models.py:1996 msgid "Show stale stock items on the homepage" msgstr "Mostrar estoque inativo na tela inicial" -#: common/models.py:1842 +#: common/models.py:2002 msgid "Show pending builds" msgstr "Mostrar produções pendentes" -#: common/models.py:1843 +#: common/models.py:2003 msgid "Show pending builds on the homepage" msgstr "Mostrar produções pendentes na tela inicial" -#: common/models.py:1849 +#: common/models.py:2009 msgid "Show overdue builds" msgstr "Mostrar produções atrasadas" -#: common/models.py:1850 +#: common/models.py:2010 msgid "Show overdue builds on the homepage" msgstr "Mostrar produções atrasadas na tela inicial" -#: common/models.py:1856 +#: common/models.py:2016 msgid "Show outstanding POs" msgstr "Mostrar pedidos de compra pendentes" -#: common/models.py:1857 +#: common/models.py:2017 msgid "Show outstanding POs on the homepage" msgstr "Mostrar os Pedidos de Compras pendentes na página inicial" -#: common/models.py:1863 +#: common/models.py:2023 msgid "Show overdue POs" msgstr "Mostrar Pedidos de Compra atrasados" -#: common/models.py:1864 +#: common/models.py:2024 msgid "Show overdue POs on the homepage" msgstr "Mostrar os Pedidos de Compras atrasadas na tela inicial" -#: common/models.py:1870 +#: common/models.py:2030 msgid "Show outstanding SOs" msgstr "Mostrar pedidos de vendas pendentes" -#: common/models.py:1871 +#: common/models.py:2031 msgid "Show outstanding SOs on the homepage" msgstr "Mostrar os Pedidos de Vendas pendentes na página inicial" -#: common/models.py:1877 +#: common/models.py:2037 msgid "Show overdue SOs" msgstr "Mostrar Pedidos de Venda atrasados" -#: common/models.py:1878 +#: common/models.py:2038 msgid "Show overdue SOs on the homepage" msgstr "Mostrar os Pedidos de Vendas atrasadas na tela inicial" -#: common/models.py:1884 +#: common/models.py:2044 msgid "Show pending SO shipments" msgstr "Mostrar remessas de OV pendentes" -#: common/models.py:1885 +#: common/models.py:2045 msgid "Show pending SO shipments on the homepage" msgstr "Mostrar envios OV pendentes na tela inicial" -#: common/models.py:1891 +#: common/models.py:2051 msgid "Show News" msgstr "Mostrar notícias" -#: common/models.py:1892 +#: common/models.py:2052 msgid "Show news on the homepage" msgstr "Mostrar notícias na tela inicial" -#: common/models.py:1898 +#: common/models.py:2058 msgid "Inline label display" msgstr "Mostrar etiqueta em linha" -#: common/models.py:1899 +#: common/models.py:2059 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Mostrar etiquetas em PDF no navegador, ao invés de baixar o arquivo" -#: common/models.py:1905 +#: common/models.py:2065 msgid "Default label printer" msgstr "Impressora de etiquetas padrão" -#: common/models.py:1906 +#: common/models.py:2066 msgid "Configure which label printer should be selected by default" msgstr "Configurar qual impressora de etiqueta deve ser selecionada por padrão" -#: common/models.py:1912 +#: common/models.py:2072 msgid "Inline report display" msgstr "Mostrar relatório em linha" -#: common/models.py:1913 +#: common/models.py:2073 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Mostrar relatórios em PDF no navegador, ao invés de baixar o arquivo" -#: common/models.py:1919 +#: common/models.py:2079 msgid "Search Parts" msgstr "Procurar Peças" -#: common/models.py:1920 +#: common/models.py:2080 msgid "Display parts in search preview window" msgstr "Mostrar peças na janela de visualização de pesquisa" -#: common/models.py:1926 +#: common/models.py:2086 msgid "Search Supplier Parts" msgstr "Buscar Peças do Fornecedor" -#: common/models.py:1927 +#: common/models.py:2087 msgid "Display supplier parts in search preview window" msgstr "Mostrar fornecedor de peças na janela de visualização de pesquisa" -#: common/models.py:1933 +#: common/models.py:2093 msgid "Search Manufacturer Parts" msgstr "Buscar peças do fabricante" -#: common/models.py:1934 +#: common/models.py:2094 msgid "Display manufacturer parts in search preview window" msgstr "Mostrar fabricante de peças na janela de visualização de pesquisa" -#: common/models.py:1940 +#: common/models.py:2100 msgid "Hide Inactive Parts" msgstr "Ocultar peças inativas" -#: common/models.py:1941 +#: common/models.py:2101 msgid "Excluded inactive parts from search preview window" msgstr "Não incluir peças inativas na janela de visualização de pesquisa" -#: common/models.py:1947 +#: common/models.py:2107 msgid "Search Categories" msgstr "Pesquisar Categorias" -#: common/models.py:1948 +#: common/models.py:2108 msgid "Display part categories in search preview window" msgstr "Mostrar categoria das peças na janela de visualização de pesquisa" -#: common/models.py:1954 +#: common/models.py:2114 msgid "Search Stock" msgstr "Pesquisar Estoque" -#: common/models.py:1955 +#: common/models.py:2115 msgid "Display stock items in search preview window" msgstr "Mostrar itens do estoque na janela de visualização de pesquisa" -#: common/models.py:1961 +#: common/models.py:2121 msgid "Hide Unavailable Stock Items" msgstr "Ocultar itens do estoque indisponíveis" -#: common/models.py:1962 +#: common/models.py:2122 msgid "Exclude stock items which are not available from the search preview window" msgstr "Não incluir itens de estoque que não estão disponíveis na janela de visualização de pesquisa" -#: common/models.py:1968 +#: common/models.py:2128 msgid "Search Locations" msgstr "Procurar Locais" -#: common/models.py:1969 +#: common/models.py:2129 msgid "Display stock locations in search preview window" msgstr "Mostrar locais de estoque na janela de visualização de pesquisa" -#: common/models.py:1975 +#: common/models.py:2135 msgid "Search Companies" msgstr "Pesquisar empresas" -#: common/models.py:1976 +#: common/models.py:2136 msgid "Display companies in search preview window" msgstr "Mostrar empresas na janela de visualização de pesquisa" -#: common/models.py:1982 +#: common/models.py:2142 msgid "Search Build Orders" msgstr "Procurar Pedidos de Produção" -#: common/models.py:1983 +#: common/models.py:2143 msgid "Display build orders in search preview window" msgstr "Mostrar pedidos de produção na janela de visualização de pesquisa" -#: common/models.py:1989 +#: common/models.py:2149 msgid "Search Purchase Orders" msgstr "Mostrar Pedido de Compras" -#: common/models.py:1990 +#: common/models.py:2150 msgid "Display purchase orders in search preview window" msgstr "Mostrar pedidos de compra na janela de visualização de pesquisa" -#: common/models.py:1996 +#: common/models.py:2156 msgid "Exclude Inactive Purchase Orders" msgstr "Não incluir Pedidos de Compras Inativos" -#: common/models.py:1997 +#: common/models.py:2157 msgid "Exclude inactive purchase orders from search preview window" msgstr "Não incluir pedidos de compras inativos na janela de visualização de pesquisa" -#: common/models.py:2003 +#: common/models.py:2163 msgid "Search Sales Orders" msgstr "Procurar Pedidos de Vendas" -#: common/models.py:2004 +#: common/models.py:2164 msgid "Display sales orders in search preview window" msgstr "Mostrar pedidos de vendas na janela de visualização de pesquisa" -#: common/models.py:2010 +#: common/models.py:2170 msgid "Exclude Inactive Sales Orders" msgstr "Não Incluir Pedidos de Compras Inativas" -#: common/models.py:2011 +#: common/models.py:2171 msgid "Exclude inactive sales orders from search preview window" msgstr "Não incluir pedidos de vendas inativos na janela de visualização de pesquisa" -#: common/models.py:2017 +#: common/models.py:2177 msgid "Search Return Orders" msgstr "Procurar Pedidos de Devolução" -#: common/models.py:2018 +#: common/models.py:2178 msgid "Display return orders in search preview window" msgstr "Mostrar pedidos de devolução na janela de visualização de pesquisa" -#: common/models.py:2024 +#: common/models.py:2184 msgid "Exclude Inactive Return Orders" msgstr "Não Incluir Pedidos de Devolução Inativas" -#: common/models.py:2025 +#: common/models.py:2185 msgid "Exclude inactive return orders from search preview window" msgstr "Não incluir pedidos de devolução inativos na janela de visualização de pesquisa" -#: common/models.py:2031 +#: common/models.py:2191 msgid "Search Preview Results" msgstr "Mostrar Resultados Anteriores" -#: common/models.py:2032 +#: common/models.py:2192 msgid "Number of results to show in each section of the search preview window" msgstr "Número de resultados mostrados em cada seção da janela de visualização de pesquisa" -#: common/models.py:2038 +#: common/models.py:2198 msgid "Regex Search" msgstr "Pesquisa de Regex" -#: common/models.py:2039 +#: common/models.py:2199 msgid "Enable regular expressions in search queries" msgstr "Permitir expressôes comuns nas conultas de pesquisas" -#: common/models.py:2045 +#: common/models.py:2205 msgid "Whole Word Search" msgstr "Busca de Palavras Inteira" -#: common/models.py:2046 +#: common/models.py:2206 msgid "Search queries return results for whole word matches" msgstr "Pesquisa retorna que palavra inteira coincide" -#: common/models.py:2052 +#: common/models.py:2212 msgid "Show Quantity in Forms" msgstr "Mostrar Quantidade nos Formulários" -#: common/models.py:2053 +#: common/models.py:2213 msgid "Display available part quantity in some forms" msgstr "Mostrar a quantidade de peças disponíveis em alguns formulários" -#: common/models.py:2059 +#: common/models.py:2219 msgid "Escape Key Closes Forms" msgstr "Tecla Esc Fecha Formulários" -#: common/models.py:2060 +#: common/models.py:2220 msgid "Use the escape key to close modal forms" msgstr "Usar a tecla Esc para fechar fomulários modais" -#: common/models.py:2066 +#: common/models.py:2226 msgid "Fixed Navbar" msgstr "Fixar Navbar" -#: common/models.py:2067 +#: common/models.py:2227 msgid "The navbar position is fixed to the top of the screen" msgstr "A posição do Navbar é fixa no topo da tela" -#: common/models.py:2073 +#: common/models.py:2233 msgid "Date Format" msgstr "Formato da data" -#: common/models.py:2074 +#: common/models.py:2234 msgid "Preferred format for displaying dates" msgstr "Formato preferido para mostrar datas" -#: common/models.py:2088 part/templates/part/detail.html:41 +#: common/models.py:2248 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Agendamento de peças" -#: common/models.py:2089 +#: common/models.py:2249 msgid "Display part scheduling information" msgstr "Mostrar informações de agendamento de peças" -#: common/models.py:2095 part/templates/part/detail.html:62 +#: common/models.py:2255 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Balanço de Peça" -#: common/models.py:2096 +#: common/models.py:2256 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Mostrar informação de balanço da peça (se a funcionalidade de balanço estiver habilitada)" -#: common/models.py:2102 +#: common/models.py:2262 msgid "Table String Length" msgstr "Comprimento da Tabela de Frases" -#: common/models.py:2103 +#: common/models.py:2263 msgid "Maximimum length limit for strings displayed in table views" msgstr "Limite máximo de comprimento para frases exibidas nas visualizações de tabela" -#: common/models.py:2112 +#: common/models.py:2272 msgid "Default part label template" -msgstr "" +msgstr "Modelo de rótulo padrão da peça" -#: common/models.py:2113 +#: common/models.py:2273 msgid "The part label template to be automatically selected" -msgstr "" +msgstr "O modelo de rótulo da peça a ser selecionado automaticamente" -#: common/models.py:2121 +#: common/models.py:2281 msgid "Default stock item template" -msgstr "" +msgstr "Modelo padrão de item de estoque" -#: common/models.py:2122 +#: common/models.py:2282 msgid "The stock item label template to be automatically selected" -msgstr "" +msgstr "O modelo de rótulo do item a ser selecionado automaticamente" -#: common/models.py:2130 +#: common/models.py:2290 msgid "Default stock location label template" -msgstr "" +msgstr "Modelo de rótulo de localização do estoque padrão" -#: common/models.py:2131 +#: common/models.py:2291 msgid "The stock location label template to be automatically selected" -msgstr "" +msgstr "O modelo de rótulo do local de estoque a ser selecionado automaticamente" -#: common/models.py:2177 +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "Receber relatório de erros" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "Receber notificações para erros do sistema" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "Quantidade de Parcelamentos" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Preço" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "Preço unitário na quantidade especificada" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "Ponto final" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "Ponto final em qual o gancho web foi recebido" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "Nome para este webhook" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "Ativo" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "Este gancho web está ativo" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "Token" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "Token de acesso" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "Segredo" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "Segredo compartilhado para HMAC" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "ID da Mensagem" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "Identificador exclusivo desta mensagem" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "Servidor" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "Servidor do qual esta mensagem foi recebida" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "Cabeçalho" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "Cabeçalho da mensagem" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "Corpo" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "Corpo da mensagem" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "Ponto do qual esta mensagem foi recebida" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "Trabalhado em" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "O trabalho desta mensagem foi concluído?" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "Id" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "Título" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "Publicado" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "Autor" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "Resumo" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "Lida" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "Esta notícia do item foi lida?" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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 "Imagem" -#: common/models.py:2737 +#: common/models.py:2902 msgid "Image file" msgstr "Arquivo de imagem" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "Nome da unidade deve ser um identificador válido" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "Nome da unidade" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "Símbolo" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "Símbolo de unidade opcional" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "Definição" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "Definição de unidade" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "Novo {verbose_name}" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "Um novo pedido foi criado e atribuído a você" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "Itens Recebidos" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "Os itens de um pedido de compra foram recebidos" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "Os itens de um pedido de devolução foram recebidos" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "Erro criado pela extensão" @@ -3468,7 +3570,7 @@ msgstr "Coincidir campos" #: common/views.py:87 msgid "Match Items" -msgstr "Coincindir Itens" +msgstr "Coincidir Itens" #: common/views.py:420 msgid "Fields matching failed" @@ -3478,7 +3580,7 @@ msgstr "Os campos não correspondem" msgid "Parts imported" msgstr "Peças importadas" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "Descrição da empresa" msgid "Description of the company" msgstr "Descrição da empresa" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "Página Web" @@ -3507,331 +3609,395 @@ msgstr "Página Web" msgid "Company website URL" msgstr "URL do Site da empresa" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Endereço" - -#: company/models.py:119 -msgid "Company address" -msgstr "Endereço da empresa" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Número de telefone" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "Número de telefone do contato" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "Email" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "Endereço de e-mail do contato" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Contato" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "Ponto de contato" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "Link para informações externas da empresa" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "é cliente" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "Você vende itens para esta empresa?" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "é fornecedor" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "Você compra itens desta empresa?" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "é fabricante" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "Esta empresa fabrica peças?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "Moeda padrão utilizada para esta empresa" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Empresa" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "Selecione a Empresa" + +#: company/models.py:337 +msgid "Address title" +msgstr "Título do endereço" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "Título descrevendo a entrada de endereço" + +#: company/models.py:342 +msgid "Primary address" +msgstr "Endereço Principal" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "Definir como endereço principal" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "Linha 1" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "Linha de endereço 1" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "Linha 2" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "Linha de endereço 2" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "Código Postal" + +#: company/models.py:361 +msgid "City/Region" +msgstr "Cidade/Região" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "Código Postal Cidade / Região" + +#: company/models.py:366 +msgid "State/Province" +msgstr "Estado/Provincia" + +#: company/models.py:367 +msgid "State or province" +msgstr "Estado ou Província" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "País" + +#: company/models.py:372 +msgid "Address country" +msgstr "País do endereço" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "Notas de envio da transportadora" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "Notas para o envio da transportadora" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "Notas de envio interno" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "Notas de envio para uso interno" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "Link para as informações do endereço (externo)" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Peça base" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "Selecionar peça" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Fabricante" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Selecionar fabricante" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "NPF" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "Número de Peça do Fabricante" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "URL do link externo da peça do fabricante" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "Descrição da peça do fabricante" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Peça do Fabricante" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "Nome do parâmetro" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Valor" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "Valor do Parâmetro" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "Unidades" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "Unidades do parâmetro" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" -msgstr "" +msgstr "Unidades de pacote devem ser compatíveis com as unidades de peça base" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" -msgstr "" +msgstr "Unidades de pacote deve ser maior do que zero" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "Parte do fabricante vinculado deve fazer referência à mesma peça base" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Fornecedor" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "Selecione o fornecedor" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "Código (SKU)" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "Unidade de reserva de estoque fornecedor" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "Selecionar peça do fabricante" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "URL do link externo da peça do fabricante" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "Descrição da peça fornecedor" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "Anotação" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "preço base" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "Taxa mínima (ex.: taxa de estoque)" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Embalagem" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "Embalagem de peças" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "Quantidade de embalagens" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." -msgstr "" +msgstr "Quantidade total fornecida em um único pacote. Deixe em branco para itens únicos." -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "múltiplo" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "Pedir múltiplos" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "Disponível" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "Quantidade disponível do fornecedor" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "Disponibilidade Atualizada" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "Data da última atualização da disponibilidade dos dados" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "Moeda padrão utilizada para este fornecedor" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "Criar Pedido de compra" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "Ações da empresa" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "Editar Informações da Empresa" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "Editar Empresa" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "Excluir a empresa" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "Excluir Empresa" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "Excluir Empresa" msgid "Part image" msgstr "Imagem da peça" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Carregar nova imagem" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Baixar imagem do URL" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "Excluir imagem" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Cliente" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "Usar moeda padrão" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Endereço" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "Telefone" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "Remover imagem" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "Remover imagem associada a esta empresa" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "Remover" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "Enviar imagem" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "Baixar Imagem" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "Peças do Fornecedor" @@ -3916,156 +4089,144 @@ msgstr "Criar nova peça do fornecedor" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "Nova peça do fornecedor" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "Pedir peças" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "Excluir peças" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "Excluir Peças" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "Fabricantes de peças" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "Criar novo fabricante de peça" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "Nova peça do fabricante" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "Estoque do Fornecedor" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "Pedidos de compra" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "Criar novo pedido de compra" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "Novo Pedido de Compra" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "Pedidos de vendas" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "Criar novo pedido de venda" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "Novo Pedido de Venda" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "Estoque Atribuído" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "Pedidos de Devolução" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "Criar novo pedido de devolução" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "Novo Pedido de Devolução" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "Notas da Empresa" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "Contato da Empresa" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "Adicionar Contato" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "Lista de fornecedores" +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "Endereços da empresa" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "Adicionar endereço" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "Fabricantes" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "Pedir peça" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "Editar peça do fabricante" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "Excluir peça do fabricante" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "Peça Interna" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "Nenhuma informação do fabricante disponível" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "Fornecedores" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "Excluir peças do fornecedor" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "Excluir" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Parâmetros" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "Novo parâmetro" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "Excluir parâmetros" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "Adicionar parâmetro" @@ -4137,106 +4280,111 @@ msgstr "Itens de Estoque atribuídos" msgid "Contacts" msgstr "Contatos" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "Endereços" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "Fornecedor da Peça" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "Ações de peças do fornecedor" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "Pedir Peça" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "Atualizar disponibilidade" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "Editar Fornecedor da Peça" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "Duplicar Peça do Fornecedor" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "Excluir Fornecedor da Peça" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "Excluir Fornecedor da Peça" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "Nenhuma informação do fornecedor está disponível" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "Estoque de Peça do Fornecedor" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "Criar novo item de estoque" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Novo item de estoque" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "Pedidos de peças do fornecedor" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "Informações de Preço" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "Adicionar parcela de preço" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "QR Code da Peça do Fornecedor" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "Vincular Código de Barras à Parte do Fornecedor" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "Atualizar disponibilidade de peças" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "Itens de Estoque" @@ -4244,103 +4392,96 @@ msgstr "Itens de Estoque" msgid "Supplier Part Pricing" msgstr "Preço do Fornecedor Peça" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "Novo Fornecedor" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "Novo Fabricante" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "Clientes" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "Novo Cliente" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "Empresas" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "Nova Empresa" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "Nome da etiqueta" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "Descrição da etiqueta" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "Etiqueta" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "Arquivo de modelo de etiqueta" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "Habilitado" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "Modelo de Etiqueta Habilitado" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "Largura [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "Largura da etiqueta, em mm" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "Altura [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "Altura da Etiqueta, em mm" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "Padrão de Nome de Arquivo" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "Padrão para gerar nomes do arquivo das etiquetas" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," -msgstr "Filtros de consulta (lista de valores separados por vírgula)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "Filtros de consulta (lista de valores separados por vírgula)" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "Filtros" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "Filtros de consulta (lista de valores separados por vírgula" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "Filtros de consulta de peça (lista de valores separados por vírgula)" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" -msgstr "Código QC" +msgid "QR Code" +msgstr "Código QR" #: label/templates/label/part/part_label_code128.html:31 #: label/templates/label/stocklocation/qr_and_text.html:31 @@ -4348,170 +4489,174 @@ msgstr "Código QC" msgid "QR code" msgstr "Código QR" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "Preço Total" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "Nenhum pedido de compra correspondente encontrado" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "Pedido de Compra" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "Devolver pedido" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "Desconhecido" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "Preço total deste pedido" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "Moeda do pedido" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "Moeda para este pedido (deixe em branco para usar o padrão da empresa)" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "O contato não corresponde à empresa selecionada" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "Descrição do pedido (opcional)" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "Selecione o código do projeto para este pedido" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "Link para página externa" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." -msgstr "Data esperada para entrega do pedido. A ordem estará atrasada após esta data." +msgstr "Data esperada para entrega do pedido. O Pedido estará atrasado após esta data." -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "Criado por" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "Usuário ou grupo responsável para este pedido" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "Ponto de contato para este pedido" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "Endereço da empresa para este pedido" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "Referência do pedido" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "Situação do pedido de compra" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "Empresa da qual os itens estão sendo encomendados" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "Referencia do fornecedor" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "Código de referência do pedido fornecedor" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "recebido por" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "Data de emissão" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "Dia que o pedido foi feito" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "Dia que o pedido foi concluído" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "Fornecedor de peça deve corresponder a fornecedor da OC" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "Quantidade deve ser um número positivo" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "Empresa para qual os itens foi vendidos" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "Referência do Cliente " -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "Código de Referência do pedido do cliente" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "Data de Envio" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "enviado por" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "O pedido não pode ser concluído, pois nenhuma parte foi atribuída" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "Apenas um pedido aberto pode ser marcado como completo" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "Pedido não pode ser concluído, pois, há envios incompletos" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "Pedido não pode ser concluído, pois, há itens na linha incompletos" @@ -4519,398 +4664,398 @@ msgstr "Pedido não pode ser concluído, pois, há itens na linha incompletos" msgid "Item quantity" msgstr "Quantidade do item" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "Referência do Item em Linha" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "Observações do Item de Linha" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" -msgstr "Data alvo para este item de linha (deixe em branco para usar a data alvo a partir da ordem)" +msgstr "Data alvo para este item de linha (deixe em branco para usar a data alvo do pedido)" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" -msgstr "" +msgstr "Descrição item de linha (opcional)" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "Contexto" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "Contexto adicional para esta linha" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "Preço Unitário" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "A peça do fornecedor deve corresponder ao fornecedor" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "excluído" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "Pedido" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "Fornecedor da Peça" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "Recebido" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "Número de itens recebidos" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Preço de Compra" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "Preço unitário de compra" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "Onde o Comprador quer que este item seja armazenado?" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "Peça virtual não pode ser atribuída a um pedido de venda" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "Apenas peças vendáveis podem ser atribuídas a um pedido de venda" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Preço de Venda" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "Preço de venda unitário" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "Quantidade enviada" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "Data do envio" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" -msgstr "" +msgstr "Data de Entrega" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" -msgstr "" +msgstr "Data da entrega do envio" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "Verificado por" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "Usuário que verificou esta remessa" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "Remessa" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "Número do Envio" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "Número de Rastreamento" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "Informação de rastreamento da remessa" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "Número da Fatura" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "Número de referência para fatura associada" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "O pedido já foi enviado" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "Remessa não foi alocada nos itens de estoque" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "O item do estoque não foi atribuído" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "Não é possível alocar o item de estoque para uma linha de uma peça diferente" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "Não é possível alocar uma linha sem uma peça" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "A quantidade de alocação não pode exceder a quantidade em estoque" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "Quantidade deve ser 1 para item de estoque serializado" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "Pedidos de venda não coincidem com a remessa" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "Remessa não coincide com pedido de venda" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "Linha" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "Referência de remessa do pedido de venda" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "Item" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "Selecione o item de estoque para alocar" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "Insira a quantidade de atribuição de estoque" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "Referência de Pedidos de Devolução" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "Empresa da qual os itens estão sendo retornados" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "Estado do pedido de retorno" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "Somente itens da série podem ser devolvidos" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "Selecione o item a ser devolvido pelo cliente" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "Data de Recebimento" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "Data que o pedido a ser devolvido foi recebido" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "Despesa/gastos" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "Gastos com esta linha de itens" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "Gastos para reparar e/ou devolver esta linha de itens" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "Pedido não pode ser cancelado" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "Permitir que o pedido seja fechado com itens de linha incompletos" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "O pedido tem itens da linha incompletos" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "O pedido não está aberto" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "Moeda de preço de compra" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "A peça do fornecedor deve ser especificada" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "O pedido de compra deve ser especificado" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "O fornecedor deve corresponder o pedido de compra" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "Pedido de compra deve corresponder ao fornecedor" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "Itens de linha" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "O item de linha não corresponde ao pedido de compra" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "Selecione o local de destino para os itens recebidos" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "Digite o código do lote para itens de estoque recebidos" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "Digite o número de série para itens de estoque recebidos" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Código de barras" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "Código de barras lido" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "Código de barras já em uso" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "Quantidade inteira deve ser fornecida para peças rastreáveis" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "Itens de linha deve ser providenciados" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "Loca de destino deve ser especificado" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "Código de barras fornecido deve ser único" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "Moeda de preço de venda" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "Nenhum detalhe da remessa fornecido" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "Item de linha não está associado a este pedido" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "Quantidade deve ser positiva" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "Digite números de série para alocar" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "O pedido já foi enviado" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "O envio não está associado a este pedido" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "Nenhuma correspondência encontrada para os seguintes números de série" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "Os seguintes números de série já estão alocados" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "Devolver item do pedido" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" -msgstr "Item do pedido não bate com a ordem de devolução" +msgstr "Item do pedido não bate com o pedido de devolução" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "Item do pedido já foi recebido" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "Itens só podem ser recebidos de pedidos em processamento" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "Tipo de moeda para o item do pedido" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "Pedido de compra vencido" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "Pedido de compra {po} está atrasada" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "Pedido de venda vencido" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "Pedido de venda {so} está atrasada" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "Imprimir relatório do pedido de compra" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "Exportar pedido ao arquivo" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "Ações de pedido" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "Editar pedido" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "Cancelar pedido" @@ -4949,90 +5094,82 @@ msgstr "Duplicar pedido" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "Emitir Pedido" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "Receber itens" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "Receber Itens" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "Marcar pedido como concluído" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "Completar Pedido" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" -msgstr "" +msgstr "Miniatura da peça do fornecedor" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "Referência do Pedido" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "Descrição do Pedido" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "Situação do pedido" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "Nenhuma informação do fornecedor disponível" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "Itens de Linha Concluídos" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "Incompleto" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "Emitido" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "Custo total" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "O custo total não pôde ser calculado" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "Código QR do pedido" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "Vincular o código de barras ao pedido" @@ -5085,13 +5222,13 @@ msgstr "Duplicar seleção" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Remover linha" @@ -5152,9 +5289,9 @@ msgstr "Itens do Pedido de Compra" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "Adicionar item de linha" @@ -5165,72 +5302,67 @@ msgstr "Adicionar item de linha" msgid "Receive Line Items" msgstr "Receber os itens do pedido" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "Excluir Itens de Linha" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "Linhas Extra" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "Adicionar Linha Extra" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "Itens Recebidos" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "Notas do Pedido" #: order/templates/order/return_order_base.html:18 #: order/templates/order/sales_order_base.html:18 msgid "Customer logo thumbnail" -msgstr "" +msgstr "Miniatura logotipo do cliente" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "Imprimir guia de devolução" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "Imprimir lista de pacotes" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "Referência do Cliente" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "Custo Total" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "Código QR da guia de devolução" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "Vincular Código de Barras a Pedido de Devolução" @@ -5238,35 +5370,35 @@ msgstr "Vincular Código de Barras a Pedido de Devolução" msgid "Order Details" msgstr "Detalhes do pedido" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "Imprimir Relatório do Pedido de Venda" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "Enviar itens" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "Concluir Pedido de Venda" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "Este Pedido de Venda não foi totalmente alocado" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "Envios concluídos" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "Código QR da venda" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "Código de barras da venda" @@ -5274,18 +5406,17 @@ msgstr "Código de barras da venda" msgid "Sales Order Items" msgstr "Itens do Pedido de Venda" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "Envios Pendentes" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Ações" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "Nova Remessa" @@ -5293,64 +5424,65 @@ msgstr "Nova Remessa" msgid "Match Supplier Parts" msgstr "Corresponder Peças com Fornecedor" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "Pedido de Venda não encontrado" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "Preço não encontrado" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "Atualizado {part} unid.-preço para {price}" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "Atualizado {part} unid.-preço para {price} e quantidade para {qty}" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "ID da Peça" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "Nome da Peça" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "Descrição da Peça" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "IPN" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "Revisão" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Palavras chave" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "ID da Categoria" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "Nome da Categoria" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "ID Local Padrão" @@ -5358,24 +5490,24 @@ msgstr "ID Local Padrão" msgid "Default Supplier ID" msgstr "ID de Fornecedor Padrão" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Variante de" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Estoque Mínimo" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "Em Estoque" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "No pedido" @@ -5383,115 +5515,108 @@ msgstr "No pedido" msgid "Used In" msgstr "Usado em" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "Alocado" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "Produzindo" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "Custo Mínimo" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "Custo Máximo" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "ID Paternal" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "Nome Paternal" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "Caminho da Categoria" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "Peças" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "Nível da LDM" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "ID Item LDM" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "IPN Paternal" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "IPN da Peça" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Preço Mínimo" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "Preço Máximo" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "Pedido de compra recebido" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "Pedidos de Venda Feitos" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" -msgstr "Estoque produzido por Ordem de Produção" +msgstr "Estoque produzido pelo Pedido de Produção" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "Estoque obrigatório para Pedido de Produção" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "Válido" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "Validar a Lista de Materiais completa" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "Esta opção deve ser selecionada" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Local Padrão" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Estoque Total" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "Estoque Disponível" @@ -5499,950 +5624,969 @@ msgstr "Estoque Disponível" msgid "Input quantity for price calculation" msgstr "Quantidade para o cálculo de preço" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Categoria da Peça" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "Categorias de Peça" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "Local padrão para peças desta categoria" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "Estrutural" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "Peças não podem ser diretamente atribuídas a uma categoria estrutural, mas podem ser atribuídas a categorias filhas." -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "Palavras-chave Padrão" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "Palavras-chave padrão para peças nesta categoria" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "Ícone" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "Ícone (opcional)" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "Você não pode tornar esta categoria em estrutural, pois, algumas partes já estão alocadas!" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "Escolha inválida para peça parental" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" -msgstr "Parte '{p1}' é usada na LDM para '{p2}' (recursiva)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "IPN deve corresponder ao padrão regex {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "Item em estoque com este número de série já existe" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "Não é permitido duplicar IPN em configurações de partes" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "Uma parte com este Nome, IPN e Revisão já existe." -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "Peças não podem ser atribuídas a categorias estruturais!" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "Nome da peça" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "É um modelo" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "Esta peça é uma peça modelo?" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "Esta peça é variante de outra peça?" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "Descrição da peça (opcional)" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "Palavras-chave para melhorar a visibilidade nos resultados da pesquisa" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "Categoria" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "Categoria da Peça" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "Numero interno do produto" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "Revisão de peça ou número de versão" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "Onde este item é armazenado normalmente?" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Fornecedor Padrão" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "Fornecedor padrão da peça" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "Validade Padrão" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "Validade (em dias) para itens do estoque desta peça" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "Nível mínimo de estoque permitido" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "Unidade de medida para esta peça" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Essa peça pode ser construída a partir de outras peças?" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Essa peça pode ser usada para construir outras peças?" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "Esta parte tem rastreamento para itens únicos?" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "Esta peça pode ser comprada de fornecedores externos?" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "Esta peça pode ser vendida a clientes?" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "Esta parte está ativa?" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "Esta é uma peça virtual, como um software de produto ou licença?" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "Soma de Verificação da LDM" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "Soma de verificação da LDM armazenada" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "LDM conferida por" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "LDM verificada no dia" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "Criação de Usuário" -#: part/models.py:1042 -msgid "User responsible for this part" -msgstr "Usuário responsável por esta peça" +#: part/models.py:1014 +msgid "Owner responsible for this part" +msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "Último Balanço" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "Venda múltipla" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "Moeda usada para armazenar os cálculos de preços" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "Custo Mínimo da LDM" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "Custo mínimo das peças componentes" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "Custo Máximo da LDM" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "Custo máximo das peças componentes" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "Custo Mínimo de Compra" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "Custo mínimo histórico de compra" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "Custo Máximo de Compra" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "Custo máximo histórico de compra" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "Preço Interno Mínimo" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "Custo mínimo baseado nos intervalos de preço internos" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "Preço Interno Máximo" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "Custo máximo baseado nos intervalos de preço internos" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "Preço Mínimo do Fornecedor" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "Preço mínimo da peça de fornecedores externos" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "Preço Máximo do Fornecedor" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "Preço máximo da peça de fornecedores externos" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "Custo Mínimo variável" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "Custo mínimo calculado das peças variáveis" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "Custo Máximo Variável" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "Custo máximo calculado das peças variáveis" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "Custo total mínimo calculado" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "Custo total máximo calculado" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "Preço Mínimo de Venda" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "Preço mínimo de venda baseado nos intervalos de preço" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "Preço Máximo de Venda" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "Preço máximo de venda baseado nos intervalos de preço" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "Custo Mínimo de Venda" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "Preço histórico mínimo de venda" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "Custo Máximo de Venda" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "Preço histórico máximo de venda" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "Peça para Balanço" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "Total de Itens" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "Número de entradas de estoques individuais no momento do balanço" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "Estoque total disponível no momento do balanço" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "Data" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "Data de realização do balanço" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "Notas adicionais" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "Usuário que fez o balanço" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "Custo Mínimo de Estoque" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "Custo mínimo estimado de estoque disponível" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "Custo Máximo de Estoque" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "Custo máximo estimado de estoque disponível" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "Reportar" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "Arquivo de Relatório de Balanço (gerado internamente)" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "Contagem de Peças" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "Número de peças cobertas pelo Balanço" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "Usuário que solicitou este relatório de balanço" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "Modelos de teste só podem ser criados para peças rastreáveis" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "O teste com este nome já existe para esta peça" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "Nome de Teste" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "Insira um nome para o teste" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "Descrição do Teste" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "Digite a descrição para este teste" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Requerido" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "Este teste é obrigatório passar?" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "Requer Valor" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "Este teste requer um valor ao adicionar um resultado de teste?" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "Anexo obrigatório" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "Este teste requer um anexo ao adicionar um resultado de teste?" #: part/models.py:3346 msgid "Checkbox parameters cannot have units" -msgstr "" +msgstr "Parâmetros da caixa de seleção não podem ter unidades" #: part/models.py:3351 msgid "Checkbox parameters cannot have choices" -msgstr "" +msgstr "Os parâmetros da caixa de seleção não podem ter escolhas" #: part/models.py:3369 msgid "Choices must be unique" -msgstr "" +msgstr "Escolhas devem ser únicas" #: part/models.py:3385 msgid "Parameter template name must be unique" msgstr "Nome do modelo de parâmetro deve ser único" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "Nome do Parâmetro" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" -msgstr "" +msgstr "Unidades físicas para este parâmetro" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "Descrição do Parâmetro" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" -msgstr "" +msgstr "Caixa de seleção" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" -msgstr "" +msgstr "Este parâmetro é uma caixa de seleção?" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" -msgstr "" +msgstr "Escolhas" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" -msgstr "" +msgstr "Opções válidas para este parâmetro (separadas por vírgulas)" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" -msgstr "" +msgstr "Escolha inválida para valor do parâmetro" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "Peça Paternal" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "Modelo de parâmetro" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "Dados" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "Valor do Parâmetro" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "Valor Padrão" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "Valor Padrão do Parâmetro" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "ID da peça ou nome da peça" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "Valor exclusivo do ID de peça" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "Valor da parte IPN" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "Nível" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "Nível da LDM" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "Item LDM" + +#: part/models.py:3771 msgid "Select parent part" msgstr "Selecione a Peça Parental" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "Sub peça" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "Selecionar peça a ser usada na LDM" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "Quantidade de LDM para este item LDM" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "Opcional" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "Este item LDM é opcional" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "Consumível" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "Este item LDM é consumível (não é rastreado nos pedidos de construção)" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Excedente" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Quantidade estimada de desperdício (absoluto ou porcentagem)" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "Referência do Item LDM" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "Notas do Item LDM" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "Soma de verificação" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "Soma de Verificação da LDM da linha" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Validado" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" -msgstr "O item da LDM foi calidado" +msgstr "O item da LDM foi validado" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:1054 +#: templates/js/translated/table_filters.js:178 +#: templates/js/translated/table_filters.js:211 msgid "Gets inherited" msgstr "Obtém herdados" -#: part/models.py:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Este item da LDM é herdado por LDMs para peças variáveis" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Permitir variações" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Itens de estoque para as peças das variantes podem ser usados para este item LDM" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "Quantidade deve ser valor inteiro para peças rastreáveis" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "Sub peça deve ser especificada" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "Substituir Item da LDM" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "A peça de substituição não pode ser a mesma que a peça mestre" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "Item LDM Parental" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "Substituir peça" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "Parte 1" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "Parte 2" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "Selecionar Peça Relacionada" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "Relacionamento da peça não pode ser criada com ela mesma" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "Relação duplicada já existe" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "Moeda de compra deste item de estoque" -#: part/serializers.py:302 +#: part/serializers.py:346 +msgid "No parts selected" +msgstr "Nenhuma parte selecionada" + +#: part/serializers.py:354 +msgid "Select category" +msgstr "Selecionar categoria" + +#: part/serializers.py:384 msgid "Original Part" msgstr "Peça Original" -#: part/serializers.py:302 +#: part/serializers.py:384 msgid "Select original part to duplicate" msgstr "Selecione a peça original para duplicar" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy Image" msgstr "Copiar imagem" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy image from original part" msgstr "Copiar imagem da peça original" -#: part/serializers.py:312 part/templates/part/detail.html:296 +#: part/serializers.py:394 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Copiar LDM" -#: part/serializers.py:312 +#: part/serializers.py:394 msgid "Copy bill of materials from original part" msgstr "Copiar lista de materiais da peça original" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy Parameters" msgstr "Copiar Parâmetros" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy parameter data from original part" msgstr "Copiar dados do parâmetro da peça original" -#: part/serializers.py:327 +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 msgid "Initial Stock Quantity" msgstr "Quantidade Inicial de Estoque" -#: part/serializers.py:327 +#: part/serializers.py:414 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "Especificar a quantidade inicial de estoque para a peça. Se for zero, nenhum estoque é adicionado." -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Initial Stock Location" msgstr "Local Inicial do Estoque" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Specify initial stock location for this Part" msgstr "Especifique o local do estoque inicial para esta Peça" -#: part/serializers.py:343 +#: part/serializers.py:430 msgid "Select supplier (or leave blank to skip)" msgstr "Selecione o fornecedor (ou deixe em branco para pular)" -#: part/serializers.py:354 +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "Selecione fabricante (ou deixe em branco para pular)" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "Número de Peça do Fabricante" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "A empresa selecionada não é um fornecedor válido" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "A empresa selecionada não é um fabricante válido" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "A peça do fabricante que corresponde a essa MPN já existe" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "A peça do fornecedor que corresponde a essa SKU já existe" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "Peça duplicada" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "Copiar dados iniciais de outra peça" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Estoque inicial" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "Criar peça com a quantidade inicial de estoque" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "Informações do Fornecedor" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "Adicionar informação inicial de fornecedor para esta peça" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "Copiar Parâmetros da Categoria" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "Copiar modelos de parâmetros a partir de categoria de peça selecionada" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "Limitar o relatório de balanço a uma determinada peça e quaisquer peças variantes" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "Limitar o relatório de balanço a uma determinada categoria, e qualquer peças filhas" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "Limitar o relatório de balanço a um determinado local de estoque, e qualquer local filho" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "Excluir Estoque externo" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "Excluir itens de estoque em locais externos" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "Gerar relatório" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "Gerar arquivo de relatório contendo dados de estoque calculados" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "Atualizar Peças" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "Atualizar peças especificadas com dados de estoque calculados" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "Função de Balanço de Estoque não está ativada" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "Atualizar" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "Atualizar preços desta peça" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "Selecionar peça para copiar a LDM" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "Remover Dado Existente" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "Remova itens LDM existentes antes de copiar" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "Incluir Herdados" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "Incluir itens LDM que são herdados de peças modelo" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "Pular Linhas inválidas" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "Habilitar esta opção para pular linhas inválidas" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "Copiar Peças Substitutas" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "Copiar peças de substitutas quando duplicar itens de LDM" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "Limpar LDM Existente" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "Apagar itens LDM existentes antes de carregar" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "Nenhuma coluna de peça especificada" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "Múltiplas peças correspondentes encontradas" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "Nenhuma peça correspondente encontrada" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "Peça não está designada como componente" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "Quantidade não foi fornecida" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "Quantidade Inválida" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "Pelo menos um item LDM é necessário" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "Notificação de estoque baixo" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "O estoque disponível para {part.name} caiu abaixo do nível mínimo definido" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "Quantidade Total" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "Custo Min Total" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "Custo Max Total" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "Balanço de Estoque Disponível" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "Um novo relatório de balanço do estoque está disponível para baixar" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "Notificação de estoque baixo" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "O estoque disponível para {part.name} caiu abaixo do nível mínimo definido" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "Você não tem permissões para editar a LDM." @@ -6461,90 +6605,70 @@ msgstr "A LDM de %(part)s foi verificada pela última vez por %(checker msgid "The BOM for %(part)s has not been validated." msgstr "A LDM para %(part)s não foi validada." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "Ações da LDM" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "Excluir itens" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "Fazer balanço de estoque para esta categoria de peça" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "Você está inscrito para notificações desta categoria" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "Inscrever-se para notificações desta categoria" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "Ações de Categoria" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "Editar categoria" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "Editar Categoria" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "Excluir categoria" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "Excluir Categoria" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "Categoria de peça de nível superior" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Sub-categorias" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "Peças (incluindo subcategorias)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "Criar nova peça" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "Nova Peça" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "Opções" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "Definir categoria" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "Definir Categoria" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "Parâmetros da Peça" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "Criar categoria de peça" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "Nova Categoria" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "Atualizar dados de agendamento" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "Recarregar" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "Adicionar informações de balanço de estoque" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "Balanço" @@ -6604,101 +6728,101 @@ msgstr "Modelos de Teste de Peça" msgid "Add Test Template" msgstr "Adicionar Modelo de Teste" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "Alocações do Pedido de Vendas" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "Notas de Peça" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "Variantes de Peça" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "Criar variante" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "Nova Variação" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "Adicionar um novo parâmetro" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "Peças Relacionadas" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "Adicionar Relacionado" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "Lista de Materiais" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "Exportar Ações" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "Exportar LDM" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "Imprimir Relatório da LDM" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "Ações da LDM" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "Carregar LDM" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "Validar LDM" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "Adicionar Item LDM" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "Montagens" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "Produções de peça" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "Alocações de Pedido de Produção" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "Fornecedores da peça" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "Fabricantes da peça" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "Apagar peças do fabricante" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "Peça Relacionada" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "Adicionar peça relacionada" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "Adicionar Modelo de Resultado de Teste" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "Baixar Modelo de Importação de Peça" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "Formato" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "Selecione o formato de arquivo" @@ -6747,158 +6871,158 @@ msgstr "Selecione o formato de arquivo" msgid "Part List" msgstr "Lista de Peças" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "Você está inscrito para notificações desta peça" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "Inscrever-se para notificações desta peça" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "Imprimir Etiqueta" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "Mostrar informações de preços" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "Ações de Estoque" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "Contagem peça em estoque" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "Transferir estoque de peça" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "Ações de peça" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "Peça duplicada" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "Editar peça" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "Excluir peça" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "Esta é uma peça modelo (as variantes podem ser feitas a partir desta peça)" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "Peças pode ser montada a partir de outras peças" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "Peça pode ser usada em montagens" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "Peça em estoque é controlada por número de série" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "Peça pode ser comprada de fornecedores externos" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "Peça pode ser vendida a clientes" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" -msgstr "Item bloqueado" +msgstr "Peça inativa" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "Inativo" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "Peça é virtual (não é algo físico)" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "Mostrar Detalhes de Peça" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "Alocado para Pedidos de Construção" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "Alocado para Pedidos de Venda" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "Pode Produzir" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "Nível mínimo de estoque" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "Faixa de Preço" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "Último Número de Série" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "Procurar por número serial" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "QR Code da Peça" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "Vincular Código de Barras à Peça" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "peça" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "Calcular" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "Remover imagem associada a esta peça" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "Nenhuma imagem correspondente encontrada" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "Esconder Detalhes da Peça" @@ -6955,15 +7079,15 @@ msgstr "Variantes" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "Estoque" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "Preços" @@ -6987,11 +7111,11 @@ msgstr "Resumo de Preços" msgid "Refresh Part Pricing" msgstr "Atualizar Preço da Peça" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "Última atualização" @@ -7054,12 +7178,12 @@ msgstr "Preço de Venda" msgid "Add Sell Price Break" msgstr "Adicionar intervalo de preço de venda" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "Sem Estoque" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "Estoque Baixo" @@ -7108,37 +7232,36 @@ msgstr "Criar variante de peça" msgid "Create a new variant part from this template" msgstr "Criar uma peça variante a partir deste modelo" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "Banco de dados desconhecido" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" -msgstr "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" +msgstr "" #: part/views.py:110 msgid "Match References" msgstr "Referências de combinações" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" -msgstr "Não é possível importar a peça {name} pois não há uma categoria atribuída" +msgid "Can't import part {new_part.name} because there is no category assigned" +msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "Selecionar Imagem da Peça" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "Atualizar imagem da peça" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "Imagem da peça não encontrada" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "Preço Peça" @@ -7150,20 +7273,21 @@ msgstr "Nenhuma ação especificada" msgid "No matching action found" msgstr "Nenhuma ação correspondente encontrada" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "Faltando dados do código de barras" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "Nenhum resultado encontrado para os dados do código de barras" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "Coincidência encontrada para dados de código de barras" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "Código de barras corresponde ao item existente" @@ -7171,7 +7295,53 @@ msgstr "Código de barras corresponde ao item existente" msgid "No match found for provided value" msgstr "Nenhuma correspondência encontrada para o valor fornecido" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "Impressão de etiqueta falhou" @@ -7185,6 +7355,11 @@ msgstr "Fornece suporte nativo para códigos de barras" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "Contribuidores do InvenTree" @@ -7194,7 +7369,7 @@ msgstr "Notificações do InvenTree" #: plugin/builtin/integration/core_notifications.py:35 msgid "Integrated outgoing notification methods" -msgstr "" +msgstr "Métodos de envio de notificação integrados" #: plugin/builtin/integration/core_notifications.py:40 #: plugin/builtin/integration/core_notifications.py:81 @@ -7222,242 +7397,409 @@ msgstr "Link do gancho de entrada do Slack" msgid "URL that is used to send messages to a slack channel" msgstr "URL usada para enviar mensagens para um canal do Slack" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "Abrir link" -#: plugin/models.py:27 +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "Impressora de etiquetas PDF do InvenTree" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "Providenciar suporte nativo para impressão de etiquetas em PDF" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "Modo de depuração" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "Ativar o modo de depuração - retorna HTML bruto em vez de PDF" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" +msgstr "" + +#: plugin/models.py:28 msgid "Plugin Configuration" msgstr "Configuração de Extensão" -#: plugin/models.py:28 +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "Configuração de Extensões" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "Chave" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "Chave da extensão" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "Nome da Extensão" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "O plug-in está ativo" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "Instalado" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "Plug-in de exemplo" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "Plugin embutido" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "Extensões" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "Método" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "Nenhum autor encontrado" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "A extensão '{p}' não é compatível com a versão atual do InvenTree {v}" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "Extensão requer pelo menos a versão {v}" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "Extensão requer no máximo a versão {v}" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "Ativar PO" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "Ativar a funcionalidade PO na interface InvenTree" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "Chave API" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "Chave necessária para acesso à API externa" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "Numérico" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "Uma configuração numérica" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "Configurações de Escolha" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "Uma configuração com várias escolhas" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "URL de origem" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "Fonte do pacote — este pode ser um registro personalizado ou um caminho de VCS" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "Nome do Pacote" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "Nome para o Pacote da Extensão — também pode conter um indicador de versão" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "Confirmar instalação da extensão" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "Isto instalará a extensão agora na instância atual. A instância irá entrar em manutenção." -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "Instalação não confirmada" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "Qualquer nome do pacote URL deve ser fornecido" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" -msgstr "" +msgstr "Ativar Extensão" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" -msgstr "" +msgstr "Ativar esta extensão" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "Nenhum objeto válido fornecido para o modelo" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Arquivo modelo '{template}' perdido ou não existe" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "Relatório de teste" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "Nome do modelo" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "Arquivo modelo de relatório" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "Descrição do modelo de relatório" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "Relatar número de revisão (auto-incrementos)" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "Padrão para gerar nomes de arquivo de relatórios" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "Modelo de relatório Habilitado" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Filtros de consulta de itens de estoque(lista de valores separados por vírgula)" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "Incluir testes instalados" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "Incluir resultados de testes para itens de estoque instalados dentro de item montado" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "Filtros de Produção" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Filtros de consulta de produção (lista de valores separados por vírgula" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "Filtros de Peças" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Filtros de consulta de peças (lista de valores separados por vírgula" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "Filtros de consultas de pedidos de compra" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "Filtros de consultas de pedidos de venda" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "Filtrar pesquisa de itens devolvidos" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "Recorte" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "Relatar arquivo de recorte" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "Descrição do arquivo de recorte" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" -msgstr "Ativos" +msgstr "Patrimônio" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "Reportar arquivo de ativos" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "Descrição do arquivo de ativos" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "filtros de consulta de locais de estoque(lista de valores separados por vírgula)" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "Materiais necessários" @@ -7474,9 +7816,9 @@ msgstr "Fornecedor foi excluído" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "Preço unitário" @@ -7488,26 +7830,30 @@ msgstr "Extra Itens de Linha" #: report/templates/report/inventree_po_report_base.html:72 #: report/templates/report/inventree_so_report_base.html:72 -#: templates/js/translated/purchase_order.js:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 msgid "Total" msgstr "Total" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Número de Sério" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "Estoque de itens do local" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "Relatório Teste do Item em Estoque" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "Resultados do teste" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "Teste" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "Resultado" @@ -7548,980 +7894,1046 @@ msgid "Installed Items" msgstr "Itens instalados" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Série" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "ID do local" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "Nome do Local" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "Caminho do local" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "ID do item estoque" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "Código da situação" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "Número da Peça do Fornecedor" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "ID do Fornecedor" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "Nome do Fornecedor" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "ID Cliente" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "Instalado em" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "ID da Produção" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "ID do pedido de venda" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" -msgstr "ID da ordem de compra" +msgstr "ID do pedido de compra" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "Revisão Necessária" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "Excluir quando esgotado" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "Data de validade" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "Localização externa" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "Quantidade obrigatória" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "Uma peça válida deve ser fornecida" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" -msgstr "" +msgstr "A peça do fornecedor informado não existe" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" -msgstr "" +msgstr "A peça do fornecedor tem um tamanho de pacote definido, mas o item use_pack_size não foi definida" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "Números de série não podem ser fornecidos para uma parte não rastreável" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" -msgstr "Localizacao do estoque" +msgstr "Localização do estoque" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "Locais de estoque" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "Responsavel" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "Selecionar Responsável" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "Os itens de estoque podem não estar diretamente localizados em um local de estoque estrutural, mas podem ser localizados em locais filhos." -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Externo" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "Esta é uma localização de estoque externo" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "Você não pode tornar este local do estoque estrutural, pois alguns itens de estoque já estão localizados nele!" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "Os itens de estoque não podem estar localizados em locais de estoque estrutural!" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "Item de estoque não pode ser criado para peças virtuais" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" -msgstr "Tipo da peça ('{pf}') deve ser {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "A quantidade deve ser 1 para um item com número de série" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Número de série não pode ser definido se quantidade maior que 1" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "O item não pode pertencer a si mesmo" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "Item deve ter uma referência de produção se is_building=True" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "Referência de produção não aponta ao mesmo objeto da peça" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "Item de Estoque Parental" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "Peça base" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "Selecione uma peça do fornecedor correspondente para este item de estoque" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "Onde está localizado este item de estoque?" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "Embalagem deste item de estoque está armazenado em" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "Este item está instalado em outro item?" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "Número de série para este item" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "Código do lote para este item de estoque" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "Quantidade de Estoque" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "Produção de Origem" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "Produção para este item de estoque" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" -msgstr "" +msgstr "Consumido por" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" -msgstr "" +msgstr "Pedido de produção que consumiu este item de estoque" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "Pedido de compra Fonte" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "Pedido de Compra para este item de estoque" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "Destino do Pedido de Venda" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "Data de validade para o item de estoque. Estoque será considerado expirado após este dia" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "Excluir quando esgotado" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "Excluir este item de estoque quando o estoque for esgotado" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "Preço de compra unitário único no momento da compra" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "Convertido para peça" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "Peça não está definida como rastreável" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "Quantidade deve ser inteira" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" -msgstr "Quantidade não deve exceder a quantidade disponível em estoque ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "Números de série devem ser uma lista de números inteiros" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "A quantidade não corresponde aos números de série" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "Números de série já existem" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "Item em estoque foi reservado para um pedido" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "Item em estoque está instalado em outro item" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "item em estoque contem outro(s) items" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "Item em estoque foi reservado para outro cliente" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "Item no estoque está em produção no momento" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "Itens de série não podem ser mesclados" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "Item de estoque duplicado" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "Itens de estoque devem se referir à mesma peça" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "Itens de estoque devem se referir à mesma peça do fornecedor" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "Códigos de estado do estoque devem corresponder" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "Item do estoque não pode ser realocado se não houver estoque da mesma" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "Observações de entrada" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "Deve-se fornecer o valor desse teste" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "O anexo deve ser enviado para este teste" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "Nome de teste" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "Resultado do teste" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "Valor da saída do teste" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "Anexo do resultado do teste" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "Notas do teste" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "Número de série é muito grande" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" -msgstr "" +msgstr "Usar tamanho do pacote ao adicionar: a quantidade definida é o número de pacotes" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" -msgstr "" +msgstr "Preço de compra para este item de estoque, por unidade ou pacote" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "Insira o número de itens de estoque para serializar" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "Quantidade não deve exceder a quantidade disponível em estoque ({q})" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "Inserir número de série para novos itens" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "Local de destino do estoque" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "Campo opcional de notas" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "Números de série não podem ser atribuídos a esta peça" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "Selecione o item de estoque para instalar" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" -msgstr "Item de estoque indisponível" +#: stock/serializers.py:496 +msgid "Quantity to Install" +msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" -msgstr "Peça selecionada não está na Lista de Materiais" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" +msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "Local de destino para o item desinstalado" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "Adicionar nota de transação (opcional)" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "Item de estoque indisponível" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "Peça selecionada não está na Lista de Materiais" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "Local de destino para o item desinstalado" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "Selecione peça para converter o item de estoque em" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "Peça selecionada não é uma opção válida para conversão" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "Local de destino para item retornado" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "Selecionar itens de estoque para mudar estados" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "Nenhum item de estoque selecionado" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "Parte deve ser comercializável" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "Item é alocado para um pedido de venda" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "Item está alocado a um pedido de produção" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "Cliente para atribuir itens de estoque" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "A empresa selecionada não é um cliente" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" -msgstr "" +msgstr "Nodas atribuídas a estoque" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" -msgstr "" +msgstr "Uma lista de item de estoque deve ser providenciada" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" -msgstr "" +msgstr "Notas de fusão de estoque" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" -msgstr "" +msgstr "Permitir fornecedores divergentes" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" -msgstr "" +msgstr "Permitir a fusão de itens de estoque de fornecedores diferentes" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "Permitir estado incompatível" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "Permitir a fusão de itens de estoque com estado diferentes" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" -msgstr "" +msgstr "Ao menos dois itens de estoque devem ser providenciados" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" -msgstr "" +msgstr "Valor da chave primária do Item Estoque" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "Código de estado do item estoque" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" -msgstr "" +msgstr "Notas da transação de estoque" #: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" -msgstr "" +msgstr "Informações de Rastrrio de Estoque" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" -msgstr "" +msgstr "Itens de Estoque Filhos" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" -msgstr "" +msgstr "Este item de estoque não possuí nenhum filho" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" -msgstr "" +msgstr "Dados de teste" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" -msgstr "" +msgstr "Relatório do teste" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" -msgstr "" +msgstr "Excluir dados de teste" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" -msgstr "" +msgstr "Adicionar dados de teste" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "Notas de Item Estoque" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" -msgstr "" +msgstr "Itens de Estoque Instalados" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" -msgstr "" +msgstr "Instalar Item de Estoque" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" -msgstr "" +msgstr "Excluir todos os resultados de teste deste item de estoque" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" -msgstr "" +msgstr "Adicionar Resultado de Teste" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" -msgstr "" +msgstr "Localizar item de estoque" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" -msgstr "" +msgstr "Escanear a Localização" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" -msgstr "" +msgstr "Ações de Impressão" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" -msgstr "" +msgstr "Ações de ajuste de estoque" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" -msgstr "" +msgstr "Contagem de estoque" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "Adicionar estoque" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "Remover estoque" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "Serializar estoque" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "Transferir estoque" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "Disponibilizar para o cliente" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "Devolver ao estoque" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "Desinstalar o item do estoque" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "Desinstalar" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "Instalar item do estoque" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "Instalar" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "Converter em variante" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "Duplicar item" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "Editar item de estoque" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "Excluir item de estoque" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Produção" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "Item Primário" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "Nenhum fabricante definido" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." -msgstr "Vc não está autorizado a editar esse item." +msgstr "Você não está autorizado a editar esse item." -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "Somente leitura" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "Este item não está disponível no estoque" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "Este item de estoque está em produção e não pode ser editado." -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "Edite este item usando o formulário de construçao." -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" -msgstr "" +msgstr "Este item de estoque está alocado a um pedido de venda" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" -msgstr "" +msgstr "Este item de estoque está alocado a um pedido de produção" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" -msgstr "" +msgstr "Este item de estoque é serializado. Tem um único número de série e a quantidade não pode ser ajustada" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" -msgstr "" +msgstr "página anterior" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" -msgstr "" +msgstr "Navegar para o número de série anterior" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" -msgstr "" +msgstr "próxima página" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" -msgstr "" +msgstr "Navegar para o próximo número de série" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" -msgstr "" +msgstr "Quantidade Disponível" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" -msgstr "" +msgstr "Nenhum local definido" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" -msgstr "" +msgstr "Testes" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" -msgstr "" +msgstr "Este item de estoque não passou todos os testes necessários" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" -msgstr "" +msgstr "Este Item do Estoque expirou em %(item.expiry_date)s" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" -msgstr "" +msgstr "Expirado" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" -msgstr "" +msgstr "Este Item do Estoque expira em %(item.expiry_date)s" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "Inativo" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "Nenhum balanço feito" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" -msgstr "" +msgstr "item de estoque" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "Editar Situação do Estoque" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" -msgstr "" +msgstr "QR Code do Item de Estoque" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" -msgstr "" - -#: stock/templates/stock/item_base.html:612 -msgid "Select one of the part variants listed below." -msgstr "" - -#: stock/templates/stock/item_base.html:615 -msgid "Warning" -msgstr "" +msgstr "Ligar Código de barras ao item de estoque" #: stock/templates/stock/item_base.html:616 +msgid "Select one of the part variants listed below." +msgstr "Selecione uma das peças variantes listada abaixo." + +#: stock/templates/stock/item_base.html:619 +msgid "Warning" +msgstr "Atenção" + +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" -msgstr "" +msgstr "Esta ação não pode ser facilmente desfeita" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" -msgstr "" +msgstr "Converter Item de Estoque" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" -msgstr "" +msgstr "Retornar ao estoque" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." -msgstr "" +msgstr "Criar itens serializados deste item de estoque." #: stock/templates/stock/item_serialize.html:7 msgid "Select quantity to serialize, and unique serial numbers." -msgstr "" +msgstr "Selecione a quantidade para serializar e números de série único." -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "Fazer balanço para o estoque deste local" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" -msgstr "" +msgstr "Localizar o local de estoque" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" -msgstr "" +msgstr "Buscar itens de estoque neste local" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" -msgstr "" +msgstr "Buscar nos Itens de Estoque" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" -msgstr "" +msgstr "Buscar recipiente do estoque neste local" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" -msgstr "" +msgstr "Buscar no recipiente" -#: stock/templates/stock/location.html:102 -msgid "Location actions" -msgstr "" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "Imprimir Relatório da Localização" #: stock/templates/stock/location.html:104 -msgid "Edit location" -msgstr "" +msgid "Location actions" +msgstr "Ações de Locais" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "Editar Local" + +#: stock/templates/stock/location.html:108 msgid "Delete location" -msgstr "" +msgstr "Excluir Local" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" -msgstr "" +msgstr "Local de estoque de alto nível" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" -msgstr "" +msgstr "Dono do Local" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." -msgstr "" +msgstr "Você não está na lista de donos deste local. Este local de estoque não pode ser editado." -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" -msgstr "" +msgstr "Sub-locais" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" -msgstr "" +msgstr "Criar novo local de estoque" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" -msgstr "" +msgstr "Novo local" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" -msgstr "" +msgstr "local de estoque" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" -msgstr "" +msgstr "Escaneado o recipiente de estoque neste local" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" -msgstr "" +msgstr "Código QR do Local de Estoque" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" -msgstr "" +msgstr "Ligar Código de barras ao Local de Estoque" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." -msgstr "" +msgstr "Carregando..." #: stock/templates/stock/stock_sidebar.html:5 msgid "Stock Tracking" -msgstr "" +msgstr "Rastreamento de estoque" #: stock/templates/stock/stock_sidebar.html:8 msgid "Allocations" -msgstr "" +msgstr "Alocações" #: stock/templates/stock/stock_sidebar.html:20 msgid "Child Items" -msgstr "" +msgstr "Itens Filhos" #: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7 msgid "Permission Denied" -msgstr "" +msgstr "Permissão Negada" #: templates/403.html:15 msgid "You do not have permission to view this page." -msgstr "" +msgstr "Você não tem permissão para visualizar esta página." #: templates/403_csrf.html:11 msgid "Authentication Failure" -msgstr "" +msgstr "Falha na Autenticação" #: templates/403_csrf.html:14 msgid "You have been logged out from InvenTree." -msgstr "" +msgstr "Você foi desconectado do InvenTree." #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" -msgstr "" +msgstr "Iniciar sessão" #: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" -msgstr "" +msgstr "Página não encontrada" #: templates/404.html:15 msgid "The requested page does not exist" -msgstr "" +msgstr "A página solicitada não existe" #: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" -msgstr "" +msgstr "Erro interno do servidor" #: templates/500.html:15 #, python-format msgid "The %(inventree_title)s server raised an internal error" -msgstr "" +msgstr "O servidor %(inventree_title)s gerou um erro interno" #: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" -msgstr "" +msgstr "Consulte o login de erro na interface admin para mais detalhes" #: templates/503.html:11 templates/503.html:33 msgid "Site is in Maintenance" -msgstr "" +msgstr "Site está em Manutenção" #: templates/503.html:39 msgid "The site is currently in maintenance and should be up again soon!" -msgstr "" +msgstr "O site está atualmente em manutenção e estará de volta em breve!" #: templates/InvenTree/index.html:7 msgid "Index" -msgstr "" +msgstr "Índice" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "" +msgstr "Peças inscritas" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "" +msgstr "Categorias Inscritas" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" -msgstr "" +msgstr "Peças mais recentes" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" -msgstr "" +msgstr "LDM Aguardando Validação" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "" +msgstr "Atualizados Recentemente" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" -msgstr "" +msgstr "Estoque Esgotado" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" -msgstr "" +msgstr "Necessário para pedidos de produção" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" -msgstr "" +msgstr "Estoque Expirado" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "Estoque Inativo" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "" +msgstr "Pedido de Produção em Progresso" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "" +msgstr "Pedido de produção vencido" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" -msgstr "" +msgstr "Pedidos pendentes de compra" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" -msgstr "" +msgstr "Pedido de compra vencido" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" -msgstr "" +msgstr "Pedidos de Venda Pendentes" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" -msgstr "" +msgstr "Pedidos de venda vencidos" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" -msgstr "" +msgstr "Notícias do InvenTree" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" -msgstr "" +msgstr "Notícias Atuais" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" -msgstr "" +msgstr "Histórico de Notificações" #: templates/InvenTree/notifications/history.html:13 #: templates/InvenTree/notifications/history.html:14 @@ -8531,932 +8943,999 @@ msgstr "Apagar notificações" #: templates/InvenTree/notifications/inbox.html:9 msgid "Pending Notifications" -msgstr "" +msgstr "Notificações Pendentes" #: templates/InvenTree/notifications/inbox.html:13 #: templates/InvenTree/notifications/inbox.html:14 msgid "Mark all as read" -msgstr "" +msgstr "Marcar tudo como lido" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" -msgstr "" +msgstr "Notificações" #: templates/InvenTree/notifications/notifications.html:38 msgid "No unread notifications found" -msgstr "" +msgstr "Nenhuma notificação pendente encontrada" #: templates/InvenTree/notifications/notifications.html:58 msgid "No notification history found" -msgstr "" +msgstr "Sem histórico de notificação encontrado" #: templates/InvenTree/notifications/notifications.html:65 msgid "Delete all read notifications" -msgstr "" +msgstr "Excluir todas as notificações lidas" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" -msgstr "" +msgstr "Excluir notificação" #: templates/InvenTree/notifications/sidebar.html:8 msgid "Inbox" -msgstr "" +msgstr "Caixa de entrada" #: templates/InvenTree/notifications/sidebar.html:10 msgid "History" -msgstr "" +msgstr "Histórico" #: templates/InvenTree/search.html:8 msgid "Search Results" -msgstr "" +msgstr "Resultados da busca" #: templates/InvenTree/settings/barcode.html:8 msgid "Barcode Settings" -msgstr "" +msgstr "Definições do código de barras" #: templates/InvenTree/settings/build.html:8 msgid "Build Order Settings" -msgstr "" +msgstr "Configurações do Pedido de Produção" #: templates/InvenTree/settings/category.html:7 msgid "Category Settings" -msgstr "" +msgstr "Configurações de categoria" #: templates/InvenTree/settings/global.html:8 msgid "Server Settings" -msgstr "" +msgstr "Configurações do servidor" #: templates/InvenTree/settings/label.html:8 #: templates/InvenTree/settings/user_labels.html:9 msgid "Label Settings" -msgstr "" +msgstr "Configurações de etiqueta" #: templates/InvenTree/settings/login.html:8 msgid "Login Settings" -msgstr "" +msgstr "Configurações de Acesso" #: templates/InvenTree/settings/login.html:15 msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!" -msgstr "" +msgstr "O e-mail de saída não foi configurado. Alguns recursos de acesso e inscrição podem não funcionar corretamente!" #: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5 #: templates/socialaccount/signup.html:5 msgid "Signup" -msgstr "" +msgstr "Registrar-se" #: templates/InvenTree/settings/login.html:34 msgid "Single Sign On" -msgstr "" +msgstr "Início de sessão única" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" -msgstr "" +msgstr "Configurações" #: templates/InvenTree/settings/mixins/urls.html:5 msgid "URLs" -msgstr "" +msgstr "URLs" #: templates/InvenTree/settings/mixins/urls.html:8 #, python-format msgid "The Base-URL for this plugin is %(base)s." -msgstr "" +msgstr "A Base-URL para esta extensão é %(base)s." #: templates/InvenTree/settings/mixins/urls.html:23 msgid "Open in new tab" -msgstr "" +msgstr "Abrir em uma nova aba" #: templates/InvenTree/settings/notifications.html:9 #: templates/InvenTree/settings/user_notifications.html:9 msgid "Notification Settings" -msgstr "" +msgstr "Configurações de Notificação" #: templates/InvenTree/settings/notifications.html:18 msgid "Slug" -msgstr "" +msgstr "Slug" #: templates/InvenTree/settings/part.html:7 msgid "Part Settings" -msgstr "" +msgstr "Configurações de Peça" #: templates/InvenTree/settings/part.html:42 msgid "Part Import" -msgstr "" +msgstr "Peça importada" #: templates/InvenTree/settings/part.html:46 msgid "Import Part" -msgstr "" +msgstr "Importar Peça" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" -msgstr "" +msgstr "Modelo de Parâmetro da Peça" #: templates/InvenTree/settings/part_stocktake.html:7 msgid "Stocktake Settings" msgstr "Configurações de Balanço" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "Relatório de Balanço" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "Unidades Físicas" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "Adicionar Unidade" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" -msgstr "" +msgstr "Configurações da Extensão" #: templates/InvenTree/settings/plugin.html:15 msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." -msgstr "" +msgstr "Alterar as configurações abaixo requer que você reinicie imediatamente o servidor. Não altere isso enquanto estiver em uso." -#: templates/InvenTree/settings/plugin.html:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" -msgstr "" +msgstr "Extensões" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" -msgstr "" +msgstr "Instalar extensão" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" -msgstr "" +msgstr "Extensões externos não estão ativados para esta instalação do InvenTree" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" -msgstr "" +msgstr "Erro da Pilha da Extensão" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" -msgstr "" +msgstr "Fase" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" -msgstr "" +msgstr "Mensagem" #: templates/InvenTree/settings/plugin_settings.html:16 msgid "Plugin information" -msgstr "" +msgstr "Informações da extensões" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" -msgstr "" +msgstr "Versão" #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" -msgstr "" +msgstr "nenhuma informação de versão fornecida" #: templates/InvenTree/settings/plugin_settings.html:61 msgid "License" -msgstr "" +msgstr "Licença" #: templates/InvenTree/settings/plugin_settings.html:70 msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running." -msgstr "" +msgstr "A informação de código é retirada do último git commit para esta extensão. Pode não refletir números de versão ou informações oficiais, mas sim o código em execução." #: templates/InvenTree/settings/plugin_settings.html:76 msgid "Package information" -msgstr "" +msgstr "Informações do pacote" #: templates/InvenTree/settings/plugin_settings.html:82 msgid "Installation method" -msgstr "" +msgstr "Método de instalação" #: templates/InvenTree/settings/plugin_settings.html:85 msgid "This plugin was installed as a package" -msgstr "" +msgstr "Esta extensão foi instalada como um pacote" #: templates/InvenTree/settings/plugin_settings.html:87 msgid "This plugin was found in a local server path" -msgstr "" +msgstr "Esta extensão foi encontrada no caminho do servidor local" #: templates/InvenTree/settings/plugin_settings.html:93 msgid "Installation path" -msgstr "" +msgstr "Caminho de instalação" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" -msgstr "" +msgstr "Embutido" #: templates/InvenTree/settings/plugin_settings.html:101 msgid "This is a builtin plugin which cannot be disabled" +msgstr "Esse é uma extensão embutida que não pode ser desativado" + +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "Amostra" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" -msgstr "" +msgstr "Autor do Commit" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" -msgstr "" +msgstr "Data do commit" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" -msgstr "" +msgstr "Hash do Commit" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "Placa da Situação" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" +msgstr "Mensagem do Commit" #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" -msgstr "" +msgstr "Configurações do Pedido de Compra" #: templates/InvenTree/settings/pricing.html:7 msgid "Pricing Settings" -msgstr "" +msgstr "Configurações de preços" #: templates/InvenTree/settings/pricing.html:34 msgid "Exchange Rates" -msgstr "" +msgstr "Taxas de Câmbio" #: templates/InvenTree/settings/pricing.html:38 msgid "Update Now" -msgstr "" +msgstr "Atualizar agora" #: templates/InvenTree/settings/pricing.html:46 #: templates/InvenTree/settings/pricing.html:50 msgid "Last Update" -msgstr "" +msgstr "Última Atualização" #: templates/InvenTree/settings/pricing.html:50 msgid "Never" -msgstr "" +msgstr "Nunca" #: templates/InvenTree/settings/project_codes.html:8 msgid "Project Code Settings" -msgstr "" +msgstr "Configurações de código do projeto" #: templates/InvenTree/settings/project_codes.html:21 #: templates/InvenTree/settings/sidebar.html:33 msgid "Project Codes" -msgstr "" +msgstr "Códigos de Projeto" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" -msgstr "" +msgstr "Novo Código de Projeto" #: templates/InvenTree/settings/report.html:8 #: templates/InvenTree/settings/user_reporting.html:9 msgid "Report Settings" -msgstr "" +msgstr "Configurações de relatórios" #: templates/InvenTree/settings/returns.html:7 msgid "Return Order Settings" -msgstr "" +msgstr "Configurações de Pedido de Devolução" #: templates/InvenTree/settings/setting.html:31 msgid "No value set" -msgstr "" +msgstr "Nenhum valor definido" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" -msgstr "" +msgstr "Editar configurações" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" -msgstr "" +msgstr "Editar configurações da extensão" #: templates/InvenTree/settings/settings_js.html:60 msgid "Edit Notification Setting" -msgstr "" +msgstr "Editar Configurações de Notificação" #: templates/InvenTree/settings/settings_js.html:63 msgid "Edit Global Setting" -msgstr "" +msgstr "Editar Configurações Globais" #: templates/InvenTree/settings/settings_js.html:65 msgid "Edit User Setting" -msgstr "" +msgstr "Editar Configurações de Usuário" #: templates/InvenTree/settings/settings_staff_js.html:49 msgid "Rate" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" +msgstr "Taxa" #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 -msgid "Delete Project Code" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:189 -msgid "No category parameter templates found" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 -msgid "Edit Template" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 -msgid "Delete Template" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:230 -msgid "Edit Category Parameter Template" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:253 -msgid "Delete Category Parameter Template" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:288 -msgid "Create Category Parameter Template" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:314 -msgid "Create Part Parameter Template" -msgstr "" - -#: templates/InvenTree/settings/sidebar.html:6 -#: templates/InvenTree/settings/user_settings.html:9 -msgid "User Settings" -msgstr "" - -#: templates/InvenTree/settings/sidebar.html:9 -msgid "Account" -msgstr "" - -#: templates/InvenTree/settings/sidebar.html:11 -msgid "Display" -msgstr "" - -#: templates/InvenTree/settings/sidebar.html:13 -msgid "Home Page" -msgstr "" - -#: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 -msgid "Search" -msgstr "" - -#: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 -msgid "Reporting" -msgstr "" - -#: templates/InvenTree/settings/sidebar.html:24 -msgid "Global Settings" -msgstr "" - -#: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9 -msgid "Server" -msgstr "" - -#: templates/InvenTree/settings/sidebar.html:39 -msgid "Labels" -msgstr "" - -#: templates/InvenTree/settings/sidebar.html:43 -msgid "Categories" -msgstr "" - -#: templates/InvenTree/settings/so.html:7 -msgid "Sales Order Settings" -msgstr "" - -#: templates/InvenTree/settings/stock.html:7 -msgid "Stock Settings" -msgstr "" - -#: templates/InvenTree/settings/user.html:13 -msgid "Account Settings" -msgstr "" - -#: templates/InvenTree/settings/user.html:19 -#: templates/account/password_reset_from_key.html:4 -#: templates/account/password_reset_from_key.html:7 -msgid "Change Password" -msgstr "" - #: templates/InvenTree/settings/user.html:24 #: templates/js/translated/helpers.js:100 #: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 #: templates/notes_buttons.html:4 msgid "Edit" +msgstr "Editar" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Excluir" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "Editar Unidade Personalizada" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "Excluir Unidade Personalizada" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "Nova Unidade Personalizada" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "Nenhum código de projetos encontrado" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "Editar Código do Projeto" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 +msgid "Delete Project Code" +msgstr "Excluir Código do Projeto" + +#: templates/InvenTree/settings/settings_staff_js.html:265 +msgid "No category parameter templates found" +msgstr "Nenhum modelo de parâmetro de categoria encontrado" + +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 +msgid "Edit Template" +msgstr "Editar Modelo" + +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 +msgid "Delete Template" +msgstr "Excluir Modelo" + +#: templates/InvenTree/settings/settings_staff_js.html:306 +msgid "Edit Category Parameter Template" +msgstr "Editar Parâmetros dos Modelos de Categoria" + +#: templates/InvenTree/settings/settings_staff_js.html:333 +msgid "Delete Category Parameter Template" +msgstr "Excluir Parâmetros dos Modelos de Categoria" + +#: templates/InvenTree/settings/settings_staff_js.html:368 +msgid "Create Category Parameter Template" +msgstr "Criar Modelo de Parâmetro de Categoria" + +#: templates/InvenTree/settings/settings_staff_js.html:398 +msgid "Create Part Parameter Template" +msgstr "Criar Modelo de Parâmetro de Peça" + +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:6 +#: templates/InvenTree/settings/user_settings.html:9 +msgid "User Settings" +msgstr "Configurações de usuário" + +#: templates/InvenTree/settings/sidebar.html:9 +msgid "Account" +msgstr "Conta" + +#: templates/InvenTree/settings/sidebar.html:11 +msgid "Display" +msgstr "Visualização" + +#: templates/InvenTree/settings/sidebar.html:13 +msgid "Home Page" +msgstr "Página Inicial" + +#: templates/InvenTree/settings/sidebar.html:15 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 +msgid "Search" +msgstr "Buscar" + +#: templates/InvenTree/settings/sidebar.html:19 +#: templates/InvenTree/settings/sidebar.html:43 +msgid "Reporting" +msgstr "Reportar" + +#: templates/InvenTree/settings/sidebar.html:24 +msgid "Global Settings" +msgstr "Configurações globais" + +#: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9 +msgid "Server" +msgstr "Servidor" + +#: templates/InvenTree/settings/sidebar.html:41 +msgid "Labels" +msgstr "Etiquetas" + +#: templates/InvenTree/settings/sidebar.html:45 +msgid "Categories" +msgstr "Categorias" + +#: templates/InvenTree/settings/so.html:7 +msgid "Sales Order Settings" +msgstr "Configurações do Pedido de Venda" + +#: templates/InvenTree/settings/stock.html:7 +msgid "Stock Settings" +msgstr "Configurações de Estoque" + +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + +#: templates/InvenTree/settings/user.html:13 +msgid "Account Settings" +msgstr "Configurações de Conta" + +#: templates/InvenTree/settings/user.html:19 +#: templates/account/password_reset_from_key.html:4 +#: templates/account/password_reset_from_key.html:7 +msgid "Change Password" +msgstr "Alterar Senha" + #: templates/InvenTree/settings/user.html:33 msgid "Username" -msgstr "" +msgstr "Nome de usuário" #: templates/InvenTree/settings/user.html:37 msgid "First Name" -msgstr "" +msgstr "Primeiro Nome" #: templates/InvenTree/settings/user.html:41 msgid "Last Name" -msgstr "" +msgstr "Sobrenome" #: templates/InvenTree/settings/user.html:55 msgid "The following email addresses are associated with your account:" -msgstr "" +msgstr "Os seguintes endereços de e-mail estão associados à sua conta:" #: templates/InvenTree/settings/user.html:76 msgid "Verified" -msgstr "" +msgstr "Verificado" #: templates/InvenTree/settings/user.html:78 msgid "Unverified" -msgstr "" +msgstr "Não verificado" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" -msgstr "" +msgstr "Principal" #: templates/InvenTree/settings/user.html:86 msgid "Make Primary" -msgstr "" +msgstr "Tornar principal" #: templates/InvenTree/settings/user.html:87 msgid "Re-send Verification" -msgstr "" +msgstr "Reenviar verificação" #: templates/InvenTree/settings/user.html:96 msgid "Warning:" -msgstr "" +msgstr "Atenção:" #: templates/InvenTree/settings/user.html:97 msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc." -msgstr "" +msgstr "Atualmente, você não tem nenhum endereço de e-mail configurado. Você deveria realmente adicionar um endereço de e-mail para receber notificações, redefinir sua senha, etc." #: templates/InvenTree/settings/user.html:105 msgid "Add Email Address" -msgstr "" +msgstr "Adicionar endereço de E-mail" #: templates/InvenTree/settings/user.html:110 msgid "Add Email" -msgstr "" +msgstr "Adicionar e-mail" #: templates/InvenTree/settings/user.html:120 msgid "Multifactor" -msgstr "" +msgstr "Multifator" #: templates/InvenTree/settings/user.html:125 msgid "You have these factors available:" -msgstr "" +msgstr "Você tem estes fatores disponíveis:" #: templates/InvenTree/settings/user.html:135 msgid "TOTP" -msgstr "" +msgstr "TOTP" #: templates/InvenTree/settings/user.html:141 msgid "Static" -msgstr "" +msgstr "Estático" #: templates/InvenTree/settings/user.html:150 msgid "Multifactor authentication is not configured for your account" -msgstr "" +msgstr "A autenticação de múltiplos fatores não está configurada para sua conta" #: templates/InvenTree/settings/user.html:157 msgid "Change factors" -msgstr "" +msgstr "Alterar fatores" #: templates/InvenTree/settings/user.html:158 msgid "Setup multifactor" -msgstr "" +msgstr "Configurar multifator" #: templates/InvenTree/settings/user.html:160 msgid "Remove multifactor" -msgstr "" +msgstr "Remover multifator" #: templates/InvenTree/settings/user.html:168 msgid "Active Sessions" -msgstr "" +msgstr "Sessões Ativas" #: templates/InvenTree/settings/user.html:174 msgid "Log out active sessions (except this one)" -msgstr "" +msgstr "Encerrar sessões ativas (exceto esta)" #: templates/InvenTree/settings/user.html:175 msgid "Log Out Active Sessions" -msgstr "" +msgstr "Encerrar Sessões Ativas" #: templates/InvenTree/settings/user.html:184 msgid "unknown on unknown" -msgstr "" +msgstr "desconhecido em desconhecido" #: templates/InvenTree/settings/user.html:185 msgid "unknown" -msgstr "" +msgstr "desconhecido" #: templates/InvenTree/settings/user.html:189 msgid "IP Address" -msgstr "" +msgstr "Endereço IP" #: templates/InvenTree/settings/user.html:190 msgid "Device" -msgstr "" +msgstr "Dispositivo" #: templates/InvenTree/settings/user.html:191 msgid "Last Activity" -msgstr "" +msgstr "Última Atividade" #: templates/InvenTree/settings/user.html:204 #, python-format msgid "%(time)s ago (this session)" -msgstr "" +msgstr "%(time)s atrás (esta sessão)" #: templates/InvenTree/settings/user.html:206 #, python-format msgid "%(time)s ago" -msgstr "" +msgstr "%(time)s atrás" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "" +msgstr "Você realmente deseja remover o endereço de e-mail selecionado?" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" -msgstr "" +msgstr "Definições de Exibição" #: templates/InvenTree/settings/user_display.html:29 msgid "Theme Settings" -msgstr "" +msgstr "Configurações de tema" #: templates/InvenTree/settings/user_display.html:39 msgid "Select theme" -msgstr "" +msgstr "Selecionar tema" #: templates/InvenTree/settings/user_display.html:50 msgid "Set Theme" -msgstr "" +msgstr "Definir Tema" #: templates/InvenTree/settings/user_display.html:58 msgid "Language Settings" -msgstr "" +msgstr "Configurações de idioma" #: templates/InvenTree/settings/user_display.html:67 msgid "Select language" -msgstr "" +msgstr "Selecionar idioma" #: templates/InvenTree/settings/user_display.html:83 #, python-format msgid "%(lang_translated)s%% translated" -msgstr "" +msgstr "%(lang_translated)s%% traduzido" #: templates/InvenTree/settings/user_display.html:85 msgid "No translations available" -msgstr "" +msgstr "Não há traduções disponíveis" #: templates/InvenTree/settings/user_display.html:92 msgid "Set Language" -msgstr "" +msgstr "Definir Idioma" #: templates/InvenTree/settings/user_display.html:95 msgid "Some languages are not complete" -msgstr "" +msgstr "Alguns idiomas não estão completos" #: templates/InvenTree/settings/user_display.html:97 msgid "Show only sufficient" -msgstr "" +msgstr "Mostrar apenas o suficiente" #: templates/InvenTree/settings/user_display.html:99 msgid "and hidden." -msgstr "" +msgstr "e oculto." #: templates/InvenTree/settings/user_display.html:99 msgid "Show them too" -msgstr "" +msgstr "Mostrar outros também" #: templates/InvenTree/settings/user_display.html:106 msgid "Help the translation efforts!" -msgstr "" +msgstr "Ajude os esforços de tradução!" #: templates/InvenTree/settings/user_display.html:107 msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." -msgstr "" +msgstr "A tradução nativa do aplicativo web é contribuição da comunidade pelo crowdin. Contribuições são encorajadas e bem vindas." #: templates/InvenTree/settings/user_display.html:108 msgid "InvenTree Translation Project" -msgstr "" +msgstr "Projeto de Tradução do InvenTree" #: templates/InvenTree/settings/user_homepage.html:9 msgid "Home Page Settings" -msgstr "" +msgstr "Configuração da Página Inicial" #: templates/InvenTree/settings/user_search.html:9 msgid "Search Settings" -msgstr "" +msgstr "Configurações de Busca" #: templates/InvenTree/settings/user_sso.html:9 msgid "Single Sign On Accounts" -msgstr "" +msgstr "Contas de Login Único" #: templates/InvenTree/settings/user_sso.html:16 msgid "You can sign in to your account using any of the following third party accounts:" -msgstr "" +msgstr "Você pode entrar na sua conta usando qualquer uma das seguintes contas de terceiros:" #: templates/InvenTree/settings/user_sso.html:52 msgid "There are no social network accounts connected to this account." -msgstr "" +msgstr "Não há nenhuma rede social conectadas a essa conta." #: templates/InvenTree/settings/user_sso.html:58 msgid "Add SSO Account" -msgstr "" +msgstr "Adicionar conta SSO" #: templates/InvenTree/settings/user_sso.html:67 msgid "Single Sign On is not enabled for this server" -msgstr "" +msgstr "Acesso único não está habilitado para este servidor" #: templates/about.html:9 msgid "InvenTree Version" -msgstr "" +msgstr "Versão do InvenTree" #: templates/about.html:14 msgid "Development Version" -msgstr "" +msgstr "Versão de desenvolvimento" #: templates/about.html:17 msgid "Up to Date" -msgstr "" +msgstr "Atualizado" #: templates/about.html:19 msgid "Update Available" -msgstr "" +msgstr "Atualização disponível" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "Ramo de commits" + +#: templates/about.html:49 msgid "InvenTree Documentation" -msgstr "" +msgstr "Documentação do InvenTree" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" -msgstr "" +msgstr "Versão do API" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" -msgstr "" +msgstr "Versão do Python" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" -msgstr "" +msgstr "Versão Django" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" -msgstr "" +msgstr "Veja o código no GitHub" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" -msgstr "" +msgstr "Créditos" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" -msgstr "" - -#: templates/about.html:77 -msgid "Submit Bug Report" -msgstr "" - -#: templates/about.html:84 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 -msgid "copy to clipboard" -msgstr "" +msgstr "Aplicativo Móvel" #: templates/about.html:84 +msgid "Submit Bug Report" +msgstr "Enviar relatório de erro" + +#: templates/about.html:91 templates/clip.html:4 +#: templates/js/translated/helpers.js:585 +msgid "copy to clipboard" +msgstr "copiar para área de transferência" + +#: templates/about.html:91 msgid "copy version information" -msgstr "" +msgstr "copiar informações da versão" #: templates/account/base.html:66 templates/navbar.html:17 msgid "InvenTree logo" -msgstr "" +msgstr "Logotipo InvenTree" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:9 msgid "Confirm Email Address" -msgstr "" +msgstr "Confirmar endereço de e-mail" #: templates/account/email_confirm.html:15 #, python-format msgid "Please confirm that %(email)s is an email address for user %(user_display)s." -msgstr "" +msgstr "Por favor, confirme que %(email)s é um endereço de e-mail para o usuário %(user_display)s." -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Confirmar" #: templates/account/email_confirm.html:29 #, python-format msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request." -msgstr "" +msgstr "Este link de confirmação expirou ou é inválido. Por favor, envie uma nova solicitação de confirmação de e-mail." #: templates/account/login.html:6 templates/account/login.html:17 #: templates/account/login.html:38 templates/socialaccount/login.html:5 msgid "Sign In" -msgstr "" +msgstr "Acessar" #: templates/account/login.html:21 msgid "Not a member?" -msgstr "" +msgstr "Não é membro?" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 #: templates/socialaccount/signup.html:20 msgid "Sign Up" -msgstr "" +msgstr "Cadastre-se" #: templates/account/login.html:45 msgid "Forgot Password?" -msgstr "" +msgstr "Esqueceu a senha?" #: templates/account/login.html:53 msgid "or log in with" -msgstr "" +msgstr "ou acesse com" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:20 msgid "Sign Out" -msgstr "" +msgstr "Sair" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" -msgstr "" +msgstr "Você tem certeza que deseja sair?" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 #: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 msgid "Return to Site" -msgstr "" +msgstr "Retornar ao site" #: templates/account/password_reset.html:5 #: templates/account/password_reset.html:12 msgid "Password Reset" -msgstr "" +msgstr "Redefinir senha" #: templates/account/password_reset.html:18 msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." -msgstr "" +msgstr "Esqueceu sua senha? Digite seu endereço de e-mail abaixo e enviaremos um e-mail para você redefinir sua senha." #: templates/account/password_reset.html:23 msgid "Reset My Password" -msgstr "" +msgstr "Redefinir Minha Senha" #: templates/account/password_reset.html:27 templates/account/signup.html:37 msgid "This function is currently disabled. Please contact an administrator." -msgstr "" +msgstr "Esta função está desativada. Por favor, contate um administrador." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" -msgstr "" +msgstr "Token Inválido" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." -msgstr "" +msgstr "O link de redefinição de senha era inválido, possivelmente porque já foi usado. Solicite um nova redefinição de senha." #: templates/account/password_reset_from_key.html:18 msgid "Change password" -msgstr "" +msgstr "Alterar senha" #: templates/account/password_reset_from_key.html:22 msgid "Your password is now changed." -msgstr "" +msgstr "Sua senha foi alterada." #: templates/account/signup.html:13 #, python-format msgid "Already have an account? Then please sign in." -msgstr "" +msgstr "Já tem uma conta? Então, por favor Entrar." #: templates/account/signup.html:28 msgid "Use a SSO-provider for signup" -msgstr "" +msgstr "Use um provedor SSO para inscrição" #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" -msgstr "" +msgstr "Registro fechado" #: templates/account/signup_closed.html:10 msgid "Sign up is currently closed." -msgstr "" +msgstr "Registro está atualmente fechado." #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 #: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 msgid "Return to login page" -msgstr "" +msgstr "Voltar a página de acesso" #: templates/admin_button.html:8 msgid "View in administration panel" -msgstr "" +msgstr "Ver no Painel de Administração" #: templates/allauth_2fa/authenticate.html:5 msgid "Two-Factor Authentication" -msgstr "" +msgstr "Autenticação de dois fatores" #: templates/allauth_2fa/authenticate.html:13 msgid "Authenticate" -msgstr "" +msgstr "Autenticar" #: templates/allauth_2fa/backup_tokens.html:6 msgid "Two-Factor Authentication Backup Tokens" -msgstr "" +msgstr "Backup de Tokens de Autenticação Dois-Fatores" #: templates/allauth_2fa/backup_tokens.html:17 msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones." -msgstr "" +msgstr "Os tokens de backup foram gerados, mas não são revelados aqui por razões de segurança. Pressione o botão abaixo para gerar novos." #: templates/allauth_2fa/backup_tokens.html:20 msgid "No backup tokens are available. Press the button below to generate some." -msgstr "" +msgstr "Nenhum token de backup está disponível. Pressione o botão abaixo para gerar alguns." #: templates/allauth_2fa/backup_tokens.html:28 msgid "Generate Tokens" -msgstr "" +msgstr "Gerar Tokens" #: templates/allauth_2fa/remove.html:6 msgid "Disable Two-Factor Authentication" -msgstr "" +msgstr "Desativar Autenticação de Dois Fatores" #: templates/allauth_2fa/remove.html:9 msgid "Are you sure?" -msgstr "" +msgstr "Você tem certeza?" #: templates/allauth_2fa/remove.html:17 msgid "Disable 2FA" -msgstr "" +msgstr "Desativar A2F" #: templates/allauth_2fa/setup.html:6 msgid "Setup Two-Factor Authentication" -msgstr "" +msgstr "Configurar Autenticação de Dois Fatores" #: templates/allauth_2fa/setup.html:10 msgid "Step 1" -msgstr "" +msgstr "Passo 1" #: templates/allauth_2fa/setup.html:14 msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." -msgstr "" +msgstr "Escaneie o código QR abaixo com um gerador de token de sua escolha (por exemplo, Google Authenticator)." #: templates/allauth_2fa/setup.html:23 msgid "Step 2" -msgstr "" +msgstr "Passo 2" #: templates/allauth_2fa/setup.html:27 msgid "Input a token generated by the app:" -msgstr "" +msgstr "Insira um token gerado pelo aplicativo:" #: templates/allauth_2fa/setup.html:37 msgid "Verify" -msgstr "" +msgstr "Verificar" #: templates/attachment_button.html:4 templates/js/translated/attachment.js:70 msgid "Add Link" -msgstr "" +msgstr "Adicionar Link" #: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 msgid "Add Attachment" -msgstr "" - -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" +msgstr "Adicionar anexo" #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "Identificador de Código de Barras" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" -msgstr "" +msgstr "Reinicialização do Servidor é Necessária" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" +msgstr "Uma opção de configuração foi alterada, o que requer uma reinicialização do servidor" + +#: templates/base.html:106 templates/base.html:116 +msgid "Contact your system administrator for further information" +msgstr "Contate seu administrador de sistema para mais informações" + +#: templates/base.html:113 +msgid "Pending Database Migrations" msgstr "" -#: templates/base.html:105 -msgid "Contact your system administrator for further information" +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" msgstr "" #: templates/email/build_order_completed.html:9 @@ -9467,3126 +9946,3291 @@ msgstr "" #: templates/email/purchase_order_received.html:9 #: templates/email/return_order_received.html:9 msgid "Click on the following link to view this order" -msgstr "" +msgstr "Clique no link abaixo para ver este pedido" #: templates/email/build_order_required_stock.html:7 msgid "Stock is required for the following build order" -msgstr "" +msgstr "Estoque é necessário para o pedido de produção a seguir" #: templates/email/build_order_required_stock.html:8 #, python-format msgid "Build order %(build)s - building %(quantity)s x %(part)s" -msgstr "" +msgstr "O pedido de Produção %(build)s - construindo %(quantity)s x %(part)s" #: templates/email/build_order_required_stock.html:10 msgid "Click on the following link to view this build order" -msgstr "" +msgstr "Clique no link abaixo para ver este pedido de produção" #: templates/email/build_order_required_stock.html:14 msgid "The following parts are low on required stock" -msgstr "" +msgstr "As peças a seguir estão abaixo do estoque requerido" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" -msgstr "" +msgstr "Quantidade Requerida" #: templates/email/build_order_required_stock.html:38 #: templates/email/low_stock_notification.html:30 msgid "You are receiving this email because you are subscribed to notifications for this part " -msgstr "" +msgstr "Você está recebendo este e-mail porque está inscrito para notificações dessa peça " #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" -msgstr "" +msgstr "Clique no link abaixo para ver esta peça" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" -msgstr "" +msgstr "Quantidade Mínima" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" -msgstr "" +msgstr "Sem Resposta" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" -msgstr "" +msgstr "Sem resposta do servidor InvenTree" #: templates/js/translated/api.js:232 msgid "Error 400: Bad request" -msgstr "" +msgstr "Erro 400: Requisição ruim" #: templates/js/translated/api.js:233 msgid "API request returned error code 400" -msgstr "" +msgstr "Solicitação de API retornou o código de erro 400" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" -msgstr "" +msgstr "Erro 401: Não Autenticado" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" -msgstr "" +msgstr "Credenciais de autenticação não fornecidas" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" -msgstr "" +msgstr "Erro 403: Permissão Negada" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "" +msgstr "Você não tem as permissões necessárias para acessar esta função" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" -msgstr "" +msgstr "Erro 404: Recurso Não Encontrado" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" -msgstr "" +msgstr "O recurso requisitado não pôde ser encontrado no servidor" #: templates/js/translated/api.js:252 msgid "Error 405: Method Not Allowed" -msgstr "" +msgstr "Erro 405: Método Não Permitido" #: templates/js/translated/api.js:253 msgid "HTTP method not allowed at URL" -msgstr "" +msgstr "Método HTTP não permitido na URL" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "" +msgstr "Erro 408: Tempo Limite" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" -msgstr "" +msgstr "Tempo limite da conexão atingido ao solicitar dados do servidor" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 -msgid "Error code" +msgid "The server is currently unavailable" msgstr "" +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "Código de erro não resolvido" + +#: templates/js/translated/api.js:266 +msgid "Error code" +msgstr "Código do erro" + #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" -msgstr "" +msgstr "Todos os anexos selecionados serão excluídos" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "Excluir Anexos" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "Apagar anexos" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "Ações de anexos" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "" +msgstr "Nenhum anexo encontrado" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "" - -#: templates/js/translated/attachment.js:326 -msgid "Upload Date" -msgstr "" +msgstr "Editar anexo" #: templates/js/translated/attachment.js:346 -msgid "Edit attachment" -msgstr "" +msgid "Upload Date" +msgstr "Data do carregamento" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:366 +msgid "Edit attachment" +msgstr "Editar anexos" + +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" -msgstr "" +msgstr "Apagar anexo" #: templates/js/translated/barcode.js:43 msgid "Scan barcode data here using barcode scanner" -msgstr "" +msgstr "Leia os dados de código de barras aqui usando um leitor de código de barras" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "" +msgstr "Digitar código de barras" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" -msgstr "" +msgstr "Ler código de barras usando webcam conectada" #: templates/js/translated/barcode.js:138 msgid "Enter optional notes for stock transfer" -msgstr "" +msgstr "Digite notas opcionais para transferência de estoque" #: templates/js/translated/barcode.js:139 msgid "Enter notes" -msgstr "" +msgstr "Inserir anotações" #: templates/js/translated/barcode.js:188 msgid "Server error" -msgstr "" +msgstr "Erro no servidor" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" -msgstr "" +msgstr "Resposta desconhecida do servidor" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" -msgstr "" +msgstr "Resposta do servidor inválida" #: templates/js/translated/barcode.js:372 msgid "Scan barcode data" -msgstr "" +msgstr "Ler dados do código de barras" #: templates/js/translated/barcode.js:420 templates/navbar.html:114 msgid "Scan Barcode" -msgstr "" +msgstr "Ler Código de Barras" #: templates/js/translated/barcode.js:440 msgid "No URL in response" -msgstr "" +msgstr "Nenhuma URL em resposta" #: templates/js/translated/barcode.js:481 msgid "This will remove the link to the associated barcode" -msgstr "" +msgstr "Isto irá remover o link com o código de barras associado" #: templates/js/translated/barcode.js:487 msgid "Unlink" -msgstr "" +msgstr "Desassociar" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" -msgstr "" +msgstr "Remover item de estoque" #: templates/js/translated/barcode.js:593 msgid "Scan Stock Items Into Location" -msgstr "" +msgstr "Escanear Itens de Estoque para Local" #: templates/js/translated/barcode.js:595 msgid "Scan stock item barcode to check in to this location" -msgstr "" +msgstr "Digitalize o código de barras de itens padrão para fazer check-in para esta localização" #: templates/js/translated/barcode.js:598 #: templates/js/translated/barcode.js:795 msgid "Check In" -msgstr "" +msgstr "Registrar-se" #: templates/js/translated/barcode.js:630 msgid "No barcode provided" -msgstr "" +msgstr "Nenhum código de barras fornecido" #: templates/js/translated/barcode.js:670 msgid "Stock Item already scanned" -msgstr "" +msgstr "Item de estoque já escaneado" #: templates/js/translated/barcode.js:674 msgid "Stock Item already in this location" -msgstr "" +msgstr "Item de estoque já está nesta localização" #: templates/js/translated/barcode.js:681 msgid "Added stock item" -msgstr "" +msgstr "Item de estoque adicionado" #: templates/js/translated/barcode.js:690 msgid "Barcode does not match valid stock item" -msgstr "" +msgstr "Código de barras não corresponde a item de estoque válido" #: templates/js/translated/barcode.js:709 msgid "Scan Stock Container Into Location" -msgstr "" +msgstr "Varredura de contêiner do estoque para localização" #: templates/js/translated/barcode.js:711 msgid "Scan stock container barcode to check in to this location" -msgstr "" +msgstr "Digitalize o código de barras do contêiner para fazer check-in para esta localização" #: templates/js/translated/barcode.js:745 msgid "Barcode does not match valid stock location" -msgstr "" +msgstr "Código de barras não corresponde ao local de estoque válido" #: templates/js/translated/barcode.js:789 msgid "Check Into Location" -msgstr "" +msgstr "Registrar no local" #: templates/js/translated/barcode.js:858 #: templates/js/translated/barcode.js:867 msgid "Barcode does not match a valid location" -msgstr "" +msgstr "Código de barras não corresponde a um local válido" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" -msgstr "" +msgstr "Criar item LDM" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" -msgstr "" +msgstr "Mostrar dados da fila" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "" +msgstr "Dados da Linha" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" -msgstr "" +msgstr "Fechar" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" -msgstr "" - -#: templates/js/translated/bom.js:350 -msgid "Multi Level BOM" -msgstr "" +msgstr "Baixar modelo de LDM" #: templates/js/translated/bom.js:351 -msgid "Include BOM data for subassemblies" -msgstr "" +msgid "Multi Level BOM" +msgstr "LDM Multinível" -#: templates/js/translated/bom.js:356 -msgid "Levels" -msgstr "" +#: templates/js/translated/bom.js:352 +msgid "Include BOM data for subassemblies" +msgstr "Incluir dados LDM para subconjuntos" #: templates/js/translated/bom.js:357 -msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "" +msgid "Levels" +msgstr "Níveis" -#: templates/js/translated/bom.js:364 -msgid "Include Alternative Parts" -msgstr "" +#: templates/js/translated/bom.js:358 +msgid "Select maximum number of BOM levels to export (0 = all levels)" +msgstr "Selecione o número máximo de níveis LDM para exportar (0= todos os níveis)" #: templates/js/translated/bom.js:365 -msgid "Include alternative parts in exported BOM" -msgstr "" +msgid "Include Alternative Parts" +msgstr "Incluir Peças Alternativas" -#: templates/js/translated/bom.js:370 -msgid "Include Parameter Data" -msgstr "" +#: templates/js/translated/bom.js:366 +msgid "Include alternative parts in exported BOM" +msgstr "Incluir peças alternativas na LDM exportada" #: templates/js/translated/bom.js:371 -msgid "Include part parameter data in exported BOM" -msgstr "" +msgid "Include Parameter Data" +msgstr "Incluir Parâmetros de Dados" -#: templates/js/translated/bom.js:376 -msgid "Include Stock Data" -msgstr "" +#: templates/js/translated/bom.js:372 +msgid "Include part parameter data in exported BOM" +msgstr "Incluir dados do parâmetro da peça na LDM exportada" #: templates/js/translated/bom.js:377 -msgid "Include part stock data in exported BOM" -msgstr "" +msgid "Include Stock Data" +msgstr "Incluir Dados do Estoque" -#: templates/js/translated/bom.js:382 -msgid "Include Manufacturer Data" -msgstr "" +#: templates/js/translated/bom.js:378 +msgid "Include part stock data in exported BOM" +msgstr "Incluir dados do parâmetro do estoque na LDM exportada" #: templates/js/translated/bom.js:383 -msgid "Include part manufacturer data in exported BOM" -msgstr "" +msgid "Include Manufacturer Data" +msgstr "Incluir Dados do Fabricante" -#: templates/js/translated/bom.js:388 -msgid "Include Supplier Data" -msgstr "" +#: templates/js/translated/bom.js:384 +msgid "Include part manufacturer data in exported BOM" +msgstr "Incluir dados da peça do fabricante na LDM exportada" #: templates/js/translated/bom.js:389 -msgid "Include part supplier data in exported BOM" -msgstr "" +msgid "Include Supplier Data" +msgstr "Incluir Dodos do Fornecedor" -#: templates/js/translated/bom.js:394 -msgid "Include Pricing Data" -msgstr "" +#: templates/js/translated/bom.js:390 +msgid "Include part supplier data in exported BOM" +msgstr "Incluir dados da peça do fornecedor na LDM exportada" #: templates/js/translated/bom.js:395 +msgid "Include Pricing Data" +msgstr "Incluir Dados de Preço" + +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" -msgstr "" +msgstr "Incluir dados de preço na LDM exportada" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" -msgstr "" +msgstr "Remover peça substituta" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" -msgstr "" +msgstr "Selecione e adicione uma nova peça substituída usando a entrada abaixo" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" -msgstr "" +msgstr "Tem certeza que deseja remover este link peça substituta?" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" -msgstr "" - -#: templates/js/translated/bom.js:700 -msgid "Add Substitute" -msgstr "" +msgstr "Remover Peça Substituta" #: templates/js/translated/bom.js:701 +msgid "Add Substitute" +msgstr "Adicionar Substituto" + +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" -msgstr "" +msgstr "Editar Itens Substitutos da LDM" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" -msgstr "" +msgstr "Todos os Itens da LDM serão excluídos" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" -msgstr "" +msgstr "Deletar itens da LDM selecionados?" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "Excluir itens" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" -msgstr "" +msgstr "Carregar LDM para a submontagem" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" -msgstr "" +msgstr "Substitutos Disponíveis" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" -msgstr "" +msgstr "Estoque de variantes permitido" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" -msgstr "" +msgstr "Substitutos" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" -msgstr "" +msgstr "Preços da LDM estão completos" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" -msgstr "" +msgstr "Preços da LDM estão incompletos" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" -msgstr "" +msgstr "Nenhum preço disponível" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" -msgstr "" +msgstr "Nenhum Estoque Disponível" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" -msgstr "" +msgstr "Incluir variante e substituição de estoque" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" -msgstr "" +msgstr "Incluir variantes de estoque" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" -msgstr "" +msgstr "Incluir estoque substituto" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" -msgstr "" +msgstr "Item Consumível" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" -msgstr "" +msgstr "Validar Item LDM" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" -msgstr "" +msgstr "Esta linha foi validada" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" -msgstr "" +msgstr "Editar peças substitutas" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" -msgstr "" +msgstr "Editar Item LDM" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" -msgstr "" +msgstr "Apagar Item LDM" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" -msgstr "" +msgstr "Ver LDM" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" -msgstr "" +msgstr "Nenhum item LDM encontrado" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" -msgstr "" +msgstr "Peça Requerida" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" -msgstr "" +msgstr "Herdado da LDM paternal" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" -msgstr "" +msgstr "Editar Pedido de Produção" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" -msgstr "" +msgstr "Criar Pedido de Produção" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" -msgstr "" +msgstr "Cancelar Pedido de Produção" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" -msgstr "" +msgstr "Tem certeza que deseja cancelar essa produção?" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" -msgstr "" +msgstr "Itens de estoque foram alocados para este pedido de produção" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" -msgstr "" +msgstr "Há saídas incompletas restantes para este pedido de produção" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" -msgstr "" +msgstr "Pedido de produção está pronto para ser concluído" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" -msgstr "" +msgstr "Este pedido de produção não pode ser concluído, pois há saídas incompletas" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" -msgstr "" +msgstr "Pedido de Produção está incompleto" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" -msgstr "" +msgstr "Pedido de Produção Completo" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" -msgstr "" +msgstr "Próximo número de série disponível" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "" +msgstr "Último número de série" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" -msgstr "" +msgstr "A Lista de Materiais contém peças rastreáveis" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" -msgstr "" +msgstr "Saída de produção deve ser gerada individualmente" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" -msgstr "" +msgstr "Peças rastreáveis podem ter números de séries especificados" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "" +msgstr "Digite números de série para gerar várias saídas de produção simples" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" -msgstr "" +msgstr "Criar Saída de Produção" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" -msgstr "" - -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" -msgstr "" +msgstr "Alocar itens de estoque para a saída de produção" #: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" +msgstr "Desalocar estoque da saída de produção" + +#: templates/js/translated/build.js:436 msgid "Complete build output" -msgstr "" +msgstr "Concluir saída de produção" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" -msgstr "" +msgstr "Sucatear saída de produção" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" -msgstr "" +msgstr "Excluir saída de produção" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" -msgstr "" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" +msgstr "Tem certeza que deseja distribuir os itens de estoque selecionados desta compilação?" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" -msgstr "" - -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 -msgid "Select Build Outputs" -msgstr "" - -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 -msgid "At least one build output must be selected" -msgstr "" - -#: templates/js/translated/build.js:581 -msgid "Selected build outputs will be marked as complete" -msgstr "" - -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 -msgid "Output" -msgstr "" - -#: templates/js/translated/build.js:609 -msgid "Complete Build Outputs" -msgstr "" - -#: templates/js/translated/build.js:706 -msgid "Selected build outputs will be marked as scrapped" -msgstr "" - -#: templates/js/translated/build.js:708 -msgid "Scrapped output are marked as rejected" -msgstr "" - -#: templates/js/translated/build.js:709 -msgid "Allocated stock items will no longer be available" -msgstr "" - -#: templates/js/translated/build.js:710 -msgid "The completion status of the build order will not be adjusted" -msgstr "" - -#: templates/js/translated/build.js:737 -msgid "Scrap Build Outputs" -msgstr "" - -#: templates/js/translated/build.js:827 -msgid "Selected build outputs will be deleted" -msgstr "" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" +msgstr "Desalocar Items de Estoque" +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 #: templates/js/translated/build.js:829 -msgid "Build output data will be permanently deleted" -msgstr "" +msgid "Select Build Outputs" +msgstr "Selecionar Saída de Produção" +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 #: templates/js/translated/build.js:830 +msgid "At least one build output must be selected" +msgstr "Ao menos uma saída de produção deve ser selecionada" + +#: templates/js/translated/build.js:590 +msgid "Selected build outputs will be marked as complete" +msgstr "Saídas de produção selecionadas serão marcadas como completas" + +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 +msgid "Output" +msgstr "Saída" + +#: templates/js/translated/build.js:622 +msgid "Complete Build Outputs" +msgstr "Concluir Saídas de Produção" + +#: templates/js/translated/build.js:719 +msgid "Selected build outputs will be marked as scrapped" +msgstr "Saídas de produção selecionadas serão marcadas como sucatas" + +#: templates/js/translated/build.js:721 +msgid "Scrapped output are marked as rejected" +msgstr "Saída sucateada é marcada como rejeitada" + +#: templates/js/translated/build.js:722 +msgid "Allocated stock items will no longer be available" +msgstr "Itens de estoque alocados não estarão mais disponíveis" + +#: templates/js/translated/build.js:723 +msgid "The completion status of the build order will not be adjusted" +msgstr "O estado de conclusão do pedido de produção não será ajustado" + +#: templates/js/translated/build.js:754 +msgid "Scrap Build Outputs" +msgstr "Sucatear saídas de produção" + +#: templates/js/translated/build.js:844 +msgid "Selected build outputs will be deleted" +msgstr "Saídas de produção serão apagadas" + +#: templates/js/translated/build.js:846 +msgid "Build output data will be permanently deleted" +msgstr "Dados da saída de produção serão excluídos permanentemente" + +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" -msgstr "" +msgstr "Itens de estoque alocados serão retornados ao estoque" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" -msgstr "" +msgstr "Deletar Saída de Produção" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" -msgstr "" +msgstr "Nenhuma alocação de pedido de produção encontrado" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "Quantidade Alocada" + +#: templates/js/translated/build.js:995 msgid "Location not specified" -msgstr "" +msgstr "Local não especificado" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "Saídas concluídas" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "Sucatear saídas" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "Exlcuir saídas" + +#: templates/js/translated/build.js:1107 msgid "build output" -msgstr "" +msgstr "construir saída" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" -msgstr "" +msgstr "construir saídas" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "Ações da saída de produção" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" -msgstr "" +msgstr "Nenhuma saída de produção ativa encontrada" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" -msgstr "" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" +msgstr "Linhas alocadas" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" -msgstr "" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" +msgstr "Testes necessarios" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" -msgstr "" +msgstr "Selecionar peças" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" -msgstr "" +msgstr "Você deve selecionar ao menos uma peça para alocar" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" -msgstr "" +msgstr "Especifique a quantidade de estoque alocado" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" -msgstr "" +msgstr "Todas as peças alocadas" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" -msgstr "" +msgstr "Todas as peças selecionadas foram completamente alocadas" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" -msgstr "" +msgstr "Selecione o local de origem (deixe em branco para tirar de todos os locais)" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" -msgstr "" +msgstr "Alocar itens de estoque para o Pedido de Produção" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" -msgstr "" +msgstr "Nenhum local de estoque correspondente" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" -msgstr "" +msgstr "Nenhum item de estoque correspondente" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" -msgstr "" +msgstr "Alocação Automática de Estoque" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "" +msgstr "Itens de estoque serão automaticamente alocados para este pedido de produção, de acordo com as diretrizes fornecidas" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" -msgstr "" +msgstr "Se um local for especificado, o estoque será apenas alocado deste local" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" -msgstr "" +msgstr "Se stock é considerado intercambiável, será alocado a partir da primeira localização encontrada" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" -msgstr "" +msgstr "Se estoque substituto é permitido, será utilizado quando o estoque primário não for encontrado" -#: templates/js/translated/build.js:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" -msgstr "" +msgstr "Alocar Itens de Estoque" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" -msgstr "" +msgstr "Nenhuma produção corresponde a consulta" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" -msgstr "" +msgstr "Selecionar" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" -msgstr "" +msgstr "Pedido de produção está atrasada" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" -msgstr "" +msgstr "Progresso" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" -msgstr "" +msgstr "Sem informações de usuário" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" -msgstr "" +msgstr "grupo" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" -msgstr "" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" +msgstr "Editar alocação de estoque" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "Excluir alocação de estoque" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "Editar Alocação" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "Remover Alocação" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "linha de produção" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "linhas de produção" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "Nenhuma linha produção encontrada" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "Peça rastreável" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "Quantidade unitária" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "Estoque insuficiente disponível" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "Estoque suficiente disponível" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "Item Consumível" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "Item rastreado" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "Estoque de produção" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "Pedir Estoque" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "Alocar Estoque" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "Remover alocação de estoque" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "" +msgstr "Adicionar Fabricante" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "" +msgstr "Adicionar Peça do Fabricante" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "" +msgstr "Editar Peça do Fabricante" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "" +msgstr "Adicionar Fornecedor" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" -msgstr "" +msgstr "Adicionar Fornecedor da Peça" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" -msgstr "" +msgstr "Todas as peças selecionadas do fornecedor serão excluídas" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" -msgstr "" +msgstr "Excluir Peças do Fornecedor" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" -msgstr "" +msgstr "Adicionar nova Empresa" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" -msgstr "" +msgstr "Peças Fornecidas" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "" +msgstr "Peças Fabricadas" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" -msgstr "" +msgstr "Nenhuma informação da empresa encontrada" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" -msgstr "" +msgstr "Criar Novo Contato" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "" +msgstr "Editar Contato" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" -msgstr "" - -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 -msgid "Role" -msgstr "" +msgstr "Todos os contatos selecionados serão apagados" #: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 +msgid "Role" +msgstr "Função" + +#: templates/js/translated/company.js:676 msgid "Delete Contacts" -msgstr "" +msgstr "Excluir Contatos" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" -msgstr "" +msgstr "Nenhum contato encontrado" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "" +msgstr "Número de telefone" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "" +msgstr "Endereço de e-mail" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" -msgstr "" +msgstr "Excluir contato" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "Criar Novo Endereço" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "Editar o Endereço" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "Todos os endereços selecionados serão excluídos" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "Excluir Endereço" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "Nenhum endereço encontrado" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "Cidade Postal" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "Estado/Provincia" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "Notas do entregador" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "Notas internas" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "Excluir Endereço" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" -msgstr "" +msgstr "Todas as peças do fabricante selecionado serão excluídas" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" -msgstr "" +msgstr "Excluir Peças do Fabricante" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" -msgstr "" +msgstr "Todos os parâmetros selecionados serão excluídos" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" -msgstr "" +msgstr "Excluir Parâmetros" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "Pedir peças" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "Apagar peças do fabricante" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "Ações de Peça do Fabricante" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" -msgstr "" +msgstr "Nenhuma peça do fabricante encontrado" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" -msgstr "" +msgstr "Modelo de peça" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" -msgstr "" +msgstr "Peça montada" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" -msgstr "" +msgstr "Nenhum parâmetro encontrado" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" -msgstr "" +msgstr "Editar parâmetros" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" -msgstr "" +msgstr "Excluir parâmetro" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" -msgstr "" +msgstr "Editar Parâmetro" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" -msgstr "" +msgstr "Excluir Parâmetro" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "Excluir peças do fornecedor" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" -msgstr "" +msgstr "Nenhum peça do fornecedor encontrado" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" -msgstr "" +msgstr "Unidade base" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" -msgstr "" +msgstr "Disponibilidade" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" -msgstr "" +msgstr "Editar fornecedor da peça" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" -msgstr "" +msgstr "Excluir peça do fornecedor" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" -msgstr "" +msgstr "Excluir quebras de preço" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" -msgstr "" +msgstr "Editar Quebra de Preço" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" -msgstr "" +msgstr "Nenhuma informação de quebra de preço" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "" +msgstr "Última atualização" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" -msgstr "" +msgstr "Editar quebra de preço" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" -msgstr "" +msgstr "Excluir quebra de preço" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" -msgstr "" +msgstr "verdadeiro" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" -msgstr "" +msgstr "falso" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "" +msgstr "Selecionar filtro" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" -msgstr "" +msgstr "Imprimir Etiquetas" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" -msgstr "" +msgstr "Imprimir Relatórios" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" -msgstr "" - -#: templates/js/translated/filters.js:351 -msgid "Reload table data" -msgstr "" - -#: templates/js/translated/filters.js:360 -msgid "Add new filter" -msgstr "" - -#: templates/js/translated/filters.js:368 -msgid "Clear all filters" -msgstr "" +msgstr "Baixar dados da tabela" #: templates/js/translated/filters.js:460 +msgid "Reload table data" +msgstr "Recarregar dados da tabela" + +#: templates/js/translated/filters.js:469 +msgid "Add new filter" +msgstr "Adicionar filtro" + +#: templates/js/translated/filters.js:477 +msgid "Clear all filters" +msgstr "Limpar todos os filtros" + +#: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "" +msgstr "Criar filtro" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" -msgstr "" +msgstr "Ação proibida" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" -msgstr "" +msgstr "Operação de criação não permitida" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" -msgstr "" +msgstr "Operação de atualização não permitida" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" -msgstr "" +msgstr "Operação de excluir não permitida" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" -msgstr "" +msgstr "Operação de visualização não permitidas" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" -msgstr "" +msgstr "Manter este formulário aberto" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" -msgstr "" +msgstr "Insira um número válido" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" -msgstr "" +msgstr "Há erros de formulário" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" -msgstr "" +msgstr "Nenhum resultado encontrado" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" -msgstr "" +msgstr "Buscando" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" -msgstr "" +msgstr "Limpar entrada" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" -msgstr "" +msgstr "Coluna de arquivos" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" -msgstr "" +msgstr "Nome do Campo" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" -msgstr "" +msgstr "Selecionar Colunas" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "" +msgstr "SIM" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "" +msgstr "NÃO" #: templates/js/translated/helpers.js:93 msgid "True" -msgstr "" +msgstr "Verdadeiro" #: templates/js/translated/helpers.js:94 msgid "False" -msgstr "" +msgstr "Falso" -#: templates/js/translated/label.js:58 -msgid "Select Printer" -msgstr "" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" +msgstr "Nenhuma parte necessária para produção" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" -msgstr "" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "Estoque Alocado" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" -msgstr "" +msgstr "Selecione os itens" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" -msgstr "" +msgstr "Nenhum item selecionado para impressão" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "" +msgstr "Nenhuma Etiqueta Encontrada" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" +msgstr "Nenhum modelo de etiqueta em que os itens selecionados foi encontrado" + +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "selecionado" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" -msgstr "" +msgstr "Etiquetas enviadas à impressora" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "" +msgstr "Cancelar" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" -msgstr "" +msgstr "Enviar" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" -msgstr "" +msgstr "Título do Formulário" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." -msgstr "" +msgstr "Aguardando o servidor..." -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" -msgstr "" +msgstr "Mostrar Informação do Erro" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" -msgstr "" +msgstr "Aceitar" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" -msgstr "" +msgstr "Carregar Dados" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" -msgstr "" +msgstr "Resposta inválida do servidor" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" -msgstr "" +msgstr "Dado de formulário faltando na resposta do servidor" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" -msgstr "" +msgstr "Erro ao postar os dados de formulários" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" -msgstr "" +msgstr "Dados de formulário faltando na resposta JSON" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" -msgstr "" +msgstr "Erro 400: Requisição Ruim" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" -msgstr "" +msgstr "Servidor retornou o código de erro 400" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" -msgstr "" +msgstr "Erro ao pedir dados de formulário" #: templates/js/translated/news.js:33 msgid "No news found" -msgstr "" +msgstr "Nenhuma notícia encontrada" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" -msgstr "" +msgstr "ID" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" -msgstr "" +msgstr "Idade" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" -msgstr "" +msgstr "Notificação" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" -msgstr "" +msgstr "Marcar como não lido" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" -msgstr "" +msgstr "Marcar como lido" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" -msgstr "" +msgstr "Nenhuma notificação pendente" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" -msgstr "" +msgstr "Notificações irão carregar aqui" #: templates/js/translated/order.js:89 msgid "Add Extra Line Item" -msgstr "" +msgstr "Adicionar item de linha extra" #: templates/js/translated/order.js:126 msgid "Export Order" -msgstr "" +msgstr "Ordem de Exportação" #: templates/js/translated/order.js:241 msgid "Duplicate Line" -msgstr "" +msgstr "Duplicar Linha" #: templates/js/translated/order.js:255 msgid "Edit Line" -msgstr "" +msgstr "Editar linha" #: templates/js/translated/order.js:268 msgid "Delete Line" -msgstr "" +msgstr "Excluir linha" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" -msgstr "" +msgstr "Nenhum item de linha encontrado" #: templates/js/translated/order.js:369 msgid "Duplicate line" -msgstr "" +msgstr "Linha duplicada" #: templates/js/translated/order.js:370 msgid "Edit line" -msgstr "" +msgstr "Editar linha" #: templates/js/translated/order.js:374 msgid "Delete line" -msgstr "" +msgstr "Apagar linha" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" -msgstr "" +msgstr "Atributos da Peça" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "" +msgstr "Opções de Criação de Peça" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "" +msgstr "Opções de Duplicação de Peças" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "" +msgstr "Adicionar Categoria de Peça" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" -msgstr "" +msgstr "Categoria de peça parental" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" -msgstr "" +msgstr "Ícone (opcional) - Explorar todos os ícones disponíveis em" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "Criar Categoria de Peça" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" -msgstr "" +msgstr "Criar nova categoria após esta" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" -msgstr "" +msgstr "Categoria da peça criada" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" -msgstr "" +msgstr "Editar Categoria da Peça" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" -msgstr "" +msgstr "Você tem certeza que deseja excluir essa categoria de peça?" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" -msgstr "" +msgstr "Mover para categoria parental" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" -msgstr "" +msgstr "Excluir Categoria de Peça" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" -msgstr "" +msgstr "Ação para peças nesta categoria" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" -msgstr "" +msgstr "Ação para categorias filhas" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" -msgstr "" +msgstr "Criar Peça" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" -msgstr "" +msgstr "Criar outra peça após esta" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" -msgstr "" +msgstr "Peça criada com sucesso" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" -msgstr "" +msgstr "Editar Peça" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" -msgstr "" +msgstr "Peça Editada" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" -msgstr "" - -#: templates/js/translated/part.js:509 -msgid "Active Part" -msgstr "" - -#: templates/js/translated/part.js:510 -msgid "Part cannot be deleted as it is currently active" -msgstr "" - -#: templates/js/translated/part.js:524 -msgid "Deleting this part cannot be reversed" -msgstr "" - -#: templates/js/translated/part.js:526 -msgid "Any stock items for this part will be deleted" -msgstr "" - -#: templates/js/translated/part.js:527 -msgid "This part will be removed from any Bills of Material" -msgstr "" +msgstr "Criar Variante da Peça" #: templates/js/translated/part.js:528 +msgid "Active Part" +msgstr "Peça Ativa" + +#: templates/js/translated/part.js:529 +msgid "Part cannot be deleted as it is currently active" +msgstr "Peça não pode ser excluída enquanto ativada" + +#: templates/js/translated/part.js:543 +msgid "Deleting this part cannot be reversed" +msgstr "Excluir esta peça não é reversível" + +#: templates/js/translated/part.js:545 +msgid "Any stock items for this part will be deleted" +msgstr "Qualquer item de estoque desta peça será excluída" + +#: templates/js/translated/part.js:546 +msgid "This part will be removed from any Bills of Material" +msgstr "Esta peça será removida de quaisquer Lista de Materiais" + +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" -msgstr "" +msgstr "Toda informação de fabricante e fornecedor dessa peça será excluída" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" -msgstr "" +msgstr "Excluir Peça" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" -msgstr "" +msgstr "Você está inscrito para receber notificações para este item" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" -msgstr "" - -#: templates/js/translated/part.js:578 -msgid "Subscribe to notifications for this item" -msgstr "" - -#: templates/js/translated/part.js:580 -msgid "You have unsubscribed to notifications for this item" -msgstr "" +msgstr "Você se inscreveu para notificações deste item" #: templates/js/translated/part.js:597 +msgid "Subscribe to notifications for this item" +msgstr "Inscreva-se para receber notificações deste item" + +#: templates/js/translated/part.js:599 +msgid "You have unsubscribed to notifications for this item" +msgstr "Você descadastrou para notificações deste item" + +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" -msgstr "" +msgstr "Validando a LDM irá marcar como cada linha válida" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" -msgstr "" +msgstr "Validar Lista de Materiais" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" -msgstr "" +msgstr "Lista de Materiais Validada" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" -msgstr "" +msgstr "Copiar Lista de Materiais" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" -msgstr "" +msgstr "Estoque Baixo" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" -msgstr "" +msgstr "Nenhum estoque disponível" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" -msgstr "" +msgstr "Demanda" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" -msgstr "" +msgstr "Unidade" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" -msgstr "" +msgstr "Peça virtual" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" -msgstr "" +msgstr "Peça inscrita" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" -msgstr "" +msgstr "Parte vendível" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "Programar geração de um novo relatório de balanço." -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "Uma vez concluído, o relatório de estoque estará disponível para baixar." -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "Gerar Relatório de Balanço" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "Relatório de balanço agendado" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "Nenhuma informação de balanço disponível" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "Editar Lançamento de Balanço" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "Apagar Lançamento de Balanço" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" -msgstr "" +msgstr "Nenhuma variante encontrada" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" -msgstr "" +msgstr "Nenhum modelo parâmetro de peça encontrado" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" -msgstr "" +msgstr "Editar Modelo de Parâmetro da Peça" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" -msgstr "" +msgstr "Quaisquer parâmetros que se referencie este modelo será excluído" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" -msgstr "" +msgstr "Excluir Modelo de Parâmetro de Peça" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" -msgstr "" +msgstr "Nenhum pedido de compra encontrado" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" -msgstr "" +msgstr "Este item de linha está atrasado" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" -msgstr "" +msgstr "Receber item de linha" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" -msgstr "" +msgstr "Excluir relação de peças" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" -msgstr "" +msgstr "Excluir Relacionamento de Peças" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" -msgstr "" +msgstr "Nenhuma peça encontrada" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" -msgstr "" +msgstr "Definir a categoria das peças selecionadas" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" -msgstr "" +msgstr "Definir Categoria da Peça" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" -msgstr "" +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "Definir categoria" -#: templates/js/translated/part.js:2495 -msgid "Category is required" -msgstr "" +#: templates/js/translated/part.js:2283 +msgid "parts" +msgstr "peças" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "Nenhuma categoria" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "Visualizar como lista" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "Exibir como grade" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" -msgstr "" +msgstr "Nenhuma subcategoria encontrada" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "" +msgstr "Exibir como árvore" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" -msgstr "" +msgstr "Carregar Subcategorias" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" -msgstr "" +msgstr "Categoria inscrita" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" -msgstr "" +msgstr "Nenhum modelo de teste corresponde à consulta" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" -msgstr "" +msgstr "Editar resultados de teste" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" -msgstr "" +msgstr "Excluir resultado do teste" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" -msgstr "" +msgstr "Este teste é definido para uma peça parental" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" -msgstr "" +msgstr "Editar Modelo de Resultado de Teste" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" -msgstr "" +msgstr "Excluir Modelo de Resultado de Teste" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" -msgstr "" +msgstr "Nenhum dia especificado" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" -msgstr "" +msgstr "Dia especificado está no passado" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" -msgstr "" +msgstr "Especulativo" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" -msgstr "" +msgstr "Nenhuma informação de agendamento para esta peça" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" -msgstr "" +msgstr "Erro ao obter informações de agendamento para esta peça" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" -msgstr "" +msgstr "Agendamento de Quantidade de Estoque" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" -msgstr "" +msgstr "Quantidade Máxima" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" -msgstr "" +msgstr "Nível de Estoque Mínimo" #: templates/js/translated/plugin.js:45 msgid "No plugins found" +msgstr "Nenhuma extenssão encontrada" + +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" +msgstr "Esta extensão está ativa" + +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" -msgstr "" - -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" -msgstr "" +msgstr "Desativar Extensão" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" -msgstr "" +msgstr "Habilitar Extensão" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" -msgstr "" +msgstr "A Extensão foi instalada" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" -msgstr "" +msgstr "Tem certeza que deseja habilitar esta extensão?" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" -msgstr "" +msgstr "Tem certeza que deseja desativar esta extensão?" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" -msgstr "" +msgstr "Habilitar" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" -msgstr "" +msgstr "Desativar" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" -msgstr "" +msgstr "Extensão atualizada" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" -msgstr "" +msgstr "Erro ao buscar dados monetários" #: templates/js/translated/pricing.js:321 msgid "No BOM data available" -msgstr "" +msgstr "Nenhum dado da LDM disponível" #: templates/js/translated/pricing.js:463 msgid "No supplier pricing data available" -msgstr "" +msgstr "Nenhum dado de preço do fornecedor disponível" #: templates/js/translated/pricing.js:572 msgid "No price break data available" -msgstr "" +msgstr "Nenhum dado de quebra de preço disponível" #: templates/js/translated/pricing.js:755 msgid "No purchase history data available" -msgstr "" +msgstr "Nenhum dado de histórico de compra disponível" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" -msgstr "" +msgstr "Histórico de Peço de Compra" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" -msgstr "" +msgstr "Nenhum dado de histórico de venda disponível" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" -msgstr "" +msgstr "Histórico de Preço de Venda" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" -msgstr "" +msgstr "Nenhum dado de variante disponível" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" -msgstr "" +msgstr "Peça Variante" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" -msgstr "" +msgstr "Selecione o pedido de compra para duplicar" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" -msgstr "" +msgstr "Duplicar Itens de Linha" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" -msgstr "" +msgstr "Duplicar todos os itens de linha do pedido selecionado" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" -msgstr "" +msgstr "Duplicar Linhas Extras" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" -msgstr "" +msgstr "Duplicar items de linha extra do pedido selecionado" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" -msgstr "" +msgstr "Editar Pedido de Compra" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" -msgstr "" +msgstr "Duplicar Opções" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" -msgstr "" - -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 -msgid "Mark this order as complete?" -msgstr "" - -#: templates/js/translated/purchase_order.js:459 -msgid "All line items have been received" -msgstr "" +msgstr "Concluir Pedido de Compra" #: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 +msgid "Mark this order as complete?" +msgstr "Marcar este pedido como completo?" + +#: templates/js/translated/purchase_order.js:470 +msgid "All line items have been received" +msgstr "Todos os itens de linha foram recebidos" + +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." -msgstr "" +msgstr "Este pedido tem itens de linha que não foram marcados como recebidos." -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." -msgstr "" - -#: templates/js/translated/purchase_order.js:488 -msgid "Cancel Purchase Order" -msgstr "" - -#: templates/js/translated/purchase_order.js:493 -msgid "Are you sure you wish to cancel this purchase order?" -msgstr "" +msgstr "Completar este pedido significa que o pedido e itens de linha não poderão ser editados." #: templates/js/translated/purchase_order.js:499 +msgid "Cancel Purchase Order" +msgstr "Cancelar Pedido de Compra" + +#: templates/js/translated/purchase_order.js:504 +msgid "Are you sure you wish to cancel this purchase order?" +msgstr "Tem certeza que você deseja cancelar este pedido de compra?" + +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" -msgstr "" +msgstr "Este pedido de compra não pode ser cancelado" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." -msgstr "" +msgstr "Após colocar este pedido, itens de linha não poderão ser editados." -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" -msgstr "" +msgstr "Emitir Pedido de Compra" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" -msgstr "" +msgstr "Ao menos uma peça comprável deve ser selecionada" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" -msgstr "" +msgstr "Quantidade de compra" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" -msgstr "" +msgstr "Nova peça de fornecedor" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" -msgstr "" +msgstr "Novo pedido de compra" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" -msgstr "" +msgstr "Adicionar pedido de compra" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" -msgstr "" +msgstr "Nenhuma peça de fornecedor correspondente" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" -msgstr "" +msgstr "Nenhum pedido de compra correspondente" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" -msgstr "" +msgstr "Selecionar Itens de Linha" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" -msgstr "" +msgstr "Ao menos um item de linha deve ser selecionado" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" -msgstr "" +msgstr "Quantidade Recebida" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" -msgstr "" +msgstr "Quantidade a receber" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "Situação do Estoque" -#: templates/js/translated/purchase_order.js:1175 -msgid "Add barcode" -msgstr "" - -#: templates/js/translated/purchase_order.js:1176 -msgid "Remove barcode" -msgstr "" - -#: templates/js/translated/purchase_order.js:1179 -msgid "Specify location" -msgstr "" - -#: templates/js/translated/purchase_order.js:1187 -msgid "Add batch code" -msgstr "" - #: templates/js/translated/purchase_order.js:1198 +msgid "Add barcode" +msgstr "Adicionar código de barras" + +#: templates/js/translated/purchase_order.js:1199 +msgid "Remove barcode" +msgstr "Remover código de barras" + +#: templates/js/translated/purchase_order.js:1202 +msgid "Specify location" +msgstr "Especificar locais" + +#: templates/js/translated/purchase_order.js:1210 +msgid "Add batch code" +msgstr "Adicionar código de lote" + +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" -msgstr "" +msgstr "Adicionar números de série" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" -msgstr "" +msgstr "Seriais" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" -msgstr "" - -#: templates/js/translated/purchase_order.js:1277 -msgid "Quantity to Receive" -msgstr "" - -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 -msgid "Confirm receipt of items" -msgstr "" +msgstr "Código do Pedido" #: templates/js/translated/purchase_order.js:1300 +msgid "Quantity to Receive" +msgstr "Quantidade a Receber" + +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 +msgid "Confirm receipt of items" +msgstr "Confirmar o recibo dos itens" + +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" -msgstr "" +msgstr "Receber Itens do Pedido de Compra" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" -msgstr "" +msgstr "Escanar o código de barras do item" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" -msgstr "" +msgstr "Ler código de barras no item de entrada (não deve corresponder a nenhum item de estoque existente)" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" -msgstr "" +msgstr "Dados do código de barras inválido" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" -msgstr "" +msgstr "O pedido está atrasado" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" -msgstr "" +msgstr "Itens" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" -msgstr "" +msgstr "Todas as linhas selecionadas serão excluídas" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" -msgstr "" +msgstr "Excluir itens de linha selecionados?" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" -msgstr "" +msgstr "Duplicar Item de Linha" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 -msgid "Edit Line Item" -msgstr "" - -#: templates/js/translated/purchase_order.js:1910 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 #: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/sales_order.js:2080 +msgid "Edit Line Item" +msgstr "Editar Item de Linha" + +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" -msgstr "" +msgstr "Excluir Item de Linha" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" -msgstr "" +msgstr "Duplicar item de linha" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" -msgstr "" +msgstr "Editar item de linha" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" -msgstr "" +msgstr "Excluir item de linha" #: templates/js/translated/report.js:63 msgid "items selected" -msgstr "" +msgstr "itens selecionados" #: templates/js/translated/report.js:71 msgid "Select Report Template" -msgstr "" +msgstr "Selecionar Modelo de Relatório" #: templates/js/translated/report.js:86 msgid "Select Test Report Template" -msgstr "" +msgstr "Selecionar Modelo de Relatório de Teste" #: templates/js/translated/report.js:140 msgid "No Reports Found" -msgstr "" +msgstr "Nenhum Relatório Encontrado" #: templates/js/translated/report.js:141 msgid "No report templates found which match the selected items" -msgstr "" +msgstr "Nenhum modelo de relatório encontrado correspondente aos itens selecionados" #: templates/js/translated/return_order.js:60 #: templates/js/translated/sales_order.js:86 msgid "Add Customer" -msgstr "" +msgstr "Adicionar cliente" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" -msgstr "" +msgstr "Criar Pedido de Devolução" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" -msgstr "" +msgstr "Editar Pedido de Devolução" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" -msgstr "" +msgstr "Emitir Pedido de Devolução" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" -msgstr "" +msgstr "Tem certeza que deseja cancelar este Pedido de Devolução?" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" -msgstr "" +msgstr "Cancelar Pedido de Devolução" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" -msgstr "" +msgstr "Completar Pedido de Devolução" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" -msgstr "" +msgstr "Nenhum pedido de devolução encontrado" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" -msgstr "" +msgstr "Cliente Inválido" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" -msgstr "" +msgstr "Receber Pedido de Devolução de Itens" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" -msgstr "" +msgstr "Nenhum item de linha correspondente" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" -msgstr "" +msgstr "Marcar item como recebido" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" -msgstr "" +msgstr "Criar Pedido de Venda" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" -msgstr "" +msgstr "Editar Pedidos de Venda" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" -msgstr "" +msgstr "Nenhum item de estoque foi alocado para esse envio" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" -msgstr "" +msgstr "Os itens de estoque a seguir serão enviados" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" -msgstr "" +msgstr "Concluir Envio" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" -msgstr "" +msgstr "Confirmar Envio" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" -msgstr "" +msgstr "Nenhum envio pendente encontrado" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" -msgstr "" +msgstr "Nenhum item de estoque foi alocado para envios pendentes" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "Envios concluídos" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" -msgstr "" +msgstr "Pular" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." -msgstr "" +msgstr "Este pedido tem itens de linha que não estão completos." -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" -msgstr "" +msgstr "Emitir este Pedido de Venda?" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" -msgstr "" +msgstr "Emitir Pedido de Venda" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" -msgstr "" +msgstr "Cancelar Pedido de Venda" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." -msgstr "" +msgstr "Cancelar este pedido significa que não será mais editável." -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" -msgstr "" +msgstr "Criar Novo Envio" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" -msgstr "" +msgstr "Nenhum pedido de venda encontrada" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" -msgstr "" +msgstr "Editar envio" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" -msgstr "" +msgstr "Concluir envio" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" -msgstr "" +msgstr "Excluir envio" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" -msgstr "" +msgstr "Editar Envio" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" -msgstr "" +msgstr "Excluir Envio" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" -msgstr "" +msgstr "Nenhum envio correspondente encontrado" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" -msgstr "" +msgstr "Referência de Envio" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" -msgstr "" +msgstr "Não enviado" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" -msgstr "" +msgstr "Rastreamento" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" -msgstr "" +msgstr "Fatura" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" -msgstr "" +msgstr "Adicionar Envio" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" -msgstr "" +msgstr "Confirmar alocação do estoque" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" -msgstr "" +msgstr "Alocar Itens de Estoque para Pedido de Venda" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" -msgstr "" +msgstr "Nenhuma alocação de pedidos de vendas encontrado" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" -msgstr "" +msgstr "Editar Alocação de Estoque" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" -msgstr "" +msgstr "Confirmar Operação de Excluir" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" -msgstr "" +msgstr "Excluir Alocação de Estoque" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" -msgstr "" +msgstr "Enviado ao cliente" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" -msgstr "" +msgstr "Local de estoque não especificado" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" -msgstr "" +msgstr "Alocar números de série" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" -msgstr "" +msgstr "Comprar estoque" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" -msgstr "" +msgstr "Calcular preço" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" -msgstr "" +msgstr "Não pode ser excluído, pois o item foi enviado" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" -msgstr "" +msgstr "Não pode ser excluído, pois, os itens foram alocados" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" -msgstr "" +msgstr "Alocar Números de Série" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" -msgstr "" +msgstr "Atualizar Preço Unitário" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" -msgstr "" +msgstr "Nenhum resultado" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" -msgstr "" +msgstr "Inserir entrada de pesquisa" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" -msgstr "" +msgstr "resultado" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" -msgstr "" +msgstr "resultados" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" -msgstr "" +msgstr "Minimizar resultados" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" -msgstr "" +msgstr "Remover resultados" #: templates/js/translated/stock.js:98 msgid "Serialize Stock Item" -msgstr "" +msgstr "Serializar Item de Estoque" #: templates/js/translated/stock.js:129 msgid "Confirm Stock Serialization" +msgstr "Confirmar Serialização de Estoque" + +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:152 msgid "Parent stock location" +msgstr "Local de estoque parental" + +#: templates/js/translated/stock.js:166 +msgid "Add Location type" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" -msgstr "" +msgstr "Editar Local de Estoque" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" -msgstr "" +msgstr "Novo Local de Estoque" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" -msgstr "" +msgstr "Criar outro local após este" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" -msgstr "" +msgstr "Local de estoque criado" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" -msgstr "" +msgstr "Você tem certeza que deseja excluir este local de estoque?" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" -msgstr "" +msgstr "Mover para local de estoque parental" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" -msgstr "" +msgstr "Excluir Local de Estoque" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" -msgstr "" +msgstr "Ação de itens de estoque neste local de estoque" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" -msgstr "" +msgstr "Ações para sub-locais" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" -msgstr "" +msgstr "Esta peça não pode ser serializada" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" -msgstr "" +msgstr "Adicionar quantidade dada como pacotes e não itens individuais" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" -msgstr "" +msgstr "Inserir quantidade inicial deste item de estoque" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "" +msgstr "Insira o número de série para novo estoque (ou deixe em branco)" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" -msgstr "" +msgstr "Item de estoque duplicado" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" -msgstr "" +msgstr "Duplicar Item de Estoque" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" -msgstr "" +msgstr "Você tem certeza que deseja excluir este item de estoque?" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" -msgstr "" +msgstr "Excluir Item de Estoque" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" -msgstr "" +msgstr "Editar Item do Estoque" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" -msgstr "" +msgstr "Criar outro item após este" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" -msgstr "" +msgstr "Criar novo item de estoque" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" -msgstr "" +msgstr "Múltiplos itens de estoque criados" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" -msgstr "" +msgstr "Encontrar Número de Série" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "" +msgstr "Insira o número de série" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "" +msgstr "Insira um número de série" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" -msgstr "" +msgstr "Nenhum número de série correspondente" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" -msgstr "" +msgstr "Mais que um resultado encontrado correspondente" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" -msgstr "" +msgstr "Confirmar atribuição de estoque" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" -msgstr "" +msgstr "Atribuir Estoque para Cliente" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" -msgstr "" +msgstr "Atenção: A operação de Mesclar não pode ser revertida" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" -msgstr "" +msgstr "Algumas informações serão perdidas ao mesclar os itens de estoque" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" -msgstr "" +msgstr "Histórico de transação de estoque irá ser excluído para itens mesclados" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" -msgstr "" +msgstr "Fornecedor de peça será deletado para itens mesclados" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" -msgstr "" +msgstr "Confirmar mescla de estoque" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" -msgstr "" +msgstr "Mesclar Itens de Estoque" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" -msgstr "" +msgstr "Transferir Estoque" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "" +msgstr "Mover" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" -msgstr "" +msgstr "Contar Estoque" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" -msgstr "" +msgstr "Contar" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" -msgstr "" +msgstr "Remover Estoque" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" -msgstr "" +msgstr "Pegar" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "" +msgstr "Adicionar Estoque" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" -msgstr "" +msgstr "Adicionar" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "" +msgstr "Excluir Estoque" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" -msgstr "" +msgstr "Quantidade não pode ser ajustada para estoque serializado" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" -msgstr "" +msgstr "Especifique quantidade de estoque" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" -msgstr "" +msgstr "Selecionar Itens de Estoque" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" -msgstr "" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "Selecione ao menos um item de estoque" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" -msgstr "" +msgstr "Confirme ajuste de estoque" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" -msgstr "" +msgstr "PASSOU" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" -msgstr "" +msgstr "FALHA" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" -msgstr "" +msgstr "SEM RESULTADO" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" -msgstr "" +msgstr "Passou no teste" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" -msgstr "" +msgstr "Adicionar resultado de teste" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" -msgstr "" +msgstr "Nenhum resultado de teste encontrado" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" -msgstr "" +msgstr "Dados de Teste" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" -msgstr "" +msgstr "Editar Resultados de Teste" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" -msgstr "" +msgstr "Excluir Resultado de Teste" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" -msgstr "" +msgstr "Em produção" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" -msgstr "" +msgstr "Instalado em Item de Estoque" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" -msgstr "" +msgstr "Atribuir para o Pedido de Venda" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" -msgstr "" +msgstr "Nenhum local de estoque definido" -#: templates/js/translated/stock.js:1746 -msgid "stock items" -msgstr "" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "Mudar estado de estoque" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" -msgstr "" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "Mesclar estoque" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "Excluir estoque" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "itens de estoque" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "Digitalizar para local" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "Ações de Estoque" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "Carregar itens instalados" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "Item de estoque está em produção" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "Item de estoque atribuído para pedido de venda" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "Item de estoque atribuído ao cliente" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "Item de estoque serializado foi alocado" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "Item de estoque foi totalmente alocado" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "Item de estoque foi parcialmente alocada" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" -msgstr "" +msgstr "Item de estoque foi instalado em outro item" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" -msgstr "" +msgstr "Item de estoque foi consumido por um pedido de produção" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" -msgstr "" +msgstr "Item de estoque expirou" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" -msgstr "" +msgstr "Item de estoque irá expirar em breve" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" -msgstr "" +msgstr "Item de estoque foi rejeitado" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" -msgstr "" +msgstr "Item de estoque está perdido" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" -msgstr "" +msgstr "Item de estoque está destruído" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" -msgstr "" +msgstr "Esgotado" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" -msgstr "" +msgstr "Fornecedor da peça não especificado" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" -msgstr "" +msgstr "Valor de Estoque" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" -msgstr "" +msgstr "Nenhum item de estoque corresponde a consulta" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" -msgstr "" +msgstr "locais de estoque" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" -msgstr "" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" +msgstr "Carregar Sublocais" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "" +msgstr "Detalhes" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" -msgstr "" +msgstr "Nenhuma mudança" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" -msgstr "" +msgstr "Informação de peça indisponível" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" -msgstr "" +msgstr "Local não existe mais" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" -msgstr "" +msgstr "Pedido de produção não existe mais" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" -msgstr "" +msgstr "Pedido de Compra não existe mais" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" -msgstr "" +msgstr "Pedido de Vendas não existe mais" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" -msgstr "" +msgstr "Pedido de Devolução não existe mais" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" -msgstr "" +msgstr "Cliente não existe mais" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" -msgstr "" +msgstr "Item de estoque não existe mais" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" -msgstr "" +msgstr "Adicionado" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" -msgstr "" +msgstr "Removido" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" -msgstr "" +msgstr "Nenhum item instalado" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" -msgstr "" +msgstr "Desistalar Item de Estoque" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" -msgstr "" +msgstr "Selecione item de estoque para desinstalar" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" -msgstr "" +msgstr "Instalar outro item de estoque neste item" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" -msgstr "" +msgstr "Itens de estoque só podem ser instalados se eles atendem ao seguinte critério" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" -msgstr "" +msgstr "O Item de Estoque conecta a uma peça que é um LDM deste Item de Estoque" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" -msgstr "" +msgstr "O item de estoque está atualmente disponível no estoque" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" -msgstr "" +msgstr "O Item de Estoque ainda não está instalado em outro item" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" -msgstr "" +msgstr "O Item de Estoque é rastreado por um código de lote ou número de série" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" -msgstr "" +msgstr "Selecione a peça para instalar" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "Selecione um ou mais itens de estoque" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "Itens de estoque selecionados" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "Mudar estado do estoque" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" -msgstr "" +msgstr "Tem código do projeto" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "Situação dos Pedidos" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" -msgstr "" +msgstr "Pendente" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" -msgstr "" +msgstr "Atribuído a mim" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" -msgstr "" +msgstr "Peça Rastreável" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" -msgstr "" +msgstr "Peça Montada" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" -msgstr "" +msgstr "Tem Estoque Disponível" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" -msgstr "" +msgstr "Permitir Estoque de Variantes" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" -msgstr "" +msgstr "Tem Preços" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" -msgstr "" +msgstr "Incluir sublocais" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" +msgstr "Incluir locais" + +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" -msgstr "" - -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 -msgid "Subscribed" -msgstr "" - -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 -msgid "Is Serialized" -msgstr "" - -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 -msgid "Serial number GTE" -msgstr "" - -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 -msgid "Serial number greater than or equal to" -msgstr "" - -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 -msgid "Serial number LTE" -msgstr "" - -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 -msgid "Serial number less than or equal to" -msgstr "" - -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 -msgid "Serial number" -msgstr "" - -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 -msgid "Batch code" -msgstr "" - -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 -msgid "Active parts" -msgstr "" - -#: templates/js/translated/table_filters.js:272 -msgid "Show stock for active parts" -msgstr "" - -#: templates/js/translated/table_filters.js:277 -msgid "Part is an assembly" -msgstr "" - -#: templates/js/translated/table_filters.js:281 -msgid "Is allocated" -msgstr "" - -#: templates/js/translated/table_filters.js:282 -msgid "Item has been allocated" -msgstr "" +msgstr "Incluir subcategorias" #: templates/js/translated/table_filters.js:287 -msgid "Stock is available for use" -msgstr "" +#: templates/js/translated/table_filters.js:755 +msgid "Subscribed" +msgstr "Inscrito" -#: templates/js/translated/table_filters.js:292 -msgid "Include stock in sublocations" -msgstr "" +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 +msgid "Is Serialized" +msgstr "É serializado" -#: templates/js/translated/table_filters.js:297 -msgid "Show stock items which are depleted" -msgstr "" +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 +msgid "Serial number GTE" +msgstr "Número de série GTE" #: templates/js/translated/table_filters.js:302 -msgid "Show items which are in stock" -msgstr "" +#: templates/js/translated/table_filters.js:388 +msgid "Serial number greater than or equal to" +msgstr "Número de série maior ou igual a" + +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 +msgid "Serial number LTE" +msgstr "Número de série LTE" #: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 +msgid "Serial number less than or equal to" +msgstr "Número de série menor ou igual a" + +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 +msgid "Serial number" +msgstr "Número de série" + +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 +msgid "Batch code" +msgstr "Código do lote" + +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 +msgid "Active parts" +msgstr "Peça Ativa" + +#: templates/js/translated/table_filters.js:326 +msgid "Show stock for active parts" +msgstr "Mostrar estoque de peças ativas" + +#: templates/js/translated/table_filters.js:331 +msgid "Part is an assembly" +msgstr "Peça é uma montagem" + +#: templates/js/translated/table_filters.js:335 +msgid "Is allocated" +msgstr "Está alocado" + +#: templates/js/translated/table_filters.js:336 +msgid "Item has been allocated" +msgstr "O item foi alocado" + +#: templates/js/translated/table_filters.js:341 +msgid "Stock is available for use" +msgstr "Estoque está disponível para uso" + +#: templates/js/translated/table_filters.js:346 +msgid "Include stock in sublocations" +msgstr "Incluir estoque em sublocais" + +#: templates/js/translated/table_filters.js:351 +msgid "Show stock items which are depleted" +msgstr "Mostrar itens de estoque que estão esgotados" + +#: templates/js/translated/table_filters.js:356 +msgid "Show items which are in stock" +msgstr "Mostrar os itens que estão em estoque" + +#: templates/js/translated/table_filters.js:360 msgid "In Production" -msgstr "" +msgstr "Em Produção" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" -msgstr "" +msgstr "Mostrar itens que estão em produção" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" -msgstr "" +msgstr "Incluir Variáveis" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" -msgstr "" +msgstr "Incluir itens de estoque para peças variantes" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" -msgstr "" +msgstr "Mostrar itens de estoque qie estão instalados em outros itens" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" -msgstr "" +msgstr "Mostrar itens que deveriam ser atribuídos a um cliente" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "Estado do Estoque" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" -msgstr "" +msgstr "Possuí código de lote" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" -msgstr "" +msgstr "Item de estoque é rastreado pelo código de lote ou número de série" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" -msgstr "" +msgstr "Tem preço de compra" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" -msgstr "" +msgstr "Mostrar itens de estoque que têm um preço de compra definido" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" -msgstr "" +msgstr "Data de Validade" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" -msgstr "" +msgstr "Data de validade após" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" -msgstr "" +msgstr "Mostrar itens de estoque que expiraram" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" -msgstr "" +msgstr "Mostrar Item de estoque que está próximo a expirar" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" -msgstr "" +msgstr "Passou no Teste" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" -msgstr "" +msgstr "Incluir Itens Instalados" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "Estado da Produção" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" -msgstr "" +msgstr "Incluir peças em subcategorias" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" -msgstr "" +msgstr "Mostrar peças ativas" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" -msgstr "" +msgstr "Estoque disponível" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" -msgstr "" +msgstr "Possui unidades" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" -msgstr "" +msgstr "Parte tem unidades definidas" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" -msgstr "" +msgstr "Tem IPN" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" -msgstr "" +msgstr "A peça tem um número interno" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" -msgstr "" +msgstr "Em estoque" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" -msgstr "" +msgstr "Comprável" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "Tem entradas em balanço" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" -msgstr "" +msgstr "Tem Escolhas" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "" +msgstr "Exibir visualização de calendário" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "" +msgstr "Exibir visualização em lista" #: templates/js/translated/tables.js:112 msgid "Display tree view" -msgstr "" +msgstr "Exibir visualização em árvore" #: templates/js/translated/tables.js:130 msgid "Expand all rows" -msgstr "" +msgstr "Expandir todas as linhas" #: templates/js/translated/tables.js:136 msgid "Collapse all rows" -msgstr "" +msgstr "Recolher todas as linhas" #: templates/js/translated/tables.js:186 msgid "Export Table Data" -msgstr "" +msgstr "Exportar Dados da Tabela" #: templates/js/translated/tables.js:190 msgid "Select File Format" -msgstr "" +msgstr "Selecione o Formato do Arquivo" + +#: templates/js/translated/tables.js:529 +msgid "Loading data" +msgstr "Carregar dados" + +#: templates/js/translated/tables.js:532 +msgid "rows per page" +msgstr "linhas por página" + +#: templates/js/translated/tables.js:537 +msgid "Showing all rows" +msgstr "Mostrar todas as linhas" + +#: templates/js/translated/tables.js:539 +msgid "Showing" +msgstr "Exibindo" + +#: templates/js/translated/tables.js:539 +msgid "to" +msgstr "para" + +#: templates/js/translated/tables.js:539 +msgid "of" +msgstr "de" + +#: templates/js/translated/tables.js:539 +msgid "rows" +msgstr "linhas" + +#: templates/js/translated/tables.js:546 +msgid "No matching results" +msgstr "Sem resultados correspondentes" + +#: templates/js/translated/tables.js:549 +msgid "Hide/Show pagination" +msgstr "Ocultar/Mostrar paginação" + +#: templates/js/translated/tables.js:555 +msgid "Toggle" +msgstr "Alternar" + +#: templates/js/translated/tables.js:558 +msgid "Columns" +msgstr "Colunas" #: templates/js/translated/tables.js:561 -msgid "Loading data" -msgstr "" - -#: templates/js/translated/tables.js:564 -msgid "rows per page" -msgstr "" - -#: templates/js/translated/tables.js:569 -msgid "Showing all rows" -msgstr "" - -#: templates/js/translated/tables.js:571 -msgid "Showing" -msgstr "" - -#: templates/js/translated/tables.js:571 -msgid "to" -msgstr "" - -#: templates/js/translated/tables.js:571 -msgid "of" -msgstr "" - -#: templates/js/translated/tables.js:571 -msgid "rows" -msgstr "" - -#: templates/js/translated/tables.js:578 -msgid "No matching results" -msgstr "" - -#: templates/js/translated/tables.js:581 -msgid "Hide/Show pagination" -msgstr "" - -#: templates/js/translated/tables.js:587 -msgid "Toggle" -msgstr "" - -#: templates/js/translated/tables.js:590 -msgid "Columns" -msgstr "" - -#: templates/js/translated/tables.js:593 msgid "All" -msgstr "" +msgstr "Todos" #: templates/navbar.html:45 msgid "Buy" -msgstr "" +msgstr "Comprar" #: templates/navbar.html:57 msgid "Sell" -msgstr "" +msgstr "Vender" #: templates/navbar.html:121 msgid "Show Notifications" -msgstr "" +msgstr "Mostrar Notificações" #: templates/navbar.html:124 msgid "New Notifications" -msgstr "" +msgstr "Novas Notificações" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" -msgstr "" +msgstr "Administrador" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" -msgstr "" +msgstr "Encerrar sessão" #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" -msgstr "" +msgstr "Salvar" #: templates/notifications.html:9 msgid "Show all notifications and history" -msgstr "" +msgstr "Mostrar todas as notificações e histórico" #: templates/qr_code.html:11 msgid "QR data not provided" -msgstr "" +msgstr "Nenhum dado QR providenciado" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." -msgstr "" +msgstr "Você foi desconectado com sucesso." -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" -msgstr "" +msgstr "Entrar novamente" #: templates/search.html:9 msgid "Show full search results" -msgstr "" +msgstr "Mostrar todos os resultados da pesquisa" #: templates/search.html:12 msgid "Clear search" -msgstr "" +msgstr "Limpar pesquisa" #: templates/search.html:15 msgid "Close search menu" -msgstr "" +msgstr "Fechar menu de pesuisa" #: templates/socialaccount/authentication_error.html:5 msgid "Social Network Login Failure" -msgstr "" +msgstr "Falha ao acessar a rede social" #: templates/socialaccount/authentication_error.html:8 msgid "Account Login Failure" -msgstr "" +msgstr "Falha ao acessar conta" #: templates/socialaccount/authentication_error.html:11 msgid "An error occurred while attempting to login via your social network account." -msgstr "" +msgstr "Ocorreu um erro ao tentar entrar com a sua conta de rede social." #: templates/socialaccount/authentication_error.html:13 msgid "Contact your system administrator for further information." -msgstr "" +msgstr "Contate seu administrador de sistema para mais informações." #: templates/socialaccount/login.html:13 #, python-format msgid "Connect %(provider)s" -msgstr "" +msgstr "Conectar %(provider)s" #: templates/socialaccount/login.html:15 #, python-format msgid "You are about to connect a new third party account from %(provider)s." -msgstr "" +msgstr "Você está prestes a conectar uma nova conta de terceiros do %(provider)s." #: templates/socialaccount/login.html:17 #, python-format msgid "Sign In Via %(provider)s" -msgstr "" +msgstr "Entrar através %(provider)s" #: templates/socialaccount/login.html:19 #, python-format msgid "You are about to sign in using a third party account from %(provider)s." -msgstr "" +msgstr "Você está prestes a entrar utilizando uma conta de terceiros de %(provider)s." #: templates/socialaccount/login.html:24 msgid "Continue" -msgstr "" +msgstr "Continuar" #: templates/socialaccount/login.html:29 msgid "Invalid SSO Provider" -msgstr "" +msgstr "Provedor SSO inválido" #: templates/socialaccount/login.html:31 msgid "The selected SSO provider is invalid, or has not been correctly configured" -msgstr "" +msgstr "O provedor de SSO selecionado é inválido ou não foi configurado corretamente" #: templates/socialaccount/signup.html:10 #, python-format msgid "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s.
As a final step, please complete the following form:" -msgstr "" +msgstr "Você está prestes a usar sua conta do %(provider_name)s para entrar no\n" +"%(site_name)s.
Como etapa final, por favor, complete o seguinte formulário:" #: templates/socialaccount/snippets/provider_list.html:26 msgid "Provider has not been configured" -msgstr "" +msgstr "O provedor não foi configurado" #: templates/socialaccount/snippets/provider_list.html:35 msgid "No SSO providers have been configured" -msgstr "" +msgstr "Nenhum provedor de SSO foi configurado" #: templates/stats.html:13 msgid "Instance Name" -msgstr "" +msgstr "Nome da Instância" #: templates/stats.html:18 msgid "Database" -msgstr "" +msgstr "Banco de Dados" #: templates/stats.html:26 msgid "Server is running in debug mode" -msgstr "" +msgstr "O servidor está executando no modo de depuração" #: templates/stats.html:33 msgid "Docker Mode" -msgstr "" +msgstr "Modo Docker" #: templates/stats.html:34 msgid "Server is deployed using docker" -msgstr "" +msgstr "O servidor está implantado usando o docker" #: templates/stats.html:39 msgid "Plugin Support" -msgstr "" +msgstr "Suporte a Extensões" #: templates/stats.html:43 msgid "Plugin support enabled" -msgstr "" +msgstr "Suporte a extensões habilitado" #: templates/stats.html:45 msgid "Plugin support disabled" -msgstr "" +msgstr "Suporte de extensão desativado" #: templates/stats.html:52 msgid "Server status" @@ -12594,133 +13238,129 @@ msgstr "Estado do Servidor" #: templates/stats.html:55 msgid "Healthy" -msgstr "" +msgstr "Saudável" #: templates/stats.html:57 msgid "Issues detected" -msgstr "" +msgstr "Problemas detectados" #: templates/stats.html:64 msgid "Background Worker" -msgstr "" +msgstr "Funcionário em segundo plano" #: templates/stats.html:67 msgid "Background worker not running" -msgstr "" +msgstr "Trabalhador de fundo não está em execução" #: templates/stats.html:75 msgid "Email Settings" -msgstr "" +msgstr "Configurações de Email" #: templates/stats.html:78 msgid "Email settings not configured" -msgstr "" - -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "Fazer balanço de itens do estoque selecionados" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" +msgstr "Configurações de e-mail não configuradas" #: templates/yesnolabel.html:4 msgid "Yes" -msgstr "" +msgstr "Sim" #: templates/yesnolabel.html:6 msgid "No" -msgstr "" +msgstr "Não" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" -msgstr "" +msgstr "Usuários" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" -msgstr "" - -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" -msgstr "" - -#: users/admin.py:222 -msgid "Personal info" -msgstr "" - -#: users/admin.py:223 -msgid "Permissions" -msgstr "" +msgstr "Selecione quais usuários estão atribuídos a este grupo" #: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "" + +#: users/admin.py:253 +msgid "Personal info" +msgstr "Informações pessoais" + +#: users/admin.py:254 +msgid "Permissions" +msgstr "Permissões" + +#: users/admin.py:257 msgid "Important dates" +msgstr "Datas importantes" + +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" msgstr "" -#: users/models.py:230 +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" -msgstr "" +msgstr "Permissão definida" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "Grupo" -#: users/models.py:241 +#: users/models.py:387 msgid "View" -msgstr "" +msgstr "Visualizar" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" -msgstr "" +msgstr "Permissão para ver itens" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" -msgstr "" +msgstr "Permissão para adicionar itens" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" -msgstr "" +msgstr "Alterar" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" -msgstr "" +msgstr "Permissões para editar itens" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" -msgstr "" +msgstr "Permissão para excluir itens" diff --git a/InvenTree/locale/pt_br/LC_MESSAGES/django.po b/InvenTree/locale/pt_br/LC_MESSAGES/django.po index 5fae4b6286..041a8c9246 100644 --- a/InvenTree/locale/pt_br/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt_br/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-05 11:04+0000\n" +"POT-Creation-Date: 2023-11-09 10:51+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,420 +18,445 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1086 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3004 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2159 stock/models.py:2267 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "" -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/helpers.py:462 order/models.py:439 order/models.py:608 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" +msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" +msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:486 stock/models.py:2261 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:233 -#: order/models.py:1090 order/models.py:1450 part/admin.py:39 -#: part/models.py:900 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:901 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3012 -#: part/models.py:3100 part/models.py:3179 part/models.py:3199 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:846 -#: part/models.py:3399 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:229 order/models.py:1114 part/admin.py:194 part/admin.py:276 -#: part/models.py:868 part/models.py:3415 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:3896 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2851 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -485,445 +510,506 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:822 msgid "German" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:824 msgid "English" msgstr "" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:829 msgid "French" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "" -#: InvenTree/settings.py:739 -msgid "Chinese" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "" -#: InvenTree/status_codes.py:139 InvenTree/status_codes.py:181 -#: InvenTree/status_codes.py:360 InvenTree/status_codes.py:397 -#: InvenTree/status_codes.py:432 templates/js/translated/table_filters.js:511 +#: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 +#: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 +#: InvenTree/status_codes.py:188 generic/states/tests.py:16 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "" -#: InvenTree/status_codes.py:140 +#: InvenTree/status_codes.py:13 generic/states/tests.py:17 msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:141 InvenTree/status_codes.py:363 -#: InvenTree/status_codes.py:399 order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 +#: InvenTree/status_codes.py:172 generic/states/tests.py:18 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "" -#: InvenTree/status_codes.py:142 InvenTree/status_codes.py:184 -#: InvenTree/status_codes.py:362 InvenTree/status_codes.py:400 +#: InvenTree/status_codes.py:15 InvenTree/status_codes.py:43 +#: InvenTree/status_codes.py:150 InvenTree/status_codes.py:173 msgid "Cancelled" msgstr "" -#: InvenTree/status_codes.py:143 InvenTree/status_codes.py:185 -#: InvenTree/status_codes.py:227 +#: InvenTree/status_codes.py:16 InvenTree/status_codes.py:44 +#: InvenTree/status_codes.py:71 msgid "Lost" msgstr "" -#: InvenTree/status_codes.py:144 InvenTree/status_codes.py:186 +#: InvenTree/status_codes.py:17 InvenTree/status_codes.py:45 +#: InvenTree/status_codes.py:73 msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:182 InvenTree/status_codes.py:398 +#: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:183 order/models.py:1329 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "" -#: InvenTree/status_codes.py:223 +#: InvenTree/status_codes.py:66 msgid "OK" msgstr "" -#: InvenTree/status_codes.py:224 +#: InvenTree/status_codes.py:67 msgid "Attention needed" msgstr "" -#: InvenTree/status_codes.py:225 +#: InvenTree/status_codes.py:68 msgid "Damaged" msgstr "" -#: InvenTree/status_codes.py:226 +#: InvenTree/status_codes.py:69 msgid "Destroyed" msgstr "" -#: InvenTree/status_codes.py:228 +#: InvenTree/status_codes.py:70 msgid "Rejected" msgstr "" -#: InvenTree/status_codes.py:229 +#: InvenTree/status_codes.py:72 msgid "Quarantined" msgstr "" -#: InvenTree/status_codes.py:308 +#: InvenTree/status_codes.py:91 msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:310 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "" -#: InvenTree/status_codes.py:312 +#: InvenTree/status_codes.py:96 msgid "Edited stock item" msgstr "" -#: InvenTree/status_codes.py:313 +#: InvenTree/status_codes.py:97 msgid "Assigned serial number" msgstr "" -#: InvenTree/status_codes.py:315 +#: InvenTree/status_codes.py:100 msgid "Stock counted" msgstr "" -#: InvenTree/status_codes.py:316 +#: InvenTree/status_codes.py:101 msgid "Stock manually added" msgstr "" -#: InvenTree/status_codes.py:317 +#: InvenTree/status_codes.py:102 msgid "Stock manually removed" msgstr "" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:105 msgid "Location changed" msgstr "" -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:106 msgid "Stock updated" msgstr "" -#: InvenTree/status_codes.py:322 +#: InvenTree/status_codes.py:109 msgid "Installed into assembly" msgstr "" -#: InvenTree/status_codes.py:323 +#: InvenTree/status_codes.py:110 msgid "Removed from assembly" msgstr "" -#: InvenTree/status_codes.py:325 +#: InvenTree/status_codes.py:112 msgid "Installed component item" msgstr "" -#: InvenTree/status_codes.py:326 +#: InvenTree/status_codes.py:113 msgid "Removed component item" msgstr "" -#: InvenTree/status_codes.py:328 +#: InvenTree/status_codes.py:116 msgid "Split from parent item" msgstr "" -#: InvenTree/status_codes.py:329 +#: InvenTree/status_codes.py:117 msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:331 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "" -#: InvenTree/status_codes.py:333 +#: InvenTree/status_codes.py:123 msgid "Converted to variant" msgstr "" -#: InvenTree/status_codes.py:335 templates/js/translated/table_filters.js:321 -msgid "Sent to customer" -msgstr "" - -#: InvenTree/status_codes.py:336 -msgid "Returned from customer" -msgstr "" - -#: InvenTree/status_codes.py:338 +#: InvenTree/status_codes.py:126 msgid "Build order output created" msgstr "" -#: InvenTree/status_codes.py:339 +#: InvenTree/status_codes.py:127 msgid "Build order output completed" msgstr "" -#: InvenTree/status_codes.py:340 +#: InvenTree/status_codes.py:128 msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:341 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "" -#: InvenTree/status_codes.py:343 +#: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" msgstr "" -#: InvenTree/status_codes.py:345 +#: InvenTree/status_codes.py:135 msgid "Received against Purchase Order" msgstr "" -#: InvenTree/status_codes.py:347 +#: InvenTree/status_codes.py:138 msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:361 +#: 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:433 +#: InvenTree/status_codes.py:191 msgid "Return" msgstr "" -#: InvenTree/status_codes.py:434 +#: InvenTree/status_codes.py:194 msgid "Repair" msgstr "" -#: InvenTree/status_codes.py:435 -msgid "Refund" -msgstr "" - -#: InvenTree/status_codes.py:436 +#: InvenTree/status_codes.py:197 msgid "Replace" msgstr "" -#: InvenTree/status_codes.py:437 +#: InvenTree/status_codes.py:200 +msgid "Refund" +msgstr "" + +#: InvenTree/status_codes.py:203 msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "" -#: build/api.py:221 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "" -#: build/models.py:156 order/models.py:356 order/models.py:762 -#: order/models.py:1084 order/models.py:1721 part/admin.py:278 -#: part/models.py:3797 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1192 order/models.py:1308 order/models.py:1309 -#: part/models.py:390 part/models.py:2864 part/models.py:2978 -#: part/models.py:3118 part/models.py:3137 part/models.py:3156 -#: part/models.py:3177 part/models.py:3269 part/models.py:3554 -#: part/models.py:3662 part/models.py:3762 part/models.py:4076 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -932,548 +1018,563 @@ msgstr "" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:505 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "" -#: build/models.py:253 order/models.py:241 part/models.py:1037 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:261 order/models.py:406 order/models.py:1764 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:255 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1041 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:437 order/serializers.py:378 -#: order/serializers.py:500 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1386 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1598 -msgid "Stock item is over-allocated" -msgstr "" - -#: build/models.py:1297 order/models.py:1601 -msgid "Allocation quantity must be greater than zero" -msgstr "" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1058 -#: order/serializers.py:1079 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1070 order/models.py:1642 order/serializers.py:1232 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2991 part/models.py:3778 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:513 order/serializers.py:1236 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:669 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:486 -#: order/serializers.py:605 order/serializers.py:1587 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:788 -#: order/models.py:1747 order/serializers.py:523 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:260 order/serializers.py:1126 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3685 -#: part/models.py:4068 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1116 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1400 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1513,15 +1614,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1530,89 +1631,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1637,18 +1739,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:237 -#: order/models.py:1096 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1659,47 +1761,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1451 order/models.py:1301 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 #: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1727,8 +1828,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1219 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1740,23 +1841,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1764,147 +1865,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1912,14 +1972,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1958,1494 +2014,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:231 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3559 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:995 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1001 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1012 -msgid "Purchaseable" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1017 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1007 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" +#: common/models.py:1197 +msgid "Automatic Backup" msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" +msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1027 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" +#: common/models.py:1204 +msgid "Auto Backup Interval" msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:1370 +msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1378 -msgid "Default page size for PDF reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1388 -msgid "Enable Test Reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" msgstr "" #: common/models.py:1550 -msgid "Enable SSO on the login pages" +msgid "Default page size for PDF reports" msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" +msgid "Attach Test Reports" msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" +msgid "Autofill Serial Numbers" msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1129 order/models.py:1936 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1022 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:913 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3476,7 +3581,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3495,9 +3600,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3505,331 +3610,395 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" - -#: company/models.py:119 -msgid "Company address" -msgstr "" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:263 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2254 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:986 part/models.py:3406 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:379 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3800 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1918 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1918 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1920 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3839,72 +4008,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:776 -#: order/models.py:1735 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3914,156 +4090,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4072,46 +4236,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4135,106 +4281,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4242,102 +4393,95 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4346,63 +4490,63 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:70 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:239 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1449 order/models.py:1175 order/models.py:1259 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1453 order/models.py:1906 order/models.py:1952 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1455 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:71 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:76 order/serializers.py:48 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:78 order/serializers.py:49 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:207 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:229 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" @@ -4410,184 +4554,188 @@ msgstr "" msgid "Select project code for this order" msgstr "" -#: order/models.py:233 order/models.py:1091 order/models.py:1451 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:238 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:247 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:254 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:264 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:357 order/models.py:763 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:365 order/models.py:788 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:380 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:388 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:388 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:395 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:400 order/models.py:1758 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:401 order/models.py:1759 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:407 order/models.py:1765 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:442 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:603 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:777 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:796 order/models.py:1752 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:796 order/models.py:1753 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:798 order/models.py:1405 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:805 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:854 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:858 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:861 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:864 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1071 +#: order/models.py:1074 msgid "Item quantity" msgstr "" -#: order/models.py:1084 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1086 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1097 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1115 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1120 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1121 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1130 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1160 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1168 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1174 order/models.py:1259 order/models.py:1300 -#: order/models.py:1399 order/models.py:1548 order/models.py:1905 -#: order/models.py:1952 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1193 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1200 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1201 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1208 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1209 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1222 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" @@ -4600,7 +4748,7 @@ msgid "Only salable parts can be assigned to a sales order" msgstr "" #: order/models.py:1319 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" @@ -4616,7 +4764,7 @@ msgstr "" msgid "Date of shipment" msgstr "" -#: order/models.py:1411 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" @@ -4632,8 +4780,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1427 order/models.py:1624 order/serializers.py:1247 -#: order/serializers.py:1375 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" @@ -4669,229 +4817,229 @@ msgstr "" msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1589 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1591 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1604 order/serializers.py:1109 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1607 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1608 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1616 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1625 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1638 order/models.py:1913 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1639 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1642 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1722 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1736 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1747 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1898 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1914 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1919 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1920 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1931 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1931 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1937 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:246 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:261 order/serializers.py:1127 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:272 order/serializers.py:1138 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:385 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:403 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:421 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:426 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:432 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:471 order/serializers.py:1215 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:477 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:487 order/serializers.py:606 order/serializers.py:1588 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:506 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:514 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:527 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:528 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:544 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:568 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:622 order/serializers.py:1603 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:639 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:949 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1006 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1070 order/serializers.py:1224 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1092 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1237 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1259 order/serializers.py:1383 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1262 order/serializers.py:1386 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1316 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1326 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1554 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1561 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1564 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1596 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1677 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" @@ -4904,11 +5052,11 @@ msgstr "" msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:89 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:94 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4918,26 +5066,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4947,90 +5095,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5083,13 +5223,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5150,9 +5290,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5163,30 +5303,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5195,40 +5330,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5236,35 +5371,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5272,18 +5407,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5291,64 +5425,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3666 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3670 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:888 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:895 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:874 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5356,24 +5491,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:863 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:979 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5381,115 +5516,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2929 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2935 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:391 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3674 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:497 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:517 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:535 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:621 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:769 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:770 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:776 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:126 part/models.py:922 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5497,477 +5625,484 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:74 part/models.py:3615 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:75 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:127 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:132 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:134 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:138 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:138 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:143 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:144 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:163 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:474 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:516 part/models.py:528 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:600 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:671 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:802 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:807 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:821 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:845 part/models.py:3671 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:851 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:852 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:862 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:869 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:875 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:882 part/models.py:3197 part/models.py:3614 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:883 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:889 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:894 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:920 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:965 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:966 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:973 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:974 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:980 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:987 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:996 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1002 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1008 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1013 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1018 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1023 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1028 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1030 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1030 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1033 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1035 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1039 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1041 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1045 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1920 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2852 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2869 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2870 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2875 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2876 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2881 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2882 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2887 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2893 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2894 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2899 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2900 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2905 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2906 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2911 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2912 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2917 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2918 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2923 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2924 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2930 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2936 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2941 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2942 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2947 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2948 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2953 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2954 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2959 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2960 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2979 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2984 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2985 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2992 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2996 part/models.py:3079 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2997 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3005 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3013 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3018 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3019 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3024 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3025 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3086 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3087 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3092 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3093 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3101 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3237 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3254 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3274 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3275 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3280 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3281 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3286 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3287 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3292 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3293 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3298 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3299 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3345 +#: part/models.py:3346 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3350 +#: part/models.py:3351 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3368 +#: part/models.py:3369 msgid "Choices must be unique" msgstr "" -#: part/models.py:3384 +#: part/models.py:3385 msgid "Parameter template name must be unique" msgstr "" @@ -5983,8 +6118,8 @@ msgstr "" msgid "Parameter description" msgstr "" -#: part/models.py:3422 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" @@ -5992,7 +6127,7 @@ msgstr "" msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3428 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" @@ -6000,447 +6135,459 @@ msgstr "" msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3510 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3554 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3559 part/models.py:3620 part/models.py:3621 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3564 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3564 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3625 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3626 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3663 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3675 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3678 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3679 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3763 -msgid "Select parent part" +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" msgstr "" #: part/models.py:3771 +msgid "Select parent part" +msgstr "" + +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3778 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3782 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3783 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3788 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3789 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3793 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3794 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3797 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3800 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3804 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3804 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3809 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3810 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3815 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3816 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3821 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3822 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3908 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3917 part/models.py:3919 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4035 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4056 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4069 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4077 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4092 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4096 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4096 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4114 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4118 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6459,90 +6606,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6579,7 +6706,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6588,9 +6715,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6602,101 +6729,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6730,13 +6857,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6745,158 +6872,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6953,15 +7080,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6985,11 +7112,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7052,12 +7179,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7106,37 +7233,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7148,20 +7274,21 @@ msgstr "" msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7169,7 +7296,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7183,6 +7356,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7220,242 +7398,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7472,9 +7817,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7486,26 +7831,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7515,12 +7864,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2242 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2248 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7546,485 +7895,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:419 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:581 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:588 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:614 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:623 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:641 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1377 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1383 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1389 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1392 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1395 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1402 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1473 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1476 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1479 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1485 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1488 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1495 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1499 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1503 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1507 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2160 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2218 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2224 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2243 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2249 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2255 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2262 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2268 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8032,263 +8435,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8300,82 +8711,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8412,7 +8827,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8449,71 +8864,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8539,7 +8954,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8556,7 +8971,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8611,7 +9026,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8649,7 +9064,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8657,12 +9072,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8670,30 +9094,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8702,7 +9126,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8739,7 +9163,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8747,32 +9172,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8808,7 +9235,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8825,7 +9252,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8849,50 +9276,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8911,14 +9391,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8930,11 +9410,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8946,6 +9426,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8956,13 +9440,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8988,6 +9465,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9202,44 +9680,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9257,7 +9739,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "" @@ -9433,30 +9915,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9485,7 +9967,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9499,15 +9981,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9519,27 +10001,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9551,19 +10033,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9571,23 +10061,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9620,7 +10122,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9644,7 +10146,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9702,743 +10204,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10446,89 +11044,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10548,98 +11146,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10648,32 +11266,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10698,7 +11316,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10714,363 +11332,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11078,51 +11688,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11146,254 +11752,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11422,250 +12028,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11677,686 +12283,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12388,51 +13034,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12452,11 +13098,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12472,11 +13118,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12615,50 +13261,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12667,58 +13269,98 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po index 0aed76a830..13a746d5c7 100644 --- a/InvenTree/locale/ru/LC_MESSAGES/django.po +++ b/InvenTree/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -17,422 +17,447 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "Конечная точка API не обнаружена" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" -msgstr "" +msgstr "У пользователя недостаточно прав для просмотра этой модели!" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" +msgstr "Значение не указано" + +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "Невозможно преобразовать {original} в {unit}" + +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "Недопустимое количество" + +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" -msgstr "" - -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "" - -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "" - -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Подробности об ошибке можно найти в панели администратора" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Введите дату" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Заметки" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" -msgstr "" +msgstr "Значение '{name}' отсутствует в формате шаблона" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Предоставленное значение не соответствует требуемому формату: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Введите пароль" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Введите новый пароль" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Подтвердить пароль" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Подтвердите новый пароль" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Старый пароль" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "Email (еще раз)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Подтверждение адреса электронной почты" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Вы должны вводить один и тот же адрес электронной почты." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Указанный основной адрес электронной почты неверен." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Указанный домен электронной почты не утверждён." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "Регистрация отключена." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "недопустимое количество" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Пустая строка серийного номера" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" -msgstr "" +msgstr "Повторяющийся серийный номер" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" +msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" +msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Серийных номеров не найдено" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" -msgstr "" +msgstr "Удалить HTML теги из этого значения" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Ошибка соединения" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" -msgstr "" +msgstr "Сервер ответил неверным кодом статуса" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Произошло исключение" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" -msgstr "" +msgstr "Сервер ответил неверным значением Контент-Длина" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Изображение слишком большое" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" -msgstr "" +msgstr "Загрузка изображения превышен максимальный размер" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" -msgstr "" +msgstr "Удаленный сервер вернул пустой ответ" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" -msgstr "" +msgstr "Предоставленный URL не является допустимым файлом изображения" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "[{site.name}] Войти в приложение" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "EMail" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" -msgstr "" +msgstr "Метаданные должны быть объектом python dict" + +#: InvenTree/models.py:85 +msgid "Plugin Metadata" +msgstr "Метаданные плагина" #: InvenTree/models.py:86 -msgid "Plugin Metadata" -msgstr "" - -#: InvenTree/models.py:87 msgid "JSON metadata field, for use by external plugins" -msgstr "" +msgstr "Поле метаданных JSON для использования внешними плагинами" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" -msgstr "" +msgstr "Неправильно отформатированный шаблон" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" -msgstr "" +msgstr "Указан неизвестный ключ формата" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" -msgstr "" +msgstr "Отсутствует требуемый ключ формата" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" -msgstr "" +msgstr "Ссылочный идентификатор не может быть пустым" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" -msgstr "" +msgstr "Ссылка должна соответствовать шаблону {pattern}" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" -msgstr "" +msgstr "Номер ссылки слишком большой" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Файл не найден" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Отсутствует внешняя ссылка" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Вложения" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Выберите файл для вложения" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Ссылка" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Ссылка на внешний URL" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Комментарий" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Комментарий к файлу" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Пользователь" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "дата загрузки" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Имя файла не должно быть пустым" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Неверная директория вложений" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Имя файла содержит запрещенные символы '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Отсутствует расширение для имени файла" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Вложение с таким именем файла уже существует" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Ошибка переименования файла" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" -msgstr "" +msgstr "Повторяющиеся имена не могут существовать под одним и тем же родителем" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Неверный выбор" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Название" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Описание" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Описание (необязательно)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "родитель" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Путь" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" -msgstr "" +msgstr "Описание обновления (необязательное)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" -msgstr "" +msgstr "Данные штрих-кода" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" -msgstr "" +msgstr "Данные стороннего штрих-кода" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" -msgstr "" +msgstr "Хэш штрих-кода" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" -msgstr "" +msgstr "Уникальный хэш данных штрих-кода" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" -msgstr "" +msgstr "Обнаружен существующий штрих-код" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" -msgstr "" +msgstr "Ошибка сервера" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." -msgstr "" +msgstr "Сервер зарегистрировал ошибку." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Должно быть действительным номером" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Валюта" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" -msgstr "" +msgstr "Выберите валюту из доступных вариантов" #: InvenTree/serializers.py:364 msgid "Filename" @@ -472,155 +497,167 @@ msgstr "Строки данных в файле не найдены" #: InvenTree/serializers.py:601 msgid "No data columns supplied" -msgstr "" +msgstr "Столбцы данных не предоставлены" #: InvenTree/serializers.py:678 #, python-brace-format msgid "Missing required column: '{name}'" -msgstr "" +msgstr "Отсутствует обязательный столбец: '{name}'" #: InvenTree/serializers.py:687 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Повторяющийся столбец: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "Ссылка" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" -msgstr "" +msgstr "ССЫЛКА файла изображения на удаленном сервере" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" +msgstr "Загрузка изображений с удаленного URL-адреса не включена" + +#: InvenTree/settings.py:819 +msgid "Bulgarian" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Чешский" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Датский" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Немецкий" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Греческий" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Английский" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Испанский" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Испанский (Мексика)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Фарси / Персидский" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" -msgstr "" +msgstr "Финский" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Французский" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Иврит" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "Хинди" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Венгерский" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Итальянский" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Японский" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Корейский" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Голландский" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Норвежский" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Польский" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Португальский" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Португальский (Бразильский диалект)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Русский" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Словенский" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Шведский" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Тайский" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Турецкий" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Вьетнамский" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Китайский" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "Китайский (Упрощенный)" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "Китайский (Традиционный)" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Проверка фонового работника не удалась" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "Сервер электронной почты не настроен" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "Ошибка проверки состояния системы InvenTree" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Ожидаемый" @@ -630,8 +667,8 @@ msgstr "Размещены" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Готово" @@ -652,12 +689,12 @@ msgstr "Возвращено" #: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 msgid "In Progress" -msgstr "" +msgstr "Выполняется" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Доставлено" @@ -683,13 +720,13 @@ msgstr "Отклоненный" #: InvenTree/status_codes.py:72 msgid "Quarantined" -msgstr "" +msgstr "Карантин" #: InvenTree/status_codes.py:91 msgid "Legacy stock tracking entry" msgstr "Отслеживание устаревших запасов" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Товар создан" @@ -719,7 +756,7 @@ msgstr "Расположение изменено" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "" +msgstr "Запас обновлен" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" @@ -745,13 +782,13 @@ msgstr "Отделить от родительского элемента" msgid "Split child item" msgstr "Разбить дочерний элемент" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Объединенные позиции на складе" #: InvenTree/status_codes.py:123 msgid "Converted to variant" -msgstr "" +msgstr "Преобразовать в разновидность" #: InvenTree/status_codes.py:126 msgid "Build order output created" @@ -763,25 +800,25 @@ msgstr "Вывод заказа сборки завершён" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "" +msgstr "Выходные данные заказа на сборку отклонены" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" -msgstr "" +msgstr "Потребляется по порядку сборки" #: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" -msgstr "" +msgstr "Отгружено по заказу на продажу" #: InvenTree/status_codes.py:135 msgid "Received against Purchase Order" -msgstr "" +msgstr "Получено по заказу на поставку" #: InvenTree/status_codes.py:138 msgid "Returned against Return Order" -msgstr "" +msgstr "Возвращено против заказа на возврат" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Отправлено клиенту" @@ -795,11 +832,11 @@ msgstr "Продукция" #: InvenTree/status_codes.py:191 msgid "Return" -msgstr "" +msgstr "Возврат" #: InvenTree/status_codes.py:194 msgid "Repair" -msgstr "" +msgstr "Починить" #: InvenTree/status_codes.py:197 msgid "Replace" @@ -811,121 +848,167 @@ msgstr "Возврат" #: InvenTree/status_codes.py:203 msgid "Reject" -msgstr "" +msgstr "Отклонить" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" -msgstr "" +msgstr "Неверная физическая единица" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Неверный код валюты" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Значение перегрузки не должно быть отрицательным" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Перегрузка не может превысить 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" -msgstr "" +msgstr "Неверное значение для возврата средств" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Редактировать информацию о пользователе" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Установить пароль" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Пароли должны совпадать" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" -msgstr "" +msgstr "Указан неверный пароль" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Информация о системе" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" -msgstr "" +msgstr "О программе InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" -msgstr "" +msgstr "Сборка должна быть отменена перед удалением" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "Расходники" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "Необязательно" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "Отслеживается" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "Выделено" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Доступно" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Порядок сборки" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" -msgstr "Порядок сборки" +msgstr "Заказы на сборку" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Неверный выбор для родительской сборки" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Ссылка на заказ" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Отсылка" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" -msgstr "" +msgstr "Краткое описание сборки (необязательно)" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Родительская сборка" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" -msgstr "" +msgstr "ПорядокСборки, которому выделяется эта сборка" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,723 +1017,739 @@ msgstr "" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Детали" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Выберите часть для сборки" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Отсылка на заказ" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" -msgstr "" +msgstr "ЗаказПродаж, которому выделена эта сборка" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Расположение источника" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" -msgstr "" +msgstr "Выберите местоположение для этой сборки (оставьте пустым, чтобы взять с любого места на складе)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Место назначения" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Выберите место хранения завершенных элементов" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Количество сборки" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Количество складских предметов для сборки" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Завершенные предметы" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Количество предметов на складе, которые были завершены" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Статус сборки" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Код статуса сборки" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Код партии" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Код партии для этого вывода сборки" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Дата создания" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Целевая дата завершения" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Целевая дата для сборки. Сборка будет просрочена после этой даты." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Дата завершения" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "выполнено" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Выдал/ла" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Пользователь, выпустивший этот заказ на сборку" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Ответственный" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" -msgstr "" +msgstr "Пользователь, ответственный за сборку этого заказа" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Внешняя ссылка" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" -msgstr "" +msgstr "Приоритет сборки" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" -msgstr "" +msgstr "Приоритет этого порядка сборки заказа" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "Код проекта" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "Код проекта для этого заказа сборки" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" -msgstr "" +msgstr "Заказ на сборку {build} был завершен" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" -msgstr "" +msgstr "Заказ на сборку был завершен" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Вывод сборки не указан" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Вывод сборки уже завершен" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "Вывод сборки не совпадает с порядком сборки" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "Количество должно быть больше нуля" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" -msgstr "" +msgstr "Количество не может быть больше выходного количества" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Элемент сборки должен указать вывод сборки, так как основная часть помечена как отслеживаемая" +#: build/models.py:1266 +msgid "Build object" +msgstr "Построить объект" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "Предмет на складе перераспределен" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Выделенное количество должно быть больше нуля" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "Количество должно быть 1 для сериализованных запасов" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Выбранная единица хранения не найдена в BOM" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Сборка" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Предметы на складе" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Исходный складской предмет" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Количество" -#: build/models.py:1469 -msgid "Stock quantity to allocate to build" -msgstr "" +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "Требуемое количество для заказа сборки" -#: build/models.py:1477 +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "Элемент сборки должен указать вывод сборки, так как основная часть помечена как отслеживаемая" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "Выделенное количество ({q}) не должно превышать доступное количество на складе ({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "Предмет на складе перераспределен" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Выделенное количество должно быть больше нуля" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Количество должно быть 1 для сериализованных запасов" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "Выбранный товар на складе не соответствует строке BOM" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Предметы на складе" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Исходный складской предмет" + +#: build/models.py:1539 +msgid "Stock quantity to allocate to build" +msgstr "Количество на складе для построения" + +#: build/models.py:1547 msgid "Install into" msgstr "Установить в" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" -msgstr "" +msgstr "Целевой товар на складе" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" -msgstr "" +msgstr "Вывод результата сборки" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "Результат сборки не совпадает с родительской сборкой" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" -msgstr "" +msgstr "Выходная часть не соответствует части BuildOrder" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "Результат этой сборки уже помечен как завершенный" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" -msgstr "" +msgstr "Этот вывод сборки не полностью выделен" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "Введите количество для вывода сборки" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" -msgstr "" +msgstr "Для отслеживаемых деталей должно быть указано целочисленное количество" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" -msgstr "" +msgstr "Требуется целое количество, так как материал содержит отслеживаемые детали" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Серийные номера" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "Введите серийные номера для результатов сборки" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" -msgstr "" +msgstr "Автоматически выделить серийные номера" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" -msgstr "" +msgstr "Автоматически выделять необходимые элементы с соответствующими серийными номерами" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" -msgstr "" +msgstr "Следующие серийные номера уже существуют или недействительны" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" -msgstr "" +msgstr "Необходимо представить список результатов сборки" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Расположение" -#: build/serializers.py:416 -msgid "Stock location for scrapped outputs" -msgstr "" - #: build/serializers.py:422 -msgid "Discard Allocations" -msgstr "" - -#: build/serializers.py:423 -msgid "Discard any stock allocations for scrapped outputs" -msgstr "" +msgid "Stock location for scrapped outputs" +msgstr "Расположение на складе для обрытых результатов" #: build/serializers.py:428 +msgid "Discard Allocations" +msgstr "Отклонить распределения" + +#: build/serializers.py:429 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "Отменить любые распределения запасов для отбракованных выходов" + +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" -msgstr "" +msgstr "Причина ломания вывода(ов) сборки" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" -msgstr "" +msgstr "Расположение для завершенных выходов сборки" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Статус" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" -msgstr "" +msgstr "Принять неполное распределение" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" -msgstr "" +msgstr "Выходы, если запасы не были полностью распределены" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" -msgstr "" +msgstr "Удалить выделенный запас" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" -msgstr "" +msgstr "Вычесть запасы, которые уже были выделены для этой сборки" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" -msgstr "" +msgstr "Удалить неполные выходные данные" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" -msgstr "" +msgstr "Удалить все результаты сборки, которые не были завершены" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" -msgstr "" +msgstr "Нет разрешения" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" -msgstr "" +msgstr "Принять как потребляемые этим порядком сборки" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" -msgstr "" +msgstr "Распределить до завершения заказа на сборку" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" -msgstr "" +msgstr "Перераспределенные запасы" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" -msgstr "" +msgstr "Как вы хотите обработать дополнительные товары, назначенные для заказа на сборку" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" -msgstr "" +msgstr "Некоторые товары на складе перераспределены" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" -msgstr "" +msgstr "Принять снято" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" -msgstr "" +msgstr "Подтвердите, что товары на складе не были полностью выделены для этого заказа на сборку" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" -msgstr "" +msgstr "Необходимые запасы не были выделены полностью" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" -msgstr "" +msgstr "Принять незавершенные" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" -msgstr "" +msgstr "Принять, что требуемое количество результатов сборки не было завершено" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" -msgstr "" +msgstr "Обязательное количество сборки не было завершено" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" -msgstr "" +msgstr "Порядок сборки имеет незавершенные результаты" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "BOM Компонент" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "Строка сборки" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" -msgstr "" +msgstr "Вывод сборки" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" -msgstr "" +msgstr "Вывод сборки должен указывать на ту же сборку" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "Сборка Линии Предмет" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" -msgstr "" +msgstr "bom_item.part должна указывать на ту же часть, что и порядок сборки" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "Компонент должен быть в наличии" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Превышено доступное количество ({q})" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" -msgstr "" +msgstr "Вывод сборки должен быть определен для распределения отслеживаемых частей" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" -msgstr "" +msgstr "Вывод сборки не может быть указан для распределения неотслеживаемых частей" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" -msgstr "" +msgstr "Необходимо указать пункты распределения" #: build/serializers.py:943 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" -msgstr "" +msgstr "Расположение склада, где будут переданы части (оставьте пустым, чтобы забрать их из любого места)" #: build/serializers.py:951 msgid "Exclude Location" -msgstr "" +msgstr "Исключить местоположение" #: build/serializers.py:952 msgid "Exclude stock items from this selected location" -msgstr "" +msgstr "Исключить товары на складе из этого выбранного места" #: build/serializers.py:957 msgid "Interchangeable Stock" -msgstr "" +msgstr "Обменный остаток" #: build/serializers.py:958 msgid "Stock items in multiple locations can be used interchangeably" -msgstr "" +msgstr "Товары на складе в нескольких местах могут использоваться на взаимозаменяемой основе" #: build/serializers.py:963 msgid "Substitute Stock" -msgstr "" +msgstr "Заменить запасы" #: build/serializers.py:964 msgid "Allow allocation of substitute parts" -msgstr "" +msgstr "Разрешить распределение замещающих частей" #: build/serializers.py:969 msgid "Optional Items" -msgstr "" +msgstr "Необязательные элементы" #: build/serializers.py:970 msgid "Allocate optional BOM items to build order" -msgstr "" +msgstr "Выделить дополнительные BOM предметы для заказа" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "Для заказа сборки необходим остаток" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" -msgstr "" +msgstr "Просроченный заказ сборки" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" -msgstr "" +msgstr "Заказ на сборку {bo} просрочен" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" -msgstr "" +msgstr "Миниатюра детали" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "Действия со штрих-кодом" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" -msgstr "" +msgstr "Показать QR-код" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" -msgstr "" +msgstr "Отвязать штрих-код" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" -msgstr "" +msgstr "Привязать штрих-код" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "Печать" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "Печать отчета о заказе сборки" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "Действия со сборкой" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Редактировать сборку" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Отменить сборку" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" -msgstr "" +msgstr "Дублировать сборку" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "Удалить сборку" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "Завершить сборку" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "Описание сборки" #: build/templates/build/build_base.html:117 msgid "No build outputs have been created for this build order" -msgstr "" +msgstr "Нет результатов сборки для этого заказа сборки" #: build/templates/build/build_base.html:124 msgid "Build Order is ready to mark as completed" -msgstr "" +msgstr "Заказ на сборку готов к отметке как выполненный" #: build/templates/build/build_base.html:129 msgid "Build Order cannot be completed as outstanding outputs remain" -msgstr "" +msgstr "Заказ на сборку не может быть выполнен, так как остались невыполненные результаты" #: build/templates/build/build_base.html:134 msgid "Required build quantity has not yet been completed" -msgstr "" +msgstr "Требуемый объем сборки еще не был завершен" #: build/templates/build/build_base.html:139 msgid "Stock has not been fully allocated to this Build Order" msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "Целевая дата" @@ -1661,49 +1760,48 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "Просрочено" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Завершённые" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "Заказ покупателя" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Выдано" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" -msgstr "" +msgstr "Приоритет" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" @@ -1711,11 +1809,11 @@ msgstr "Удалить заказ на сборку" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "" +msgstr "Создать QR-код заказа" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "" +msgstr "Привязать штрих-код для заказа сборки" #: build/templates/build/detail.html:15 msgid "Build Details" @@ -1723,14 +1821,14 @@ msgstr "Подробности сборки" #: build/templates/build/detail.html:38 msgid "Stock Source" -msgstr "" +msgstr "Складской источник" #: build/templates/build/detail.html:43 msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "Назначение" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "Партия" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "Создано" @@ -1766,147 +1864,106 @@ msgstr "Создано" msgid "No target date set" msgstr "Нет конечной даты" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Завершённые" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "Сборка не завершена" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" -msgstr "" +msgstr "Порожденные заказы на сборку" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "Заказать детали" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "Вывод" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Приложения" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "Заметки сборки" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "Новый заказ на сборку" @@ -1914,14 +1971,10 @@ msgstr "Новый заказ на сборку" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "Незавершенные выходные данные" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "Выберите {name} файл для загрузки" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" -msgstr "" +msgstr "Обновлено" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "Требуется перезапуск" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" -msgstr "" +msgstr "Название инстанса" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Название компании" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "Внутреннее название компании" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "Базовая ссылка" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "Базовая ссылка для экземпляра сервера" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Валюта по умолчанию" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "Скачать по ссылке" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "Разрешить повторяющиеся IPN" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" + +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" +msgstr "дней" + +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Скачать по ссылке" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Разрешить загрузку удаленных изображений и файлов по внешнему URL" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "Ограничение размера загрузки" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "Максимально допустимый размер загрузки для удалённого изображения" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "User-Agent, используемый для загрузки из URL" + +#: common/models.py:1164 +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "Позволяет переопределить user-Agent, используемый для загрузки изображений и файлов с внешнего URL (оставьте пустым по умолчанию)" + +#: common/models.py:1169 +msgid "Require confirm" +msgstr "Требуется подтверждение" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "Требовать явное подтверждение пользователя для определенного действия." + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "Глубина дерева" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "Глубина дерева по умолчанию для просмотра дерева. Глубокие уровни загружены по мере необходимости." + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "Интервал проверки обновлений" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "Как часто проверять наличие обновлений (установите ноль чтобы выключить)" + +#: common/models.py:1197 +msgid "Automatic Backup" +msgstr "Автоматическое резервное копирование" + +#: common/models.py:1198 +msgid "Enable automatic backup of database and media files" +msgstr "Включить автоматическое резервное копирование базы данных и медиа-файлов" + +#: common/models.py:1204 +msgid "Auto Backup Interval" +msgstr "Интервал автосохранения" + +#: common/models.py:1205 +msgid "Specify number of days between automated backup events" +msgstr "Укажите количество дней между событиями автоматического резервного копирования" + +#: common/models.py:1215 +msgid "Task Deletion Interval" +msgstr "Интервал удаления задачи" + +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" +msgstr "Результаты фоновых задач будут удалены после указанного количества дней" + +#: common/models.py:1226 +msgid "Error Log Deletion Interval" +msgstr "Интервал удаления журнала ошибок" + +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" +msgstr "Журналы ошибок будут удалены после указанного количества дней" + +#: common/models.py:1237 +msgid "Notification Deletion Interval" +msgstr "Интервал удаления уведомления" + +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" +msgstr "Уведомления пользователя будут удалены после указанного количества дней" + +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "Поддержка штрих-кодов" + +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" + +#: common/models.py:1255 +msgid "Barcode Input Delay" +msgstr "Задержка сканирования штрих-кода" + +#: common/models.py:1256 +msgid "Barcode input processing delay time" +msgstr "Время задержки обработки штрих-кода" + +#: common/models.py:1266 +msgid "Barcode Webcam Support" +msgstr "Поддержка веб-камер штрих-кодов" + +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" +msgstr "Разрешить сканирование штрих-кода через веб-камеру в браузере" + +#: common/models.py:1273 +msgid "Part Revisions" +msgstr "Ревизия деталей" + +#: common/models.py:1274 +msgid "Enable revision field for Part" +msgstr "" + +#: common/models.py:1280 +msgid "IPN Regex" +msgstr "" + +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" +msgstr "" + +#: common/models.py:1285 +msgid "Allow Duplicate IPN" +msgstr "Разрешить повторяющиеся IPN" + +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" +msgstr "" + +#: common/models.py:1292 msgid "Allow Editing IPN" msgstr "Разрешить редактирование IPN" -#: common/models.py:1128 +#: common/models.py:1293 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1134 +#: common/models.py:1299 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1135 +#: common/models.py:1300 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1141 +#: common/models.py:1306 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1142 +#: common/models.py:1307 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1148 +#: common/models.py:1313 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1149 +#: common/models.py:1314 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1155 +#: common/models.py:1320 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1156 +#: common/models.py:1321 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Шаблон" -#: common/models.py:1163 +#: common/models.py:1328 msgid "Parts are templates by default" msgstr "По умолчанию детали являются шаблонами" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Сборка" -#: common/models.py:1170 +#: common/models.py:1335 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Компонент" -#: common/models.py:1177 +#: common/models.py:1342 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 +#: common/models.py:1348 part/admin.py:53 part/models.py:981 msgid "Purchaseable" -msgstr "" +msgstr "Можно купить" -#: common/models.py:1184 +#: common/models.py:1349 msgid "Parts are purchaseable by default" -msgstr "" +msgstr "По умолчанию детали являются отслеживаемыми" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Можно продавать" -#: common/models.py:1191 +#: common/models.py:1356 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Отслеживание" -#: common/models.py:1198 +#: common/models.py:1363 msgid "Parts are trackable by default" msgstr "По умолчанию детали являются отслеживаемыми" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 msgid "Virtual" -msgstr "" +msgstr "Виртуальная" -#: common/models.py:1205 +#: common/models.py:1370 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1211 +#: common/models.py:1376 msgid "Show Import in Views" msgstr "" -#: common/models.py:1212 +#: common/models.py:1377 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1218 +#: common/models.py:1383 msgid "Show related parts" msgstr "Показывать связанные детали" -#: common/models.py:1219 +#: common/models.py:1384 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1225 +#: common/models.py:1390 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1226 +#: common/models.py:1391 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 +#: common/models.py:1397 templates/js/translated/part.js:107 msgid "Initial Supplier Data" -msgstr "" +msgstr "Исходные данные о поставщике" -#: common/models.py:1233 +#: common/models.py:1398 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1239 +#: common/models.py:1404 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1240 +#: common/models.py:1405 msgid "Format to display the part name" msgstr "" -#: common/models.py:1247 +#: common/models.py:1412 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1248 +#: common/models.py:1413 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1253 +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1425 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1254 +#: common/models.py:1426 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1264 +#: common/models.py:1436 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1265 +#: common/models.py:1437 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1275 +#: common/models.py:1447 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1276 +#: common/models.py:1448 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1282 +#: common/models.py:1454 msgid "Purchase History Override" msgstr "" -#: common/models.py:1283 +#: common/models.py:1455 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1289 +#: common/models.py:1461 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1290 +#: common/models.py:1462 msgid "Use pricing from manually entered stock data for pricing calculations" -msgstr "" +msgstr "Использовать расценки из ручного ввода данных о запасах для расчета цен" -#: common/models.py:1296 +#: common/models.py:1468 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1297 +#: common/models.py:1469 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1307 +#: common/models.py:1479 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1308 +#: common/models.py:1480 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1314 +#: common/models.py:1486 msgid "Active Variants Only" msgstr "" -#: common/models.py:1315 +#: common/models.py:1487 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1321 +#: common/models.py:1493 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1322 +#: common/models.py:1494 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1332 +#: common/models.py:1504 msgid "Internal Prices" msgstr "" -#: common/models.py:1333 +#: common/models.py:1505 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1339 +#: common/models.py:1511 msgid "Internal Price Override" msgstr "" -#: common/models.py:1340 +#: common/models.py:1512 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1346 +#: common/models.py:1518 msgid "Enable label printing" msgstr "" -#: common/models.py:1347 +#: common/models.py:1519 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1353 +#: common/models.py:1525 msgid "Label Image DPI" msgstr "" -#: common/models.py:1354 +#: common/models.py:1526 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1363 +#: common/models.py:1535 msgid "Enable Reports" msgstr "" -#: common/models.py:1364 +#: common/models.py:1536 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1370 templates/stats.html:25 +#: common/models.py:1542 templates/stats.html:25 msgid "Debug Mode" msgstr "Режим отладки" -#: common/models.py:1371 +#: common/models.py:1543 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1377 +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 msgid "Page Size" msgstr "" -#: common/models.py:1378 +#: common/models.py:1550 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1388 +#: common/models.py:1556 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1389 +#: common/models.py:1557 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1395 +#: common/models.py:1563 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1396 +#: common/models.py:1564 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1402 +#: common/models.py:1570 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1403 +#: common/models.py:1571 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1409 +#: common/models.py:1577 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1410 +#: common/models.py:1578 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1416 +#: common/models.py:1584 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1417 +#: common/models.py:1585 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1423 +#: common/models.py:1591 msgid "Batch Code Template" msgstr "" -#: common/models.py:1424 +#: common/models.py:1592 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1429 +#: common/models.py:1597 msgid "Stock Expiry" msgstr "" -#: common/models.py:1430 +#: common/models.py:1598 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1436 +#: common/models.py:1604 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1437 +#: common/models.py:1605 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1443 +#: common/models.py:1611 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1444 +#: common/models.py:1612 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1451 +#: common/models.py:1619 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1452 +#: common/models.py:1620 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1458 +#: common/models.py:1626 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1459 +#: common/models.py:1627 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1465 +#: common/models.py:1633 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1466 +#: common/models.py:1634 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1471 +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1646 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1472 +#: common/models.py:1647 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1478 +#: common/models.py:1653 msgid "Enable Return Orders" -msgstr "" +msgstr "Включить возврат заказов" -#: common/models.py:1479 +#: common/models.py:1654 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1485 +#: common/models.py:1660 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1486 +#: common/models.py:1661 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1492 +#: common/models.py:1667 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1493 +#: common/models.py:1668 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1499 +#: common/models.py:1674 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1500 +#: common/models.py:1675 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1506 +#: common/models.py:1681 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1507 +#: common/models.py:1682 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1513 +#: common/models.py:1688 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1514 +#: common/models.py:1689 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1520 +#: common/models.py:1695 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1521 +#: common/models.py:1696 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1527 +#: common/models.py:1702 msgid "Edit Completed Purchase Orders" -msgstr "" +msgstr "Редактировать завершенные заказы на покупку" -#: common/models.py:1528 +#: common/models.py:1703 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1535 +#: common/models.py:1710 msgid "Enable password forgot" msgstr "" -#: common/models.py:1536 +#: common/models.py:1711 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1542 +#: common/models.py:1717 msgid "Enable registration" msgstr "" -#: common/models.py:1543 +#: common/models.py:1718 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1549 +#: common/models.py:1724 msgid "Enable SSO" msgstr "" -#: common/models.py:1550 +#: common/models.py:1725 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1556 +#: common/models.py:1731 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1557 +#: common/models.py:1732 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1563 +#: common/models.py:1738 msgid "Email required" msgstr "Необходимо указать EMail" -#: common/models.py:1564 +#: common/models.py:1739 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1570 +#: common/models.py:1745 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1571 +#: common/models.py:1746 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1577 +#: common/models.py:1752 msgid "Mail twice" msgstr "" -#: common/models.py:1578 +#: common/models.py:1753 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1584 +#: common/models.py:1759 msgid "Password twice" msgstr "" -#: common/models.py:1585 +#: common/models.py:1760 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1591 +#: common/models.py:1766 msgid "Allowed domains" msgstr "" -#: common/models.py:1592 +#: common/models.py:1767 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1598 +#: common/models.py:1773 msgid "Group on signup" msgstr "" -#: common/models.py:1599 +#: common/models.py:1774 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1605 +#: common/models.py:1780 msgid "Enforce MFA" msgstr "" -#: common/models.py:1606 +#: common/models.py:1781 msgid "Users must use multifactor security." -msgstr "" +msgstr "Пользователи должны использовать многофакторную безопасность." -#: common/models.py:1612 +#: common/models.py:1787 msgid "Check plugins on startup" -msgstr "" +msgstr "Проверять плагины при запуске" -#: common/models.py:1613 +#: common/models.py:1788 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1620 -msgid "Check plugin signatures" -msgstr "" - -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "" - -#: common/models.py:1628 +#: common/models.py:1796 msgid "Enable URL integration" msgstr "" -#: common/models.py:1629 +#: common/models.py:1797 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1636 +#: common/models.py:1804 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1637 +#: common/models.py:1805 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1644 +#: common/models.py:1812 msgid "Enable app integration" msgstr "" -#: common/models.py:1645 +#: common/models.py:1813 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1652 +#: common/models.py:1820 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1653 +#: common/models.py:1821 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1660 +#: common/models.py:1828 msgid "Enable event integration" msgstr "" -#: common/models.py:1661 +#: common/models.py:1829 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1668 +#: common/models.py:1836 msgid "Enable project codes" msgstr "" -#: common/models.py:1669 +#: common/models.py:1837 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1675 +#: common/models.py:1843 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1676 +#: common/models.py:1844 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1682 -msgid "Automatic Stocktake Period" -msgstr "" - -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" -msgstr "" - -#: common/models.py:1692 -msgid "Report Deletion Interval" -msgstr "" - -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" -msgstr "" - -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" -msgstr "" - -#: common/models.py:1751 -msgid "Hide inactive parts" -msgstr "" - -#: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" -msgstr "" - -#: common/models.py:1758 -msgid "Show subscribed parts" -msgstr "Показывать детали, на которые включены уведомления" - -#: common/models.py:1759 -msgid "Show subscribed parts on the homepage" -msgstr "Показывать детали, на которые включены уведомления, на главной странице" - -#: common/models.py:1765 -msgid "Show subscribed categories" -msgstr "Показывать категории, на которые включены уведомления" - -#: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" -msgstr "Показывать категории, на которые включены уведомления, на главной странице" - -#: common/models.py:1772 -msgid "Show latest parts" -msgstr "Показывать последние детали" - -#: common/models.py:1773 -msgid "Show latest parts on the homepage" -msgstr "Показывать последние детали на главной странице" - -#: common/models.py:1779 -msgid "Recent Part Count" -msgstr "" - -#: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "" - -#: common/models.py:1786 -msgid "Show unvalidated BOMs" -msgstr "Показывать непроверенные BOMы" - -#: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" -msgstr "Показывать BOMы, ожидающие проверки, на главной странице" - -#: common/models.py:1793 -msgid "Show recent stock changes" -msgstr "Показывать изменившиеся складские запасы" - -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" -msgstr "Показывать единицы хранения с недавно изменившимися складскими запасами на главной странице" - -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "" - -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "" - -#: common/models.py:1807 -msgid "Show low stock" -msgstr "Показывать низкие складские запасы" - -#: common/models.py:1808 -msgid "Show low stock items on the homepage" -msgstr "Показывать единицы хранения с низкими складскими запасами на главной странице" - -#: common/models.py:1814 -msgid "Show depleted stock" -msgstr "Показывать закончившиеся детали" - -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" -msgstr "Показывать закончившиеся на складе единицы хранения на главной странице" - -#: common/models.py:1821 -msgid "Show needed stock" -msgstr "Показывать требуемые детали" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" -msgstr "Показывать требуемые для сборки единицы хранения на главной странице" - -#: common/models.py:1828 -msgid "Show expired stock" -msgstr "Показывать просрочку" - -#: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "Показывать единицы хранения с истёкшим сроком годности на главной странице" - -#: common/models.py:1835 -msgid "Show stale stock" -msgstr "Показывать залежалые" - -#: common/models.py:1836 -msgid "Show stale stock items on the homepage" -msgstr "Показывать залежалые единицы хранения на главной странице" - -#: common/models.py:1842 -msgid "Show pending builds" -msgstr "Показывать незавершённые сборки" - -#: common/models.py:1843 -msgid "Show pending builds on the homepage" -msgstr "Показывать незавершённые сборки на главной странице" - -#: common/models.py:1849 -msgid "Show overdue builds" -msgstr "Показывать просроченные сборки" - #: common/models.py:1850 -msgid "Show overdue builds on the homepage" -msgstr "Показывать просроченные сборки на главной странице" +msgid "Exclude External Locations" +msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" -msgstr "" +#: common/models.py:1932 +msgid "Show subscribed parts" +msgstr "Показывать детали, на которые включены уведомления" #: common/models.py:1933 -msgid "Search Manufacturer Parts" -msgstr "" +msgid "Show subscribed parts on the homepage" +msgstr "Показывать детали, на которые включены уведомления, на главной странице" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" -msgstr "" +#: common/models.py:1939 +msgid "Show subscribed categories" +msgstr "Показывать категории, на которые включены уведомления" #: common/models.py:1940 -msgid "Hide Inactive Parts" -msgstr "" +msgid "Show subscribed part categories on the homepage" +msgstr "Показывать категории, на которые включены уведомления, на главной странице" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" -msgstr "" +#: common/models.py:1946 +msgid "Show latest parts" +msgstr "Показывать последние детали" #: common/models.py:1947 -msgid "Search Categories" -msgstr "" +msgid "Show latest parts on the homepage" +msgstr "Показывать последние детали на главной странице" -#: common/models.py:1948 -msgid "Display part categories in search preview window" -msgstr "" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" +msgstr "Показывать непроверенные BOMы" #: common/models.py:1954 -msgid "Search Stock" -msgstr "" +msgid "Show BOMs that await validation on the homepage" +msgstr "Показывать BOMы, ожидающие проверки, на главной странице" -#: common/models.py:1955 -msgid "Display stock items in search preview window" -msgstr "" +#: common/models.py:1960 +msgid "Show recent stock changes" +msgstr "Показывать изменившиеся складские запасы" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" -msgstr "" +msgid "Show recently changed stock items on the homepage" +msgstr "Показывать единицы хранения с недавно изменившимися складскими запасами на главной странице" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" -msgstr "" +#: common/models.py:1967 +msgid "Show low stock" +msgstr "Показывать низкие складские запасы" #: common/models.py:1968 -msgid "Search Locations" -msgstr "" +msgid "Show low stock items on the homepage" +msgstr "Показывать единицы хранения с низкими складскими запасами на главной странице" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" -msgstr "" +#: common/models.py:1974 +msgid "Show depleted stock" +msgstr "Показывать закончившиеся детали" #: common/models.py:1975 -msgid "Search Companies" -msgstr "" +msgid "Show depleted stock items on the homepage" +msgstr "Показывать закончившиеся на складе единицы хранения на главной странице" -#: common/models.py:1976 -msgid "Display companies in search preview window" -msgstr "" +#: common/models.py:1981 +msgid "Show needed stock" +msgstr "Показывать требуемые детали" #: common/models.py:1982 -msgid "Search Build Orders" -msgstr "" +msgid "Show stock items needed for builds on the homepage" +msgstr "Показывать требуемые для сборки единицы хранения на главной странице" -#: common/models.py:1983 -msgid "Display build orders in search preview window" -msgstr "" +#: common/models.py:1988 +msgid "Show expired stock" +msgstr "Показывать просрочку" #: common/models.py:1989 -msgid "Search Purchase Orders" -msgstr "" +msgid "Show expired stock items on the homepage" +msgstr "Показывать единицы хранения с истёкшим сроком годности на главной странице" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" -msgstr "" +#: common/models.py:1995 +msgid "Show stale stock" +msgstr "Показывать залежалые" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" -msgstr "" +msgid "Show stale stock items on the homepage" +msgstr "Показывать залежалые единицы хранения на главной странице" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" -msgstr "" +#: common/models.py:2002 +msgid "Show pending builds" +msgstr "Показывать незавершённые сборки" #: common/models.py:2003 -msgid "Search Sales Orders" -msgstr "" +msgid "Show pending builds on the homepage" +msgstr "Показывать незавершённые сборки на главной странице" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" -msgstr "" +#: common/models.py:2009 +msgid "Show overdue builds" +msgstr "Показывать просроченные сборки" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" -msgstr "" +msgid "Show overdue builds on the homepage" +msgstr "Показывать просроченные сборки на главной странице" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "Искать заказы на сборку" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "Отображать заказы на сборку в окне предварительного просмотра поиска" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "Поиск заказов на продажу" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 +msgid "Search Return Orders" +msgstr "Поиск возвращенных заказов" + +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "Планирование деталей" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "Запасы деталей" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Цена" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" -msgstr "" +msgstr "Активный" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3464,7 +3566,7 @@ msgstr "Загрузить файл" #: part/templates/part/import_wizard/match_fields.html:52 part/views.py:109 #: templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" -msgstr "" +msgstr "Поля Соответствия" #: common/views.py:87 msgid "Match Items" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "Детали импортированы" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "Описание компании" msgid "Description of the company" msgstr "Описание компании" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "Сайт" @@ -3507,331 +3609,395 @@ msgstr "Сайт" msgid "Company website URL" msgstr "Сайт компании" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Адрес" - -#: company/models.py:119 -msgid "Company address" -msgstr "Адрес компании" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Телефон" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "Контактный телефон" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "EMail" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "Контактный EMail" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "Контакт" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "Контактное лицо" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "Ссылка на описание компании" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "покупатель" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "Вы продаёте детали этой компании?" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "поставщик" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "Вы закупаете детали у этой компании?" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "производитель" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "Является ли компания производителем деталей?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "Для этой компании используется валюта по умолчанию" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "Компания" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "Выберите компанию" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Базовая деталь" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "Выберите деталь" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Производитель" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Выберите производителя" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "Код производителя" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "Ссылка на сайт производителя" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "Деталь производителя" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "Наименование параметра" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Значение" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "Значение параметра" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "Ед.изм" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "Единицы измерения" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Поставщик" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "Выберите поставщика" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "Код поставщика" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" -msgstr "" +msgstr "Выберите производителя части" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "Ссылка на сайт поставщика" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "Заметка" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" -msgstr "" +msgstr "базовая стоимость" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Упаковка" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "Для этого поставщика используется валюта по умолчанию" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "Создать заказ на закупку" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "Действия с компанией" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "Редактировать информацию о компании" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "Редактировать компанию" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "Удалить компанию" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "Удалить компанию" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "Удалить компанию" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "Загрузить новое изображение" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "Скачать изображение по ссылке" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Покупатель" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "Использовать валюту по умолчанию" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Адрес" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "Телефон" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "Загрузить изображение" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "Скачать изображение" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "Детали поставщиков" @@ -3916,156 +4089,144 @@ msgstr "Создать новую деталь поставщика" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "Новая деталь поставщика" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "Заказать детали" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "Удалить детали" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "Удалить детали" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "Детали производителей" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "Создать новую деталь производителя" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "Новая деталь производителя" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "Склад поставщика" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "Заказы на закупку" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "Создать новый заказ на закупку" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "Новый заказ на закупку" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "Заказы на продажу" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "Создать новый заказ на продажу" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "Новый заказ на продажу" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "Заметки о компании" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "Список поставщиков" +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "Производители" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "Поставщики" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "Удалить деталь поставщика" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "Удалить" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Параметры" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "Новый параметр" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "Удалить параметры" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "Добавить параметр" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "Деталь поставщика" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "Редактировать деталь поставщика" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "Создать единицу хранения" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "Новая единица хранения" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "Информация о цене" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "Детали на складе" @@ -4244,102 +4392,95 @@ msgstr "Детали на складе" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "Новый поставщик" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "Новый производитель" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "Покупатели" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "Новый покупатель" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "Компании" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "Новая компания" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "Ширина [мм]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "Высота [мм]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "Фильтры" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "Общая стоимость" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "Заказ на закупку" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" -msgstr "" +msgstr "Контакт не соответствует выбранной компании" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" -msgstr "" +msgstr "Описание заказа (дополнительно)" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" -msgstr "" +msgstr "Выберите код проекта для этого заказа" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" -msgstr "" +msgstr "Пользователь или группа, ответственная за этот заказ" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "Компания, в которой детали заказываются" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "Компания, которой детали продаются" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" -msgstr "" +msgstr "Описание товара (необязательно)" + +#: order/models.py:1122 +msgid "Context" +msgstr "Контекст" #: order/models.py:1123 -msgid "Context" -msgstr "" - -#: order/models.py:1124 msgid "Additional context for this line" -msgstr "" +msgstr "Дополнительный контекст для этой строки" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Закупочная цена" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "Цена продажи" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" -msgstr "" +msgstr "Информация об отслеживании доставки" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" -msgstr "" +msgstr "Укажите количество на складе" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" -msgstr "" +msgstr "Выберите товар возврата от клиента" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "Курс покупки валюты" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" -msgstr "" +msgstr "Выберите место назначения для полученных товаров" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "Введите код партии для поступающих единиц хранения" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" -msgstr "" +msgstr "Введите серийные номера для входящих товаров на складе" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "Для отслеживаемых деталей должно быть указано целочисленное количество" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "Курс продажи валюты" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" -msgstr "" +msgstr "Введите серийные номера для выделения" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "Действия с заказом" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "Отменить заказ" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" -msgstr "" +msgstr "Описание заказа" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5041,14 +5178,14 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:9 #: templates/patterns/wizard/match_fields.html:8 msgid "Missing selections for the following required columns" -msgstr "" +msgstr "Отсутствует выбор для следующих обязательных столбцов" #: order/templates/order/order_wizard/match_fields.html:20 #: part/templates/part/import_wizard/ajax_match_fields.html:20 #: part/templates/part/import_wizard/match_fields.html:20 #: templates/patterns/wizard/match_fields.html:19 msgid "Duplicate selections found, see below. Fix them then retry submitting." -msgstr "" +msgstr "Найдены дубликаты выделений, смотрите ниже. Исправьте их и попробуйте повторить отправку." #: order/templates/order/order_wizard/match_fields.html:29 #: order/templates/order/order_wizard/match_parts.html:21 @@ -5056,7 +5193,7 @@ msgstr "" #: part/templates/part/import_wizard/match_references.html:21 #: templates/patterns/wizard/match_fields.html:28 msgid "Submit Selections" -msgstr "" +msgstr "Отправить выбранные" #: order/templates/order/order_wizard/match_fields.html:35 #: part/templates/part/import_wizard/ajax_match_fields.html:28 @@ -5077,7 +5214,7 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:60 #: templates/patterns/wizard/match_fields.html:59 msgid "Duplicate selection" -msgstr "" +msgstr "Дублировать выбранное" #: order/templates/order/order_wizard/match_fields.html:71 #: order/templates/order/order_wizard/match_parts.html:52 @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "Удалить строку" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Действия" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "Заказ на продажу не найден" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "Цена не найдена" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "Артикул" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "Наименование детали" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" -msgstr "" +msgstr "Описание детали" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "Версия" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Ключевые слова" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "Код категории" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" -msgstr "" +msgstr "Название категории" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,140 +5490,133 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Разновидность" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Минимальный запас" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "На складе" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" -msgstr "" +msgstr "В заказе" #: part/admin.py:63 part/templates/part/part_sidebar.html:27 msgid "Used In" -msgstr "Сборки" +msgstr "Используется в" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "Путь к категории" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "Детали" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "IPN" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" -msgstr "" +msgstr "Необходимо выбрать эту опцию" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Место хранения по умолчанию" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "Доступный запас" @@ -5499,461 +5624,468 @@ msgstr "Доступный запас" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Категория детали" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" -msgstr "" +msgstr "Категория детали" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "Место хранения по умолчанию для деталей этой категории" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" -msgstr "" +msgstr "Структура" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." -msgstr "" +msgstr "Детали не могут быть непосредственно отнесены к структурной категории, но могут быть отнесены к дочерним категориям." -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "Ключевые слова по умолчанию" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "Ключевые слова по умолчанию для деталей этой категории" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" -msgstr "" +msgstr "Иконка" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" -msgstr "" +msgstr "Иконка (необязательно)" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "IPN должен совпадать с регулярным выражением {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "Наименование детали" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "Шаблон" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "Эта деталь является шаблоном для других деталей?" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "Эта деталь является разновидностью другой детали?" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" -msgstr "" +msgstr "Описание детали (необязательно)" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "Ключевые слова для улучшения видимости в результатах поиска" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "Категория" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "Категория" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "Внутренний код детали" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "Версия детали" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "Где обычно хранится эта деталь?" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" -msgstr "" +msgstr "Срок действия по умолчанию" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" -msgstr "" +msgstr "Срок годности (в днях) для товаров на складе этой позиции" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "Минимально допустимый складской запас" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" -msgstr "" +msgstr "Единицы измерения этой детали" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Может ли эта деталь быть создана из других деталей?" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Может ли эта деталь использоваться для создания других деталей?" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "Является ли каждый экземпляр этой детали уникальным, обладающим серийным номером?" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "Может ли эта деталь быть закуплена у внешних поставщиков?" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "Может ли эта деталь быть продана покупателям?" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "Эта деталь актуальна?" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "Эта деталь виртуальная, как программный продукт или лицензия?" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" -msgstr "" +msgstr "Тестовые шаблоны могут быть созданы только для отслеживаемых деталей" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" -msgstr "" +msgstr "Название теста" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" -msgstr "" +msgstr "Введите имя для теста" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" -msgstr "" +msgstr "Введите описание для этого теста" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "Родительская деталь" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "Шаблон параметра" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "Артикул или наименование детали" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "Значение IPN" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "BOM Компонент" + +#: part/models.py:3771 msgid "Select parent part" msgstr "Выберите родительскую деталь" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "Выбрать деталь для использования в BOM" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" -msgstr "" +msgstr "Эта позиция - расходник. (она не отслеживается в заказах на сборку)" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Разрешить разновидности" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "Для отслеживаемых деталей количество должно быть целым числом" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "Часть 1" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "Часть 2" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" -msgstr "" +msgstr "Выберите связанную часть" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "Валюта покупки этой единицы хранения" -#: part/serializers.py:302 +#: part/serializers.py:346 +msgid "No parts selected" +msgstr "Не выбран ни один элемент" + +#: part/serializers.py:354 +msgid "Select category" +msgstr "Выберите категорию" + +#: part/serializers.py:384 msgid "Original Part" msgstr "" -#: part/serializers.py:302 +#: part/serializers.py:384 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy Image" msgstr "" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:312 part/templates/part/detail.html:296 +#: part/serializers.py:394 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:312 +#: part/serializers.py:394 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:327 +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:327 +#: part/serializers.py:414 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:343 +#: part/serializers.py:430 msgid "Select supplier (or leave blank to skip)" -msgstr "" +msgstr "Выберите поставщика (или оставьте поле пустым, чтобы пропустить)" -#: part/serializers.py:354 +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" -msgstr "" +msgstr "Выберите поставщика (или оставьте поле пустым, чтобы пропустить)" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" -msgstr "" +msgstr "Код производителя" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "Дублировать деталь" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "Копировать параметры категории" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" -msgstr "" +msgstr "Копировать шаблоны параметров из выбранной категории деталей" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "Подходящая деталь не найдена" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" -msgstr "" +msgstr "Некорректное количество" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "У вас нет прав редактировать BOM." @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "Действия с BOM" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "Удалить элементы" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" -msgstr "" +msgstr "Выполнить инвентаризацию для этой части категории" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "Вы подписаны на уведомления для данной категории" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "Включить уведомления для данной категории" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "Действия с категорией" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "Редактировать категорию" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "Редактировать категорию" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "Удалить категорию" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "Удалить категорию" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" -msgstr "" +msgstr "Категория детали верхнего уровня" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Подкатегории" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "Детали (включая подкатегории)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "Создать новую деталь" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "Новая деталь" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "Настройки" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "Укажите категорию" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "Укажите категорию" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "Параметры детали" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "Создать новую категорию деталей" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "Новая категория" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "Обновить" @@ -6590,117 +6714,117 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" #: part/templates/part/detail.html:83 msgid "Part Test Templates" -msgstr "" +msgstr "Тестовые шаблоны детали" #: part/templates/part/detail.html:88 msgid "Add Test Template" -msgstr "" +msgstr "Добавить тестовый шаблон" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "Разновидности детали" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "Создать новую разновидность" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "Новая разновидность" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "Спецификация" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "Экспорт" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "Экспорт BOM" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "Действия с BOM" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "Сборки" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "Поставщики" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" -msgstr "" +msgstr "Добавить шаблон результата теста" #: part/templates/part/import_wizard/ajax_part_upload.html:29 #: part/templates/part/import_wizard/part_upload.html:14 @@ -6732,173 +6856,173 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" -msgstr "" +msgstr "Выбрать формат файла" #: part/templates/part/part_app_base.html:12 msgid "Part List" msgstr "Список деталей" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "Вы подписаны на уведомления для данной детали" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "Включить уведомления для данной детали" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "Действия со складом" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "Действия с деталью" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "Удалить деталь" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "Деталь является шаблоном (из неё можно создавать разновидности)" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "Деталь может быть собрана из других деталей" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "Деталь может быть использована в сборках" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "Деталь может быть продана покупателям" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" -msgstr "" +msgstr "Зарезервировано для сборки" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "Минимальный складской запас" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" -msgstr "" +msgstr "Последний Серийный Номер" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "Подходящие изображения не найдены" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "Разновидности" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "Склад" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6973,11 +7097,11 @@ msgstr "" #: part/templates/part/part_sidebar.html:54 msgid "Test Templates" -msgstr "" +msgstr "Протестировать шаблон" #: part/templates/part/part_thumb.html:11 msgid "Select from existing images" -msgstr "" +msgstr "Выбрать из существующих изображений" #: part/templates/part/prices.html:11 msgid "Pricing Overview" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "Создать новую разновидность детали" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "Неизвестная база данных" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "Изображение детали не найдено" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "Действие не указано" msgid "No matching action found" msgstr "Соответствующее действие не найдено" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "Не найдено совпадений для данных штрих-кода" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "Найдено совпадение по штрих-коду" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "Автор не найден" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "Исходная ссылка" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "Название шаблона" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "Файл шаблона отчёта" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,41 +7830,45 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Серийный номер" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" -msgstr "" +msgstr "Тестовый отчет по единице хранения на складе" #: report/templates/report/inventree_test_report_base.html:97 msgid "Test Results" -msgstr "" +msgstr "Результаты проверки" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" -msgstr "" +msgstr "Проверка" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "Код места хранения" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" -msgstr "" +msgstr "Путь местоположения" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "Код детали поставщика" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "Код сборки" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" -msgstr "" +msgstr "Необходимо указать количество" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Место хранения" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "Места хранения" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" -msgstr "" +msgstr "Выберите владельца" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "Родительская единица хранения" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "Базовая деталь" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" -msgstr "" +msgstr "Выберите соответствующего поставщика части для этого товара на складе" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "Код партии для этой единицы хранения" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" -msgstr "" +msgstr "Количество на складе" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "Исходная сборка" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "Удалить при обнулении" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "Удалить эту единицу хранения при обнулении складского запаса" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "Деталь не является отслеживаемой" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "Серийные номера уже существуют" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" -msgstr "" +msgstr "Введите количество товаров на складе для сериализации" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" -msgstr "" +msgstr "Введите серийные номера для новых элементов" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" +msgstr "Выберите товар на складе для установки" + +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" -msgstr "Выбранная деталь отсутствует в спецификации" - -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "Выбранная деталь отсутствует в спецификации" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "Выберите товары на складе для изменения статуса" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "Не выбрано ни одного товара на складе" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "Выбранная компания не является покупателем" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "Дочерние единицы хранения" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "Эта единица хранения не имеет дочерних элементов" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" -msgstr "" +msgstr "Данные испытаний" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" -msgstr "" +msgstr "Отчет тестирования" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "Заметки о единице хранения" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "Установленные единицы хранения" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "Установить единицу хранения" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "Удалить единицу хранения" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "Установить единицу хранения" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "Преобразовать в разновидность" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "Дублировать единицу хранения" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "Редактировать единицу хранения" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "Удалить единицу хранения" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Сборка" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "Родительский элемент" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "Предупреждение" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 msgid "Location actions" msgstr "Действия с местом хранения" -#: stock/templates/stock/location.html:104 +#: stock/templates/stock/location.html:106 msgid "Edit location" msgstr "Редактировать место хранения" -#: stock/templates/stock/location.html:106 +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "Удалить место хранения" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" -msgstr "" +msgstr "Склад верхнего уровня" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "Ответственный за место хранения" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Места хранения" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "Создать новое место хранения" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "Новое место хранения" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "Последние детали" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "BOM для проверки" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" -msgstr "" +msgstr "Требуется для сборки" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "" +msgstr "Активные заказы на сборку" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "" +msgstr "Просроченные заказы на сборку" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "Настройки" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "Шаблон параметра детали" @@ -8659,12 +9071,21 @@ msgstr "Шаблон параметра детали" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "Настройки плагинов" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "Настройки заказа на закупку" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "Изменить настройки" @@ -8851,50 +9275,103 @@ msgstr "Изменить настройки пользователя" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Удалить" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "Шаблоны параметров категории не найдены" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "Редактировать шаблон" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "Удалить шаблон" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "Главная страница" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "Поиск" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "Глобальные настройки" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "Настройки заказов на продажу" msgid "Stock Settings" msgstr "Настройки склада" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "Настройки учётной записи" @@ -8958,13 +9439,6 @@ msgstr "Настройки учётной записи" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9105,7 +9580,7 @@ msgstr "Настройки темы" #: templates/InvenTree/settings/user_display.html:39 msgid "Select theme" -msgstr "" +msgstr "Выберите тему" #: templates/InvenTree/settings/user_display.html:50 msgid "Set Theme" @@ -9117,7 +9592,7 @@ msgstr "Настройки языка" #: templates/InvenTree/settings/user_display.html:67 msgid "Select language" -msgstr "" +msgstr "Выберите язык" #: templates/InvenTree/settings/user_display.html:83 #, python-format @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "Посмотреть код на GitHub" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9259,7 +9738,7 @@ msgstr "Подтверждение адреса электронной почт msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "Пожалуйста, подтвердите, что %(email)s является адресом электронной почты пользователя %(user_display)s." -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Подтвердить" @@ -9435,30 +9914,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "Минимальное количество" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "Ошибка 400: Некорректный запрос" msgid "API request returned error code 400" msgstr "API-запрос вернул код ошибки 400" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "Ошибка 401: Авторизация не выполнена" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "Ошибка 403: Доступ запрещён" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "У вас нет прав доступа к этой функции" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "Ошибка 404: Ресурс не найден" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,43 +10032,63 @@ msgstr "Ошибка 405: Метод не разрешён" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "Ошибка 408: Таймаут" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 msgid "Unhandled Error Code" msgstr "Необработанная ошибка" -#: templates/js/translated/api.js:262 +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "Код ошибки" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" +msgstr "Все выбранные вложения будут удалены" + +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "Вложение не найдено" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9599,7 +10098,7 @@ msgstr "" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "" +msgstr "Введите штрихкод" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" @@ -9607,11 +10106,11 @@ msgstr "" #: templates/js/translated/barcode.js:138 msgid "Enter optional notes for stock transfer" -msgstr "" +msgstr "Введите дополнительные заметки для перевода товара" #: templates/js/translated/barcode.js:139 msgid "Enter notes" -msgstr "" +msgstr "Введите описание" #: templates/js/translated/barcode.js:188 msgid "Server error" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "Скачать шаблон BOM" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "Редактировать элемент BOM" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "Удалить элемент BOM" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "Элементы BOM не найдены" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "Унаследовано от родительского BOM" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "Редактировать заказ на сборку" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "Создать заказ на сборку" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "Вы уверены, что хотите отменить эту сборку?" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" -msgstr "" +msgstr "Для этого заказа остались незавершенные результаты" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "Спецификация содержит отслеживаемые детали" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "Отслеживаемые детали могут иметь серийные номера" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "" +msgstr "Введите серийные номера для генерации нескольких выходов одной сборки" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" -msgstr "" +msgstr "Выработка лома" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "Отслеживаемая деталь" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "Добавить производителя" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "Добавить деталь производителя" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "Редактировать деталь производителя" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "Добавить поставщика" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "Добавить деталь поставщика" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "Все выбранные детали поставщика будут удалены" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "Добавить новую компанию" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "Информация о компании не найдена" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "Удалить параметры" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "Заказать детали" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "Информация о детали производителя не найдена" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "Деталь-шаблон" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "Параметры не найдены" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "Редактировать параметр" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "Удалить параметр" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "Редактировать параметр" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "Удалить параметр" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "Удалить деталь поставщика" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "Информация о детали поставщика не найдена" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "Редактировать деталь поставщика" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "Удалить деталь поставщика" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "Последнее обновление" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11043,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "Операция создания не разрешена" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "Операция обновления не разрешена" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "Операция удаления не разрешена" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "Операция просмотра не разрешена" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" -msgstr "" +msgstr "Введите корректный номер" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "Форма содержит ошибки" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "Не найдено" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "Метки не найдены" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "Отменить" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "Подтвердить" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "Ошибка отправки данных формы" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "Ошибка 400: Некорректный запрос" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "Сервер вернул код ошибки 400" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "Ошибка запроса данных формы" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "Идентификатор" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "Атрибуты детали" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "Настройки создания детали" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "Настройки дублирования детали" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "Добавить категорию" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "Родительская категория" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" -msgstr "" +msgstr "Значок (необязательно) — просмотрите все доступные значки на" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "Создать категорию деталей" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" -msgstr "" +msgstr "Создать новую категорию после этой" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "Редактировать категорию" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "Вы уверены, что хотите удалить эту категорию?" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "Удалить категорию" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "Создать деталь" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "Создать ещё одну деталь после этой" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "Деталь создана успешно" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "Создать разновидность детали" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "Вы подписаны на уведомления для данного элемента" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "Вы подписались на уведомления для данного элемента" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "Включить уведомления для данного элемента" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "Вы отписались от уведомлений для данного элемента" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "Отслеживаемая деталь" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "Разновидности не найдены" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "Шаблоны параметров детали не найдены" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "Заказов на закупку не найдено" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "Детали не найдены" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "Нет категории" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "Список" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "Таблица" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "Укажите категорию" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "Укажите категорию" + +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" -msgstr "" +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "Нет категории" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "Список" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "Таблица" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "Дерево" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" -msgstr "" +msgstr "Нет тестовых шаблонов, соответствующих запросу" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "Редактировать заказ на закупку" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" -msgstr "" +msgstr "Должна быть выбрана хотя бы одна приобретаемая деталь." -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "Добавить код партии" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "Отмена этого заказа означает, что заказ нельзя будет редактировать." -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "Заказы на продажу не найдены" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "Подтвердите выделение запасов" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" -msgstr "" +msgstr "Введите запрос для поиска" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "Вы уверены, что хотите удалить место хранения?" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" -msgstr "" +msgstr "Введите начальное количество для этого товара в наличии" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "" +msgstr "Введите серийные номера для нового склада (или оставьте пустым)" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "Создано несколько единиц хранения" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "" +msgstr "Введите серийный номер" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "" +msgstr "Введите серийный номер" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "Предупреждение: Операция объединения не может быть отменена" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "Следующие данные будут потеряны в процессе объединения" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "История складских перемещений будет удалена для объединённых элементов" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "Информация о деталях поставщика будет удалена для объединённых элементов" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "Отслеживаемая деталь" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "Код партии" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "Статус сборки" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "Загрузка данных" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "строк на странице" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "Показываются все строки" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "Показано от" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "до" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "из" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "строк" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "Ничего не найдено" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12616,50 +13259,6 @@ msgstr "Настройки электронной почты" msgid "Email settings not configured" msgstr "Электронная почта не настроена" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "Действия со штрих-кодом" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "Настройки склада" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12668,59 +13267,99 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "Права доступа" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "Права доступа" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "Вид" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "Разрешение на просмотр элементов" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "Разрешение на добавление элементов" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "Разрешение на редактирование элементов" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "Разрешение на удаление элементов" diff --git a/InvenTree/locale/sl/LC_MESSAGES/django.po b/InvenTree/locale/sl/LC_MESSAGES/django.po index fbdcff2a45..4dcc1da2ad 100644 --- a/InvenTree/locale/sl/LC_MESSAGES/django.po +++ b/InvenTree/locale/sl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" "Last-Translator: \n" "Language-Team: Slovenian\n" "Language: sl_SI\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API vmesnik ni najden" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" -msgstr "" +msgstr "Uporabnik nima dovoljenja pogleda tega modela" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" -msgstr "" +msgstr "Vrednost ni vnesena" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" -msgstr "" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "Ni mogoče pretvoriti {original} v {unit}" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "Vnesena napačna količina" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "Vnesena napačna količina ({exc})" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Napaka, podrobnosti vidne v pogledu administratorja" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Vnesi datum" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Zapiski" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "Vrednost '{name}' ni v predpisanem formatu" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Podana vrednost se ujema s predpisanim vzorcem: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Vnesite geslo" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Vnesite novo geslo" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Potrdite geslo" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Potrdite novo geslo" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Staro geslo" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "Ponovnite e-pošto" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Potrdite e-pošto" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "E-pošti se morata ujemati" -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Podana epošta ni veljavna." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Domena epošte ni podprta." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "Registracija je onemogočena." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Podana napačna količina" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Prazno polje serijske številke" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Dvojna serijska številka" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Nepravilni obseg skupine: {g}" +msgid "Invalid group range: {group}" +msgstr "Neveljavni doseg skupine: {group}" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "Obseg skupine {g} presega dovoljeno vrednost ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "Doseg skupine {group} presega dovoljene količine ({expected_quantity})" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Nepravilno zaporedje skupine: {g}" +msgid "Invalid group sequence: {group}" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Serijske številke niso najdene" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Število unikatnih serijskih številk ({s}) se mora ujemati s količino ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Odstranite oznako HTML iz te vrednosti" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Napaka povezave" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Odziv serverja: napravilni status kode" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Pojavila se je izjema" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Odziv serverja: napačna dolžina vrednosti" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Prevelika velikost slike" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Prenos slike presegel največjo velikost" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Oddaljeni server vrnil prazen odziv" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "Podani URL ni veljavna slikovna datoteka" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Nepravilno nastavljen vzorec" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Nastavljen neprepoznan ključ formata" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Manjka obvezen ključ formata" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Referenčno polje ne sme biti prazno" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "Referenca se mora ujemati s vzorcem" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Referenčna številka prevelika" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Manjka datoteka" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Manjka zunanja povezava" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Priloga" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Izberite prilogo" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Povezava" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Zunanja povezava" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Komentar" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Komentar datoteke" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Uporabnik" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "naloži datum" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Ime ne sme biti prazno" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Neveljavna mapa prilog" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Ime datoteke vsebuje neveljavni znak '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Datoteki manjka končnica" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Priloga s tem imenom že obstaja" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Napaka pri preimenovanju datoteke" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Nedovoljena izbira" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Ime" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Opis" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Opis (opcijsko)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "nadrejen" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Pot" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "Podatki čtrne kode" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "Podatki črtne kode tretje osebe" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "Oznaka črtne kode" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "Enolična oznaka podatkov črtne kode" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "Črtna koda že obstaja" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Napaka strežnika" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "Zaznana napaka na strežniku." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Mora biti veljavna številka" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -484,143 +509,155 @@ msgstr "Manjka obvezni stolpec: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Dvojni stolpec: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "Povezava" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "Povezava do oddaljene slike" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Prenos slik iz oddaljene povezave ni omogočen" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Češko" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Danščina" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Nemščina" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Grščina" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Angleščina" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Španščina" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Španščina (Mehiško)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Farsi / Perzijsko" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Francoščina" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Hebrejščina" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Madžarščina" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Italijanščina" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japonščina" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Korejščina" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Nizozemščina" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norveščina" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Poljščina" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portugalščina" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portugalščina (Brazilsko)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Ruščina" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Slovenščina" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Švedščina" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Tajščina" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Turščina" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnamščina" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Kitajščina" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Nadzor dela v ozadju neuspel" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "Zaledje e-pošte ni nastavljeno" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "Preverjanje zdravja sistema InvenTree neuspelo" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "V teku" @@ -630,8 +667,8 @@ msgstr "Postavljeno" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Končano" @@ -654,10 +691,10 @@ msgstr "Vrnjeno" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Poslano" @@ -689,7 +726,7 @@ msgstr "Dano v karanteno" msgid "Legacy stock tracking entry" msgstr "Vnos zaloge postavke" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Postavka zaloge ustvarjena" @@ -745,7 +782,7 @@ msgstr "Razdeljena od nadrejene postavke" msgid "Split child item" msgstr "Razdeljena podrejena postavka" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Združena zaloga postavk" @@ -765,7 +802,7 @@ msgstr "Nalog za izgradnjo končan" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Porabljeno v nalogu za izgradnjo" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Posalno stranki" @@ -813,119 +850,165 @@ msgstr "" msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Neveljavna oznaka valute" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Prestara vrednost ne sme biti negativna" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Prestarost ne sme presegati 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Neveljavna vrednost za prestarost" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Uredite informacije o uporabniku" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Nastavite geslo" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Polja z geslom se morajo ujemati" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Vnešeno nepravilno geslo" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Sistemske informacije" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "O InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "Izgradnja mora biti najprej preklicana, nato je lahko izbrisana" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Nalog izgradnje" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Nalogi izgradnje" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Neveljavna izbira za nadrejeno izgradnjo" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Referenca naloga izgradnje" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Referenca" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Nadrejena izgradnja" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Del" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Izberite del za izgradnjo" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Referenca dobavnica" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Dobavnica na katero se navezuje ta izgradnja" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Lokacija vira" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Izberite lokacijo dela za to izgradnjo (v primeru da ni pomembno pusti prazno)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Ciljna lokacija" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Izberite lokacijo, kjer bodo končne postavke shranjene" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Količina izgradenj" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Število postavk za izgradnjo" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Končane postavke" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Število postavk zaloge, ki so bile končane" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Status izgradnje" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Koda statusa izgradnje" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Številka serije" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Številka serije za to izgradnjo" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Datum ustvarjenja" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Rok dokončanja" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Rok končanja izdelave. Izdelava po tem datumu bo v zamudi po tem datumu." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Datom končanja" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "dokončal" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Izdal" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Uporabnik, ki je izdal nalog za izgradnjo" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Odgovoren" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Zunanja povezava" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Nalog izgradnje {build} je dokončan" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "Nalog izgradnej dokončan" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Ni določena izgradnja" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Igradnja je že dokončana" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "Izgradnja se ne ujema s nalogom izdelave" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Izdelana postavka mora imeti izgradnjo, če je glavni del označen kot sledljiv" +#: build/models.py:1266 +msgid "Build object" +msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "Prestavljena zaloga ({q}) ne sme presegati zaloge ({a})" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "Preveč zaloge je prestavljene" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Prestavljena količina mora biti večja od 0" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "Količina za zalogo s serijsko številko mora biti 1" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Izbrana postavka ni najdena v BOM" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Izdelava" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "Izdelaj da prestaviš dele" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Postavka zaloge" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Izvorna postavka zaloge" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Količina" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "Izdelana postavka mora imeti izgradnjo, če je glavni del označen kot sledljiv" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "Prestavljena zaloga ({q}) ne sme presegati zaloge ({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "Preveč zaloge je prestavljene" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Prestavljena količina mora biti večja od 0" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Količina za zalogo s serijsko številko mora biti 1" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Postavka zaloge" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Izvorna postavka zaloge" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Količina zaloge za prestavljanje za izgradnjo" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Inštaliraj v" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Destinacija postavke zaloge" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "Izgradnja" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "Izgradnja se ne ujema z nadrejeno izgradnjo" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "Izhodni del se ne ujema s naročilom sestava" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "Ta sestava je že zaključena" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1766,147 +1864,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1914,14 +1971,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" +#: common/models.py:1197 +msgid "Automatic Backup" msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" +msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" +#: common/models.py:1204 +msgid "Auto Backup Interval" msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:1370 +msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1378 -msgid "Default page size for PDF reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1388 -msgid "Enable Test Reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" msgstr "" #: common/models.py:1550 -msgid "Enable SSO on the login pages" +msgid "Default page size for PDF reports" msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" +msgid "Attach Test Reports" msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" +msgid "Autofill Serial Numbers" msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3507,331 +3609,395 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" - -#: company/models.py:119 -msgid "Company address" -msgstr "" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3916,156 +4089,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4244,102 +4392,95 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "Notranja številka dela se mora ujemati z vzorcem {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "" msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Izdelava" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9259,7 +9738,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "" @@ -9435,30 +9914,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11043,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12616,50 +13259,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12668,59 +13267,99 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po index 378ac74105..310c915895 100644 --- a/InvenTree/locale/sv/LC_MESSAGES/django.po +++ b/InvenTree/locale/sv/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv_SE\n" @@ -17,422 +17,447 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API-slutpunkt hittades inte" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "Användaren har inte behörighet att se denna modell" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Information om felet finns under Error i adminpanelen" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Ange datum" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" -msgstr "Anteeckningar" +msgstr "Anteckningar" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "Värdet '{name}' visas inte i mönsterformat" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Det angivna värdet matchar inte det obligatoriska mönstret: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Ange lösenord" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Ange nytt lösenord" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Bekräfta lösenord" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Bekräfta nytt lösenord" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Tidigare lösenord" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "E-post (igen)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Bekräfta e-postadress" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Du måste ange samma e-post varje gång." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Den angivna primära e-postadressen är inte giltig." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Den angivna e-postdomänen är inte godkänd." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Ogiltigt antal angivet" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Tom serienummersträng" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Ogiltigt gruppområde: {g}" - -#: InvenTree/helpers.py:562 -#, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "Ogiltig gruppsekvens: {g}" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 +#, python-brace-format +msgid "Invalid group sequence: {group}" +msgstr "" + +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Inga serienummer hittades" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "Antal unika serienummer ({s}) måste matcha antal ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "Ta bort HTML-taggar från detta värde" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Anslutningsfel" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Servern svarade med ogiltig statuskod" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Undantag inträffade" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Servern svarade med ogiltigt innehållslängdsvärde" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Bilden är för stor" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Nedladdning av bilder överskred maximal storlek" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Fjärrservern returnerade tomt svar" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "Angiven URL är inte en giltig bildfil" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "E-post" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "Felaktigt formaterat mönster" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "Okänd formatnyckel angiven" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "Obligatorisk formatnyckel saknas" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "Textfältet kan inte lämnas tomt" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "Referensen måste matcha obligatoriskt mönster" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "Referensnumret är för stort" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Saknad fil" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Extern länk saknas" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Bilaga" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Välj fil att bifoga" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Länk" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Länk till extern URL" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Kommentar" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Fil kommentar" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Användare" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "uppladdningsdatum" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Filnamnet får inte vara tomt" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Ogiltig katalog för bilaga" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Filnamnet innehåller ogiltiga tecken '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Filnamn saknar ändelse" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Det finns redan en bilaga med detta filnamn" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Fel vid namnbyte av fil" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Ogiltigt val" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Namn" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Beskrivning" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Beskrivning (valfritt)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "överordnad" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "Sökväg" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" -msgstr "" +msgstr "Streckkodsdata" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" -msgstr "" +msgstr "Befintlig streckkod hittades" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "Serverfel" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "Ett fel har loggats av servern." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Måste vara ett giltigt nummer" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" -msgstr "" +msgstr "Valuta" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" -msgstr "" +msgstr "Välj valuta från tillgängliga alternativ" #: InvenTree/serializers.py:364 msgid "Filename" @@ -484,143 +509,155 @@ msgstr "Saknar obligatorisk kolumn: '{name}'" msgid "Duplicate column: '{col}'" msgstr "Duplicerad kolumn: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "URL för fjärrbildsfil" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "Nedladdning av bilder från fjärr-URL är inte aktiverad" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Tjeckiska" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" -msgstr "" +msgstr "Danska" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Tyska" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Grekiska" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "Engelska" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "Spanska" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "Spanska (Mexikanska)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "Farsi / Persiska" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" -msgstr "" +msgstr "Finska" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Franska" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Hebreiska" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "Hindi" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Ungerska" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Italienska" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japanska" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Koreanska" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Nederländska" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norska" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Polska" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Portugisiska" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Portugisiska (brasiliansk)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Ryska" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" -msgstr "" +msgstr "Slovenska" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Svenska" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Thailändska" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Turkiska" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnamesiska" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Kinesiska" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "Kinesiska (Förenklad)" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "Kinesiska (Traditionell)" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Kontroll av bakgrundsarbetare misslyckades" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "Backend för e-post är inte konfigurerad" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "InvenTree systemhälsokontroll misslyckades" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Väntar" @@ -630,8 +667,8 @@ msgstr "Placerad" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Slutför" @@ -652,12 +689,12 @@ msgstr "Återlämnad" #: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 msgid "In Progress" -msgstr "" +msgstr "Pågående" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Skickad" @@ -689,7 +726,7 @@ msgstr "I karantän" msgid "Legacy stock tracking entry" msgstr "Spårningspost för äldre lager" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Lagerpost skapad" @@ -745,7 +782,7 @@ msgstr "Dela från överordnat objekt" msgid "Split child item" msgstr "Dela underordnat objekt" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Sammanfogade lagerposter" @@ -765,7 +802,7 @@ msgstr "Bygg orderutgång slutförd" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "Konsumeras av byggorder" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Skickat till kund" @@ -799,133 +836,179 @@ msgstr "" #: InvenTree/status_codes.py:194 msgid "Repair" -msgstr "" +msgstr "Reparera" #: InvenTree/status_codes.py:197 msgid "Replace" -msgstr "" +msgstr "Ersätt" #: InvenTree/status_codes.py:200 msgid "Refund" -msgstr "" +msgstr "Återbetala" #: InvenTree/status_codes.py:203 msgid "Reject" -msgstr "" +msgstr "Avvisa" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Inte en giltig valutakod" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Överskott värde får inte vara negativt" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Överskott får inte överstiga 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "Ogiltigt värde för överskott" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Redigera användarinformation" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Ställ in lösenord" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Lösenorden måste matcha" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "Felaktigt lösenord angivet" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Systeminformation" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Om InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "Byggnationen måste avbrytas innan den kan tas bort" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Byggorder" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Byggordrar" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "Ogiltigt val för överordnad bygge" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Byggorderreferens" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Referens" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Överordnat Bygge" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Byggorder till vilken detta bygge är tilldelad" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Byggorder till vilken detta bygge är tilldelad" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Del" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Välj del att bygga" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Försäljningsorderreferens" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Försäljningsorder till vilken detta bygge allokeras" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Källa Plats" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Välj plats att ta lager från för detta bygge (lämna tomt för att ta från någon lagerplats)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Destinationsplats" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Välj plats där de färdiga objekten kommer att lagras" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Bygg kvantitet" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Antal lagerobjekt att bygga" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Slutförda objekt" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Antal lagerposter som har slutförts" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Byggstatus" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Bygg statuskod" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Batchkod" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Batch-kod för denna byggutdata" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Skapad" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Datum för slutförande" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Måldatum för färdigställande. Byggandet kommer att förfallas efter detta datum." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Slutförandedatum" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "slutfört av" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Utfärdad av" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Användare som utfärdade denna byggorder" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Ansvarig" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Extern länk" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "Projektkod" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Byggorder {build} har slutförts" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "En byggorder har slutförts" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Ingen byggutgång angiven" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Byggutgång är redan slutförd" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "Byggutgång matchar inte bygg order" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Byggobjekt måste ange en byggutgång, eftersom huvuddelen är markerad som spårbar" +#: build/models.py:1266 +msgid "Build object" +msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "Tilldelad kvantitet ({q}) får inte överstiga tillgängligt lagersaldo ({a})" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "Lagerposten är överallokerad" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Allokeringsmängden måste vara större än noll" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "Antal måste vara 1 för serialiserat lager" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "Vald lagervara hittades inte i BOM" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Bygg" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "Bygg för att allokera delar" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Artikel i lager" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Källa lagervara" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Antal" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "Byggobjekt måste ange en byggutgång, eftersom huvuddelen är markerad som spårbar" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "Tilldelad kvantitet ({q}) får inte överstiga tillgängligt lagersaldo ({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "Lagerposten är överallokerad" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Allokeringsmängden måste vara större än noll" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Antal måste vara 1 för serialiserat lager" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Artikel i lager" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Källa lagervara" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Lagersaldo att allokera för att bygga" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Installera till" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Destination lagervara" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "Bygg utdata" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "Byggutdata matchar inte överordnad version" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Serienummer" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Plats" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Status" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "Acceptera ofullständig" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" -msgstr "" +msgstr "Visa QR-kod" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Redigera bygge" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Avbryt bygge" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "Ta bort bygge" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "Färdigställ bygget" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "Byggbeskrivning" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "Måldatum" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "Försenad" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Slutförd" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "Försäljningsorder" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Utfärdad av" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "Mål" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "Skapad" @@ -1766,147 +1864,106 @@ msgstr "Skapad" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Slutförd" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "Beställ obligatoriska delar" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "Beställ delar" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Bilagor" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "Bygganteckningar" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "Ny byggorder" @@ -1914,14 +1971,10 @@ msgstr "Ny byggorder" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "{name.title()} Fil" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" -msgstr "" +msgstr "Unik projektkod" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" -msgstr "" +msgstr "Projektbeskrivning" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "Ingen grupp" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "Omstart krävs" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "Serverinstans (Namn)" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Företagsnamn" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "Internt företagsnamn" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "Bas-URL" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "Bas-URL för serverinstans" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Standardvaluta" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "Ladda ned från URL" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "Tillåt nedladdning av bilder och filer från extern URL" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "Kräv bekräftelse" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "Kräv uttrycklig användarbekräftelse för vissa åtgärder." - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "Stöd för streckkoder" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "Aktivera stöd för streckkodsläsare" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Ladda ned från URL" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Tillåt nedladdning av bilder och filer från extern URL" + +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" -msgstr "" - -#: common/models.py:1148 -msgid "Copy Part Test Data" -msgstr "" - -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" +msgstr "Kräv bekräftelse" + #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" -msgstr "" +msgid "Require explicit user confirmation for certain action." +msgstr "Kräv uttrycklig användarbekräftelse för vissa åtgärder." -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" +#: common/models.py:1197 +msgid "Automatic Backup" msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" +msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" -msgstr "Virtuell" +#: common/models.py:1204 +msgid "Auto Backup Interval" +msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" -msgstr "Delar är virtuella som standard" +msgid "Specify number of days between automated backup events" +msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" -msgstr "Visa import i vyer" +#: common/models.py:1215 +msgid "Task Deletion Interval" +msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "Visa importguiden i vissa delvyer" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "Visa relaterade delar" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "Visa relaterade delar för en del" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" -msgstr "Visningsformat för delnamn" - -#: common/models.py:1240 -msgid "Format to display the part name" -msgstr "Formatera för att visa artikelnamnet" - -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "Stöd för streckkoder" + +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" +msgstr "" + +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" -msgstr "Interna priser" - -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" -msgstr "Aktivera etikettutskrift" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" +msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" -msgstr "Aktivera etikettutskrift från webbgränssnittet" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" +msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" -msgstr "Etikettbild DPI" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" +msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" +msgstr "" + +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" -msgstr "Aktivera rapporter" - -#: common/models.py:1364 -msgid "Enable generation of reports" -msgstr "Aktivera generering av rapporter" - -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" -msgstr "Debugläge" - -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +msgid "Parts are trackable by default" msgstr "" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" +msgstr "Virtuell" + +#: common/models.py:1370 +msgid "Parts are virtual by default" +msgstr "Delar är virtuella som standard" + +#: common/models.py:1376 +msgid "Show Import in Views" +msgstr "Visa import i vyer" + #: common/models.py:1377 -msgid "Page Size" -msgstr "Sidstorlek" +msgid "Display the import wizard in some part views" +msgstr "Visa importguiden i vissa delvyer" -#: common/models.py:1378 -msgid "Default page size for PDF reports" -msgstr "Standard sidstorlek för PDF-rapporter" +#: common/models.py:1383 +msgid "Show related parts" +msgstr "Visa relaterade delar" -#: common/models.py:1388 -msgid "Enable Test Reports" -msgstr "Aktivera testrapporter" +#: common/models.py:1384 +msgid "Display related parts for a part" +msgstr "Visa relaterade delar för en del" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1404 +msgid "Part Name Display Format" +msgstr "Visningsformat för delnamn" + +#: common/models.py:1405 +msgid "Format to display the part name" +msgstr "Formatera för att visa artikelnamnet" + +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" -msgstr "" - -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" -msgstr "" - -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" +msgstr "Interna priser" + +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" -msgstr "" +#: common/models.py:1518 +msgid "Enable label printing" +msgstr "Aktivera etikettutskrift" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" -msgstr "" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" +msgstr "Aktivera etikettutskrift från webbgränssnittet" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" -msgstr "" +#: common/models.py:1525 +msgid "Label Image DPI" +msgstr "Etikettbild DPI" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" -msgstr "" - -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" -msgstr "" +msgid "Enable Reports" +msgstr "Aktivera rapporter" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" -msgstr "" +msgid "Enable generation of reports" +msgstr "Aktivera generering av rapporter" -#: common/models.py:1542 -msgid "Enable registration" -msgstr "" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" +msgstr "Debugläge" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" -msgstr "" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" +msgstr "Sidstorlek" #: common/models.py:1550 -msgid "Enable SSO on the login pages" -msgstr "" +msgid "Default page size for PDF reports" +msgstr "Standard sidstorlek för PDF-rapporter" #: common/models.py:1556 -msgid "Enable SSO registration" -msgstr "" +msgid "Enable Test Reports" +msgstr "Aktivera testrapporter" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" +msgid "Attach Test Reports" msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" +msgid "Autofill Serial Numbers" msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" -msgstr "" +msgid "Allowed domains" +msgstr "Tillåtna domäner" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" -msgstr "" +msgid "Enable project codes" +msgstr "Aktivera projektkoder" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "Sök efter artiklar" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" -msgstr "Sök efter leverantörsartikel" +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" -msgstr "Sök efter tillverkarartikel" +msgid "Show subscribed parts on the homepage" +msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" +msgstr "Sök efter artiklar" + +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2086 +msgid "Search Supplier Parts" +msgstr "Sök efter leverantörsartikel" + +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" +msgstr "Sök efter tillverkarartikel" + +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2107 +msgid "Search Categories" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2108 +msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2114 +msgid "Search Stock" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3507,331 +3609,395 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" +#: company/models.py:118 +msgid "Phone number" +msgstr "Telefonnummer" #: company/models.py:119 -msgid "Company address" -msgstr "" - -#: company/models.py:122 -msgid "Phone number" -msgstr "" - -#: company/models.py:123 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" +msgstr "Företag" + +#: company/models.py:334 +msgid "Select company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "Postnummer" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "Land" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" -msgstr "" +msgstr "Leverantör" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" -msgstr "" +msgstr "Välj leverantör" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" -msgstr "" +msgstr "Kund" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 -msgid "Phone" +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:125 +msgid "Phone" +msgstr "Telefon" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3916,156 +4089,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" +msgstr "Lägg till kontakt" + +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" -msgstr "" +msgstr "Tillverkare" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" -msgstr "" +msgstr "Leverantörer" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" -msgstr "" +msgstr "Parametrar" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4135,108 +4278,113 @@ msgstr "" #: company/templates/company/sidebar.html:33 msgid "Contacts" -msgstr "" +msgstr "Kontakter" + +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "Adresser" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4244,274 +4392,271 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" -msgstr "" +msgstr "Ny leverantör" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" -msgstr "" +msgstr "Kunder" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" -msgstr "" +msgstr "Ny kund" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" -msgstr "" +msgstr "Etikett" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" -msgstr "" +msgid "QR Code" +msgstr "QR-kod" #: 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 "" +msgstr "QR-kod" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" -msgstr "" +msgstr "Leveransdatum" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" -msgstr "" +msgstr "Orderstatus" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5130,7 +5267,7 @@ msgstr "" #: templates/patterns/wizard/upload.html:13 #, python-format msgid "Step %(step)s of %(count)s" -msgstr "" +msgstr "Steg %(step)s av %(count)s" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/return_order_detail.html:18 @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" -msgstr "" +msgstr "Nyckelord" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" -msgstr "" +msgstr "I lager" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "Artiklar" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" -msgstr "" +msgstr "Ikon" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" -msgstr "" +msgstr "Ikon (valfritt)" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "IPN måste matcha regex mönster {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" -msgstr "" +msgstr "Kategori" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" -msgstr "" +msgstr "Standardleverantör" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "Välj kategori" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 -msgid "Generate Report" +#: part/serializers.py:978 +msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 +msgid "Generate Report" +msgstr "Generera rapport" + +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,92 +6605,72 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 -msgid "Edit category" -msgstr "" - #: part/templates/part/category.html:60 -msgid "Edit Category" -msgstr "" +msgid "Edit category" +msgstr "Redigera kategori" -#: part/templates/part/category.html:64 -msgid "Delete category" -msgstr "" +#: part/templates/part/category.html:61 +msgid "Edit Category" +msgstr "Redigera kategori" #: part/templates/part/category.html:65 -msgid "Delete Category" -msgstr "" +msgid "Delete category" +msgstr "Radera kategori" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:66 +msgid "Delete Category" +msgstr "Radera kategori" + +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" -msgstr "" +msgstr "Underkategorier" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" -msgstr "" +msgstr "Ny kategori" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6987,13 +7111,13 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" -msgstr "" +msgstr "Senast uppdaterad" #: part/templates/part/prices.html:34 part/templates/part/prices.html:116 msgid "Price Category" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" -msgstr "" +msgstr "Okänd databas" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "Ingen åtgärd specificerad" msgid "No matching action found" msgstr "Ingen matchande åtgärd hittades" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" -msgstr "" +msgstr "Statuskod" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" -msgstr "" +msgstr "Leverantörsnamn" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Bygg" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" -msgstr "" +msgstr "Varning" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,88 +8710,92 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." -msgstr "" +msgstr "Laddar..." #: stock/templates/stock/stock_sidebar.html:5 msgid "Stock Tracking" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,9 +9025,9 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" -msgstr "" +msgstr "Inställningar" #: templates/InvenTree/settings/mixins/urls.html:5 msgid "URLs" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8798,7 +9222,7 @@ msgstr "" #: templates/InvenTree/settings/pricing.html:50 msgid "Never" -msgstr "" +msgstr "Aldrig" #: templates/InvenTree/settings/project_codes.html:8 msgid "Project Code Settings" @@ -8807,12 +9231,12 @@ msgstr "" #: templates/InvenTree/settings/project_codes.html:21 #: templates/InvenTree/settings/sidebar.html:33 msgid "Project Codes" -msgstr "" +msgstr "Projektkoder" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" -msgstr "" +msgstr "Ny projektkod" #: templates/InvenTree/settings/report.html:8 #: templates/InvenTree/settings/user_reporting.html:9 @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "Redigera" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Radera" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 msgid "No project codes found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 msgid "Edit Project Code" -msgstr "" +msgstr "Redigera projektkod" -#: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" -msgstr "" +msgstr "Radera projektkod" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8902,7 +9379,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:9 msgid "Account" -msgstr "" +msgstr "Konto" #: templates/InvenTree/settings/sidebar.html:11 msgid "Display" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,13 +9409,13 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" -msgstr "" +msgstr "Etiketter" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" -msgstr "" +msgstr "Kategorier" #: templates/InvenTree/settings/so.html:7 msgid "Sales Order Settings" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8956,26 +9437,19 @@ msgstr "" #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 msgid "Change Password" -msgstr "" - -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" +msgstr "Ändra lösenord" #: templates/InvenTree/settings/user.html:33 msgid "Username" -msgstr "" +msgstr "Användarnamn" #: templates/InvenTree/settings/user.html:37 msgid "First Name" -msgstr "" +msgstr "Förnamn" #: templates/InvenTree/settings/user.html:41 msgid "Last Name" -msgstr "" +msgstr "Efternamn" #: templates/InvenTree/settings/user.html:55 msgid "The following email addresses are associated with your account:" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9003,7 +9478,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:96 msgid "Warning:" -msgstr "" +msgstr "Varning:" #: templates/InvenTree/settings/user.html:97 msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc." @@ -9011,7 +9486,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:105 msgid "Add Email Address" -msgstr "" +msgstr "Lägg till e-postadress" #: templates/InvenTree/settings/user.html:110 msgid "Add Email" @@ -9051,7 +9526,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:168 msgid "Active Sessions" -msgstr "" +msgstr "Aktiva sessioner" #: templates/InvenTree/settings/user.html:174 msgid "Log out active sessions (except this one)" @@ -9059,7 +9534,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:175 msgid "Log Out Active Sessions" -msgstr "" +msgstr "Logga ut aktiva sessioner" #: templates/InvenTree/settings/user.html:184 msgid "unknown on unknown" @@ -9071,15 +9546,15 @@ msgstr "" #: templates/InvenTree/settings/user.html:189 msgid "IP Address" -msgstr "" +msgstr "IP-adress" #: templates/InvenTree/settings/user.html:190 msgid "Device" -msgstr "" +msgstr "Enhet" #: templates/InvenTree/settings/user.html:191 msgid "Last Activity" -msgstr "" +msgstr "Senaste aktivitet" #: templates/InvenTree/settings/user.html:204 #, python-format @@ -9089,7 +9564,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:206 #, python-format msgid "%(time)s ago" -msgstr "" +msgstr "%(time)s sedan" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" @@ -9105,7 +9580,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:39 msgid "Select theme" -msgstr "" +msgstr "Välj tema" #: templates/InvenTree/settings/user_display.html:50 msgid "Set Theme" @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9252,14 +9731,14 @@ msgstr "" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:9 msgid "Confirm Email Address" -msgstr "" +msgstr "Bekräfta e-postadress" #: templates/account/email_confirm.html:15 #, python-format msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Bekräfta" @@ -9271,7 +9750,7 @@ msgstr "" #: templates/account/login.html:6 templates/account/login.html:17 #: templates/account/login.html:38 templates/socialaccount/login.html:5 msgid "Sign In" -msgstr "" +msgstr "Logga in" #: templates/account/login.html:21 msgid "Not a member?" @@ -9281,7 +9760,7 @@ msgstr "" #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 #: templates/socialaccount/signup.html:20 msgid "Sign Up" -msgstr "" +msgstr "Registrera dig" #: templates/account/login.html:45 msgid "Forgot Password?" @@ -9289,7 +9768,7 @@ msgstr "" #: templates/account/login.html:53 msgid "or log in with" -msgstr "" +msgstr "eller logga in med" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:20 @@ -9316,7 +9795,7 @@ msgstr "" #: templates/account/password_reset.html:23 msgid "Reset My Password" -msgstr "" +msgstr "Återställ mitt lösenord" #: templates/account/password_reset.html:27 templates/account/signup.html:37 msgid "This function is currently disabled. Please contact an administrator." @@ -9333,7 +9812,7 @@ msgstr "" #: templates/account/password_reset_from_key.html:18 msgid "Change password" -msgstr "" +msgstr "Ändra lösenord" #: templates/account/password_reset_from_key.html:22 msgid "Your password is now changed." @@ -9369,11 +9848,11 @@ msgstr "" #: templates/allauth_2fa/authenticate.html:5 msgid "Two-Factor Authentication" -msgstr "" +msgstr "Tvåfaktorsautentisering" #: templates/allauth_2fa/authenticate.html:13 msgid "Authenticate" -msgstr "" +msgstr "Autentisera" #: templates/allauth_2fa/backup_tokens.html:6 msgid "Two-Factor Authentication Backup Tokens" @@ -9393,15 +9872,15 @@ msgstr "" #: templates/allauth_2fa/remove.html:6 msgid "Disable Two-Factor Authentication" -msgstr "" +msgstr "Inaktivera Tvåfaktorsautentisering" #: templates/allauth_2fa/remove.html:9 msgid "Are you sure?" -msgstr "" +msgstr "Är du säker?" #: templates/allauth_2fa/remove.html:17 msgid "Disable 2FA" -msgstr "" +msgstr "Inaktivera 2FA" #: templates/allauth_2fa/setup.html:6 msgid "Setup Two-Factor Authentication" @@ -9429,36 +9908,36 @@ msgstr "" #: templates/attachment_button.html:4 templates/js/translated/attachment.js:70 msgid "Add Link" -msgstr "" +msgstr "Lägg till länk" #: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 msgid "Add Attachment" -msgstr "" - -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" +msgstr "Lägg till bilaga" #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,25 +10060,37 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "Radera bilagor" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "Radera bilagor" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "" +msgstr "Redigera bilaga" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" -msgstr "" +msgstr "Redigera bilaga" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" -msgstr "" +msgstr "Radera bilaga" #: templates/js/translated/barcode.js:43 msgid "Scan barcode data here using barcode scanner" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "Välj artiklar" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "" +msgstr "Lägg till leverantör" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" -msgstr "" +msgstr "Skapa ny kontakt" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "" +msgstr "Redigera kontakt" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 -msgid "Role" -msgstr "" - #: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 +msgid "Role" +msgstr "Roll" + +#: templates/js/translated/company.js:676 msgid "Delete Contacts" -msgstr "" +msgstr "Radera kontakter" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" -msgstr "" +msgstr "Inga kontakter hittades" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "" +msgstr "Telefonnummer" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "" +msgstr "E-postadress" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" +msgstr "Radera kontakt" + +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "Skapa ny adress" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "Redigera adress" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "Radera adresser" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "Inga adresser hittades" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "Radera adress" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "" +msgstr "Senast uppdaterad" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,99 +11043,99 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "" +msgstr "Skapa filter" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "" +msgstr "JA" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "" +msgstr "NEJ" #: templates/js/translated/helpers.js:93 msgid "True" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "" +msgstr "Avbryt" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" -msgstr "" +msgstr "Inga underkategorier hittades" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" -msgstr "" +msgstr "Aktivera" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" -msgstr "" +msgstr "Inaktivera" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" -msgstr "" +msgstr "Lagerstatus" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" -msgstr "" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "Ändra lagerstatus" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "Ändra lagerstatus" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" -msgstr "" +msgstr "Orderstatus" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 -msgid "Include subcategories" +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 +msgid "Include subcategories" +msgstr "Inkludera underkategorier" + +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" -msgstr "" +msgstr "Lagerstatus" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "" +msgstr "rader per sida" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,17 +13097,17 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" -msgstr "" +msgstr "Spara" #: templates/notifications.html:9 msgid "Show all notifications and history" @@ -12474,13 +13117,13 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" -msgstr "" +msgstr "Logga in igen" #: templates/search.html:9 msgid "Show full search results" @@ -12532,7 +13175,7 @@ msgstr "" #: templates/socialaccount/login.html:24 msgid "Continue" -msgstr "" +msgstr "Fortsätt" #: templates/socialaccount/login.html:29 msgid "Invalid SSO Provider" @@ -12562,7 +13205,7 @@ msgstr "" #: templates/stats.html:18 msgid "Database" -msgstr "" +msgstr "Databas" #: templates/stats.html:26 msgid "Server is running in debug mode" @@ -12616,111 +13259,107 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" -msgstr "" +msgstr "Ja" #: templates/yesnolabel.html:6 msgid "No" -msgstr "" +msgstr "Nej" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" -msgstr "" +msgstr "Användare" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po index 4081384811..895c98d2fd 100644 --- a/InvenTree/locale/th/LC_MESSAGES/django.po +++ b/InvenTree/locale/th/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" "Last-Translator: \n" "Language-Team: Thai\n" "Language: th_TH\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "ป้อนวันที่" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "หมายเหตุ" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "" -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "ป้อนรหัสผ่าน" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "ป้อนรหัสผ่านใหม่" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "ยืนยันรหัสผ่าน" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "ยืนยันรหัสผ่านใหม่" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "รหัสผ่านเดิม" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "อีเมล (อีกครั้ง)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "การยืนยันอีเมล" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "" -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "" -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "" -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "ปริมาณสินค้าไม่ถูกต้อง" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "หมายเลขซีเรียลซ้ำกัน" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" +msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" +msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "ไม่พบหมายเลขซีเรียล" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "การเชื่อมต่อขัดข้อง" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "ไฟล์รูปภาพมีขนาดใหญ่เกินไป" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "ไฟล์แนบ" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "เลือกไฟล์ที่ต้องการแนบ" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "ลิงก์" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "ความคิดเห็น" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "ความเห็นของไฟล์" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "ผู้ใช้งาน" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "วันที่อัปโหลด" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "จำเป็นต้องใส่ชื่อไฟล์" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "ชื่อไฟล์ห้ามมีตัวอักษรต้องห้าม '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "ไม่พบนามสกุลของไฟล์" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "ชื่อ" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "คำอธิบาย" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "ข้อมูลบาร์โค้ด" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "บาร์โค้ดนี้มีในระบบแล้ว" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "เกิดข้อผิดพลาดที่เซิร์ฟเวอร์" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "ต้องเป็นตัวเลข" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -484,143 +509,155 @@ msgstr "" msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "ภาษาโปรตุเกส" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "ภาษารัสเซีย" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "ภาษาสวีเดน" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "ภาษาไทย" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "ภาษาเวียดนาม" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "ภาษาจีน" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "อยู่ระหว่างดำเนินการ" @@ -630,8 +667,8 @@ msgstr "" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "สำเร็จแล้ว" @@ -654,10 +691,10 @@ msgstr "ส่งคืนแล้ว" msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "จัดส่งแล้ว" @@ -689,7 +726,7 @@ msgstr "" msgid "Legacy stock tracking entry" msgstr "" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "" @@ -745,7 +782,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "" @@ -765,7 +802,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "จัดส่งให้ลูกค้าแล้ว" @@ -813,119 +850,165 @@ msgstr "" msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "แก้ไขข้อมูลสมาชิก" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "ตั้งรหัสผ่าน" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "รหัสผ่านต้องตรงกัน" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "ป้อนรหัสผ่านไม่ถูกต้อง" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "ข้อมูลระบบ" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "เกี่ยวกับ Inventree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "" -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "สถานะ" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1639,18 +1738,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:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "" @@ -1661,47 +1760,46 @@ msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "" msgid "Stock can be taken from any available location." msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "" @@ -1742,23 +1840,23 @@ msgstr "" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "" @@ -1766,147 +1864,106 @@ msgstr "" msgid "No target date set" msgstr "" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "" @@ -1914,14 +1971,10 @@ msgstr "" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "" msgid "Select {name} file to upload" msgstr "" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" - -#: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" - -#: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" - -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" - -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" - -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" - -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" - -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" - -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" - -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" - -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" #: common/models.py:1127 -msgid "Allow Editing IPN" +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" msgstr "" -#: common/models.py:1134 -msgid "Copy Part BOM Data" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" +#: common/models.py:1138 +msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" +#: common/models.py:1144 +msgid "Download from URL" msgstr "" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1148 -msgid "Copy Part Test Data" +#: common/models.py:1151 +msgid "Download Size Limit" msgstr "" -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" msgstr "" #: common/models.py:1163 -msgid "Parts are templates by default" +msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" +#: common/models.py:1164 +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:1169 +msgid "Require confirm" msgstr "" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" +msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" +#: common/models.py:1176 +msgid "Tree Depth" msgstr "" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" +#: common/models.py:1186 +msgid "Update Check Interval" msgstr "" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" +#: common/models.py:1197 +msgid "Automatic Backup" msgstr "" #: common/models.py:1198 -msgid "Parts are trackable by default" +msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" +#: common/models.py:1204 +msgid "Auto Backup Interval" msgstr "" #: common/models.py:1205 -msgid "Parts are virtual by default" +msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1211 -msgid "Show Import in Views" +#: common/models.py:1215 +msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" msgstr "" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" +msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" +#: common/models.py:1237 +msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1239 -msgid "Part Name Display Format" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1240 -msgid "Format to display the part name" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" msgstr "" -#: common/models.py:1247 -msgid "Part Category Default Icon" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" +#: common/models.py:1255 +msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" +#: common/models.py:1256 +msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" +#: common/models.py:1266 +msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" +#: common/models.py:1273 +msgid "Part Revisions" msgstr "" -#: common/models.py:1275 -msgid "Use Supplier Pricing" +#: common/models.py:1274 +msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" +#: common/models.py:1280 +msgid "IPN Regex" msgstr "" -#: common/models.py:1282 -msgid "Purchase History Override" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" +#: common/models.py:1292 +msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1333 -msgid "Enable internal prices for parts" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1339 -msgid "Internal Price Override" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" +msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" +#: common/models.py:1370 +msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" +#: common/models.py:1376 +msgid "Show Import in Views" msgstr "" #: common/models.py:1377 -msgid "Page Size" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1378 -msgid "Default page size for PDF reports" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1388 -msgid "Enable Test Reports" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1389 -msgid "Enable generation of test reports" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1395 -msgid "Attach Test Reports" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1404 +msgid "Part Name Display Format" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" +#: common/models.py:1405 +msgid "Format to display the part name" msgstr "" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" +#: common/models.py:1412 +msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1416 -msgid "Delete Depleted Stock" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1418 +msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" +msgid "Maximum Pricing Decimal Places" msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1443 -msgid "Stock Stale Time" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" +msgid "Enable Reports" msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" +msgid "Enable generation of reports" msgstr "" -#: common/models.py:1542 -msgid "Enable registration" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" +msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" msgstr "" #: common/models.py:1550 -msgid "Enable SSO on the login pages" +msgid "Default page size for PDF reports" msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" +msgid "Enable Test Reports" msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" +msgid "Attach Test Reports" msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" +msgid "Globally Unique Serials" msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" +msgid "Autofill Serial Numbers" msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" +msgid "Determines default behaviour when a stock item is depleted" msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" +msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" +msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1628 -msgid "Enable URL integration" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1639 +msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" +msgid "Password twice" msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" +msgid "Allowed domains" msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" +msgid "Group on signup" msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" +#: common/models.py:1781 +msgid "Users must use multifactor security." msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1793 -msgid "Show recent stock changes" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1804 +msgid "Enable navigation integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1808 -msgid "Show low stock items on the homepage" +#: common/models.py:1812 +msgid "Enable app integration" msgstr "" -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1813 +msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" +msgid "Enable event integration" msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 -msgid "Price break quantity" +msgid "Search Return Orders" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" msgstr "" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3507,331 +3609,395 @@ msgstr "" msgid "Company website URL" msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" - -#: company/models.py:119 -msgid "Company address" -msgstr "" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "" @@ -3916,156 +4089,144 @@ msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "" @@ -4244,102 +4392,95 @@ msgstr "" msgid "Supplier Part Pricing" msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7108,37 +7232,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "" msgid "No matching action found" msgstr "" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" +msgid "Location actions" msgstr "" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "" @@ -8659,12 +9071,21 @@ msgstr "" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9204,44 +9679,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9259,7 +9738,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "" @@ -9435,30 +9914,30 @@ msgstr "" msgid "Add Attachment" msgstr "" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10448,89 +11043,89 @@ msgstr "" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1746 -msgid "stock items" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12616,50 +13259,6 @@ msgstr "" msgid "Email settings not configured" msgstr "" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "" @@ -12668,59 +13267,99 @@ msgstr "" msgid "No" msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "" diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po index 7152c423f6..dda05d963c 100644 --- a/InvenTree/locale/tr/LC_MESSAGES/django.po +++ b/InvenTree/locale/tr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -17,420 +17,445 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API uç noktası bulunamadı" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "Kullanıcının bu modeli görüntüleme izni yok" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" +msgstr "Değer verilmemiş" + +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "" - -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Hata detaylarını admin panelinde bulabilirsiniz" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Tarih giriniz" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Notlar" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" -msgstr "" +msgstr "'{name}' değeri desen formatında yer almıyor" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Sağlanan değer gerekli kalıpla eşleşmiyor: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Şifrenizi girin" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Lütfen Yeni Parolayı Girin" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Parolayı doğrulayın" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Yeni parolayı doğrulayın" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Eski parola" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "E-posta (tekrar)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "E-posta adresi onayı" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Her seferind eaynı e-posta adresini yazmalısınız." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Sağlanan e-posta adresi geçerli değil." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Sağlanan e-posta alanı onaylanmadı." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "Kayıt devre dışı." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Geçersiz veri sağlandı" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Boş seri numarası dizesi" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Yinelenen seri" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Geçersiz grup: {g}" - -#: InvenTree/helpers.py:562 -#, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Invalid group sequence: {g}" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 +#, python-brace-format +msgid "Invalid group sequence: {group}" +msgstr "" + +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "Seri numarası bulunamadı" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Bağlantı hatası" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Sunucu geçersiz durum kodu ile cevap verdi" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "İstisna oluştu" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Sunucu geçersiz Content-Length değeriyle yanıt verdi" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Resim boyutu çok büyük" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Resim indirme boyutu izin verilenden büyük" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Uzak sunucu boş cevap döndü" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "Sağlanan URL geçerli bir resim dosyası değil" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "E-posta" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "Eksik dosya" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "Bozuk dış bağlantı" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Ek" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Eklenecek dosyayı seç" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Bağlantı" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Harici URL'ye bağlantı" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Yorum" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Dosya yorumu" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Kullanıcı" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "yükleme tarihi" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Dosya adı boş olamaz" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Ek dosya yolu geçersiz" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "Dosya adı geçersiz karakterler içeriyor'{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "Dosya uzantısı yok" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "Aynı isimli başka bir dosya zaten var" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "Dosya adı değiştirilirken hata" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "Geçersiz seçim" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "Adı" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Açıklama" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Açıklama (isteğe bağlı)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "üst" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" -msgstr "" +msgstr "Yol" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" msgstr "" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" -msgstr "" +msgstr "Barkod Verisi" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" -msgstr "" +msgstr "Üçüncü parti barkod verisi" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" -msgstr "" +msgstr "Barkod Hash" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" -msgstr "" +msgstr "Sunucu Hatası" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "Geçerli bir numara olmalı" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "Para birimi" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -484,143 +509,155 @@ msgstr "Gerekli kolon ismi eksik:'{name}'" msgid "Duplicate column: '{col}'" msgstr "Tekrarlanan kolon ismi:'{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" -msgstr "" +msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 msgid "Czech" -msgstr "" +msgstr "Çekçe" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" -msgstr "" +msgstr "Danca" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Almanca" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "Yunanca" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" msgstr "İngilizce" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "İspanyolca" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "İspanyolca(Meksika)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" -msgstr "" +msgstr "Farsça" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" -msgstr "" +msgstr "Fince" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Fransızca" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "İbranice" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Macarca" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "İtalyanca" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Japonca" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Korece" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Flemenkçe" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Norveççe" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Polonyaca" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" -msgstr "" +msgstr "Portekizce" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" -msgstr "" +msgstr "Portekizce (Brezilya)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Rusça" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" -msgstr "" +msgstr "Slovakça" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "İsveççe" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Tay dili" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Türkçe" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Vietnamca" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Çince" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "Arka plan çalışanı kontrolü başarısız oldu" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "E-posta arka ucu yapılandırılmadı" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "InvenTree sistem sağlık kontrolü başarısız" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "Bekliyor" @@ -630,8 +667,8 @@ msgstr "Sipariş verildi" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "Tamamlandı" @@ -652,12 +689,12 @@ msgstr "İade" #: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 msgid "In Progress" -msgstr "" +msgstr "Devam Ediyor" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "Sevk edildi" @@ -683,13 +720,13 @@ msgstr "Reddedildi" #: InvenTree/status_codes.py:72 msgid "Quarantined" -msgstr "" +msgstr "Karantinaya alındı" #: InvenTree/status_codes.py:91 msgid "Legacy stock tracking entry" msgstr "Eski stok izleme girişi" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "Stok kalemi oluşturuldu" @@ -719,7 +756,7 @@ msgstr "Konum değişti" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "" +msgstr "Stok Güncellendi" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" @@ -745,7 +782,7 @@ msgstr "Üst ögeden ayır" msgid "Split child item" msgstr "Alt ögeyi ayır" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "Stok parçalarını birleştir" @@ -765,7 +802,7 @@ msgstr "Yapım emri çıktısı tamamlandı" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "" @@ -781,7 +818,7 @@ msgstr "" msgid "Returned against Return Order" msgstr "" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" msgstr "Müşteriye gönderildi" @@ -795,7 +832,7 @@ msgstr "Üretim" #: InvenTree/status_codes.py:191 msgid "Return" -msgstr "" +msgstr "Geri Dön" #: InvenTree/status_codes.py:194 msgid "Repair" @@ -813,119 +850,165 @@ msgstr "" msgid "Reject" msgstr "" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "Geçerli bir para birimi kodu değil" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "Fazlalık değeri negatif olmamalıdır" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "Fazlalık %100'ü geçmemelidir" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Kullanıcı Bilgisini Düzenle" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Şifre Belirle" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Parola alanları eşleşmelidir" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Sistem Bilgisi" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "InvenTree Hakkında" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Mevcut" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Yapım İşi Emri" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Yapım İşi Emirleri" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "Yapım İşi Emri Referansı" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Referans" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" msgstr "" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "Üst Yapım İşi" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,548 +1017,563 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Parça" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "Yapım işi için parça seçin" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "Satış Emri Referansı" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "Bu yapım işinin tahsis edildiği satış emri" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "Kaynak Konum" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "Bu yapım işi için stok alınacak konumu seçin (her hangi bir stok konumundan alınması için boş bırakın)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "Hedef Konum" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "Tamamlanmış ögelerin saklanacağı konumu seçiniz" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "Yapım İşi Miktarı" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "Yapım işi stok kalemlerinin sayısı" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "Tamamlanmış ögeler" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "Tamamlanan stok kalemlerinin sayısı" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "Yapım İşi Durumu" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "Yapım işi durum kodu" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "Sıra numarası" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "Yapım işi çıktısı için sıra numarası" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Oluşturulma tarihi" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "Hedef tamamlama tarihi" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "Yapım işinin tamamlanması için hedef tarih. Bu tarihten sonra yapım işi gecikmiş olacak." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Tamamlama tarihi" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "tamamlayan" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "Veren" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "Bu yapım işi emrini veren kullanıcı" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "Sorumlu" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "Harici Bağlantı" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "Yapım işi çıktısı belirtilmedi" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "Yapım işi çıktısı zaten tamamlanmış" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "Yapım işi çıktısı, yapım işi emri ile eşleşmiyor" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Ana parça izlenebilir olarak işaretlendiğinden, yapım işi çıktısı için bir yapım işi ögesi belirtmelidir" - -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "Stok kalemi fazladan tahsis edilmiş" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "Seri numaralı stok için miktar bir olmalı" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "Yapım İşi" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "Yapım işi için tahsis edilen parçalar" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "Stok Kalemi" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "Kaynak stok kalemi" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Miktar" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "Ana parça izlenebilir olarak işaretlendiğinden, yapım işi çıktısı için bir yapım işi ögesi belirtmelidir" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "Stok kalemi fazladan tahsis edilmiş" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Seri numaralı stok için miktar bir olmalı" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Stok Kalemi" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Kaynak stok kalemi" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "Yapım işi için tahsis edilen stok miktarı" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "Kurulduğu yer" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "Hedef stok kalemi" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "Yapım işi çıktısı için miktarını girin" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Seri Numaraları" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "Yapım işi çıktısı için seri numaraları girin" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "Konum" -#: build/serializers.py:416 +#: build/serializers.py:422 msgid "Stock location for scrapped outputs" msgstr "" -#: build/serializers.py:422 +#: build/serializers.py:428 msgid "Discard Allocations" msgstr "" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Durum" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "Gerekli stok tamamen tahsis edilemedi" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "Gerekli yapım işi miktarı tamamlanmadı" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" +#: build/serializers.py:718 +msgid "Build Line" msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "" @@ -1515,15 +1613,15 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1532,89 +1630,90 @@ msgstr "" msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "Barkod işlemleri" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "Yazdırma işlemleri" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "Yapım İşi işlemleri" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "Yapım İşini Düzenle" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "Yapım İşini İptal Et" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "Tamamlanmış Yapım İşi" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "" @@ -1639,18 +1738,18 @@ msgid "Stock has not been fully allocated to this Build Order" msgstr "Stok, yapım işi emri için tamamen tahsis edilemedi" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "Hedeflenen tarih" @@ -1661,47 +1760,46 @@ msgstr "Bu yapım işinin %(target)s tarihinde süresi doluyor" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "Vadesi geçmiş" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Tamamlandı" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "Sipariş Emri" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "Veren" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "" @@ -1729,8 +1827,8 @@ msgstr "Stok Kaynağı" msgid "Stock can be taken from any available location." msgstr "Stok herhangi bir konumdan alınabilir." -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "Hedef" @@ -1742,23 +1840,23 @@ msgstr "Hedef konumu belirtilmedi" msgid "Allocated Parts" msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "Toplu" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "Oluşturuldu" @@ -1766,147 +1864,106 @@ msgstr "Oluşturuldu" msgid "No target date set" msgstr "Hedef tarih ayarlanmadı" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Tamamlandı" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "Yapım İşi tamamlanmadı" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "Alt Yapım İşi Emrileri" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "Yapım İşi için Stok Tahsis Et" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" -msgstr "Stok tahsisini kaldır" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "Stok Tahsisini Kaldır" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "Stok Tahsis Et" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "Gerekli parçaları sipariş edin" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "Parça Siparişi" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "Takip edilmeyen stok yapım işi emri için tamamen tahsis edildi" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "Takip edilmeyen stok yapım işi emri için tamamen tahsis edilemedi" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "Bu yapım işi emri, herhangi bir takip edilmeyen malzeme listesi öğesine sahip değil" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "Tamamlanmamış Yapım İşi Çıktıları" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "Yeni yapım işi çıktısı oluştur" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "Tamamlanmış Yapım İşi Çıktıları" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "Ekler" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "Yapım İşi Notları" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "Yeni Yapım İşi Emri" @@ -1914,14 +1971,10 @@ msgstr "Yeni Yapım İşi Emri" msgid "Build Order Details" msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "Tamamlanmamış Çıktılar" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" - #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" @@ -1960,1494 +2013,1543 @@ msgstr "{name.title()} Dosya" msgid "Select {name} file to upload" msgstr "{name} dosyasını yüklemek için seçin" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "Anahtar dizesi benzersiz olmalı" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:928 +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 msgid "Restart required" msgstr "" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:936 +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "Şirket adı" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "Ana URL" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "Varsayılan Para Birimi" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "URL'den indir" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "Harici URL'den resim ve dosyaların indirilmesine izin ver" - -#: common/models.py:986 -msgid "Download Size Limit" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 msgid "days" msgstr "günler" -#: common/models.py:1032 +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "URL'den indir" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Harici URL'den resim ve dosyaların indirilmesine izin ver" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "" + +#: common/models.py:1164 +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:1169 +msgid "Require confirm" +msgstr "" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "" + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "" + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" + +#: common/models.py:1197 msgid "Automatic Backup" msgstr "" -#: common/models.py:1033 +#: common/models.py:1198 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1039 +#: common/models.py:1204 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1040 +#: common/models.py:1205 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1050 +#: common/models.py:1215 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1051 +#: common/models.py:1216 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1061 +#: common/models.py:1226 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1062 +#: common/models.py:1227 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1072 +#: common/models.py:1237 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1073 +#: common/models.py:1238 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Barkod Desteği" -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "Barkod tarayıcı desteğini etkinleştir" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" -#: common/models.py:1090 +#: common/models.py:1255 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1091 +#: common/models.py:1256 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1101 +#: common/models.py:1266 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1102 +#: common/models.py:1267 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1108 +#: common/models.py:1273 msgid "Part Revisions" msgstr "" -#: common/models.py:1109 +#: common/models.py:1274 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1115 +#: common/models.py:1280 msgid "IPN Regex" msgstr "DPN Regex" -#: common/models.py:1116 +#: common/models.py:1281 msgid "Regular expression pattern for matching Part IPN" msgstr "Parça DPN eşleştirmesi için Düzenli İfade Kalıbı (Regex)" -#: common/models.py:1120 +#: common/models.py:1285 msgid "Allow Duplicate IPN" msgstr "Yinelenen DPN'ye İzin Ver" -#: common/models.py:1121 +#: common/models.py:1286 msgid "Allow multiple parts to share the same IPN" msgstr "Birden çok parçanın aynı DPN'yi paylaşmasına izin ver" -#: common/models.py:1127 +#: common/models.py:1292 msgid "Allow Editing IPN" msgstr "DPN Düzenlemeye İzin Ver" -#: common/models.py:1128 +#: common/models.py:1293 msgid "Allow changing the IPN value while editing a part" msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver" -#: common/models.py:1134 +#: common/models.py:1299 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1135 +#: common/models.py:1300 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1141 +#: common/models.py:1306 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1142 +#: common/models.py:1307 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1148 +#: common/models.py:1313 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1149 +#: common/models.py:1314 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1155 +#: common/models.py:1320 msgid "Copy Category Parameter Templates" msgstr "Kategori Paremetre Sablonu Kopyala" -#: common/models.py:1156 +#: common/models.py:1321 msgid "Copy category parameter templates when creating a part" msgstr "Parça oluştururken kategori parametre şablonlarını kopyala" -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "Şablon" -#: common/models.py:1163 +#: common/models.py:1328 msgid "Parts are templates by default" msgstr "Parçaları varsayılan olan şablondur" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "Montaj" -#: common/models.py:1170 +#: common/models.py:1335 msgid "Parts can be assembled from other components by default" msgstr "Parçalar varsayılan olarak başka bileşenlerden monte edilebilir" -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "Bileşen" -#: common/models.py:1177 +#: common/models.py:1342 msgid "Parts can be used as sub-components by default" msgstr "Parçalar varsayılan olarak alt bileşen olarak kullanılabilir" -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 +#: common/models.py:1348 part/admin.py:53 part/models.py:981 msgid "Purchaseable" msgstr "Satın Alınabilir" -#: common/models.py:1184 +#: common/models.py:1349 msgid "Parts are purchaseable by default" msgstr "Parçalar varsayılan olarak satın alınabilir" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "Satılabilir" -#: common/models.py:1191 +#: common/models.py:1356 msgid "Parts are salable by default" msgstr "Parçalar varsayılan olarak satılabilir" -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "Takip Edilebilir" -#: common/models.py:1198 +#: common/models.py:1363 msgid "Parts are trackable by default" msgstr "Parçalar varsayılan olarak takip edilebilir" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "Sanal" -#: common/models.py:1205 +#: common/models.py:1370 msgid "Parts are virtual by default" msgstr "Parçalar varsayılan olarak sanaldır" -#: common/models.py:1211 +#: common/models.py:1376 msgid "Show Import in Views" msgstr "" -#: common/models.py:1212 +#: common/models.py:1377 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1218 +#: common/models.py:1383 msgid "Show related parts" msgstr "İlgili parçaları göster" -#: common/models.py:1219 +#: common/models.py:1384 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1225 +#: common/models.py:1390 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1226 +#: common/models.py:1391 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 +#: common/models.py:1397 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1233 +#: common/models.py:1398 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1239 +#: common/models.py:1404 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1240 +#: common/models.py:1405 msgid "Format to display the part name" msgstr "" -#: common/models.py:1247 +#: common/models.py:1412 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1248 +#: common/models.py:1413 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1253 +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1425 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1254 +#: common/models.py:1426 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1264 +#: common/models.py:1436 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1265 +#: common/models.py:1437 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1275 +#: common/models.py:1447 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1276 +#: common/models.py:1448 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1282 +#: common/models.py:1454 msgid "Purchase History Override" msgstr "" -#: common/models.py:1283 +#: common/models.py:1455 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1289 +#: common/models.py:1461 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1290 +#: common/models.py:1462 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1296 +#: common/models.py:1468 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1297 +#: common/models.py:1469 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1307 +#: common/models.py:1479 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1308 +#: common/models.py:1480 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1314 +#: common/models.py:1486 msgid "Active Variants Only" msgstr "" -#: common/models.py:1315 +#: common/models.py:1487 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1321 +#: common/models.py:1493 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1322 +#: common/models.py:1494 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1332 +#: common/models.py:1504 msgid "Internal Prices" msgstr "" -#: common/models.py:1333 +#: common/models.py:1505 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1339 +#: common/models.py:1511 msgid "Internal Price Override" msgstr "" -#: common/models.py:1340 +#: common/models.py:1512 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1346 +#: common/models.py:1518 msgid "Enable label printing" msgstr "" -#: common/models.py:1347 +#: common/models.py:1519 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1353 +#: common/models.py:1525 msgid "Label Image DPI" msgstr "" -#: common/models.py:1354 +#: common/models.py:1526 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1363 +#: common/models.py:1535 msgid "Enable Reports" msgstr "" -#: common/models.py:1364 +#: common/models.py:1536 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1370 templates/stats.html:25 +#: common/models.py:1542 templates/stats.html:25 msgid "Debug Mode" msgstr "Hata Ayıklama Modu" -#: common/models.py:1371 +#: common/models.py:1543 msgid "Generate reports in debug mode (HTML output)" msgstr "Raporları hata ayıklama modunda üret (HTML çıktısı)" -#: common/models.py:1377 +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 msgid "Page Size" msgstr "Sayfa Boyutu" -#: common/models.py:1378 +#: common/models.py:1550 msgid "Default page size for PDF reports" msgstr "PDF raporlar için varsayılan sayfa boyutu" -#: common/models.py:1388 +#: common/models.py:1556 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1389 +#: common/models.py:1557 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1395 +#: common/models.py:1563 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1396 +#: common/models.py:1564 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1402 +#: common/models.py:1570 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1403 +#: common/models.py:1571 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1409 +#: common/models.py:1577 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1410 +#: common/models.py:1578 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1416 +#: common/models.py:1584 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1417 +#: common/models.py:1585 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1423 +#: common/models.py:1591 msgid "Batch Code Template" msgstr "" -#: common/models.py:1424 +#: common/models.py:1592 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1429 +#: common/models.py:1597 msgid "Stock Expiry" msgstr "" -#: common/models.py:1430 +#: common/models.py:1598 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1436 +#: common/models.py:1604 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1437 +#: common/models.py:1605 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1443 +#: common/models.py:1611 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1444 +#: common/models.py:1612 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1451 +#: common/models.py:1619 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1452 +#: common/models.py:1620 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1458 +#: common/models.py:1626 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1459 +#: common/models.py:1627 msgid "Enable ownership control over stock locations and items" msgstr "Stok konumu ve ögeler üzerinde sahiplik kontrolünü etkinleştirin" -#: common/models.py:1465 +#: common/models.py:1633 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1466 +#: common/models.py:1634 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1471 +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1646 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1472 +#: common/models.py:1647 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1478 +#: common/models.py:1653 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1479 +#: common/models.py:1654 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1485 +#: common/models.py:1660 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1486 +#: common/models.py:1661 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1492 +#: common/models.py:1667 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1493 +#: common/models.py:1668 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1499 +#: common/models.py:1674 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1500 +#: common/models.py:1675 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1506 +#: common/models.py:1681 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1507 +#: common/models.py:1682 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1513 +#: common/models.py:1688 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1514 +#: common/models.py:1689 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1520 +#: common/models.py:1695 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1521 +#: common/models.py:1696 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1527 +#: common/models.py:1702 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1528 +#: common/models.py:1703 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1535 +#: common/models.py:1710 msgid "Enable password forgot" msgstr "" -#: common/models.py:1536 +#: common/models.py:1711 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1542 +#: common/models.py:1717 msgid "Enable registration" msgstr "" -#: common/models.py:1543 +#: common/models.py:1718 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1549 +#: common/models.py:1724 msgid "Enable SSO" msgstr "" -#: common/models.py:1550 +#: common/models.py:1725 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1556 +#: common/models.py:1731 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1557 +#: common/models.py:1732 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1563 +#: common/models.py:1738 msgid "Email required" msgstr "" -#: common/models.py:1564 +#: common/models.py:1739 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1570 +#: common/models.py:1745 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1571 +#: common/models.py:1746 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1577 +#: common/models.py:1752 msgid "Mail twice" msgstr "" -#: common/models.py:1578 +#: common/models.py:1753 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1584 +#: common/models.py:1759 msgid "Password twice" msgstr "" -#: common/models.py:1585 +#: common/models.py:1760 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1591 +#: common/models.py:1766 msgid "Allowed domains" msgstr "" -#: common/models.py:1592 +#: common/models.py:1767 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1598 +#: common/models.py:1773 msgid "Group on signup" msgstr "" -#: common/models.py:1599 +#: common/models.py:1774 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1605 +#: common/models.py:1780 msgid "Enforce MFA" msgstr "" -#: common/models.py:1606 +#: common/models.py:1781 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1612 +#: common/models.py:1787 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1613 +#: common/models.py:1788 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1620 -msgid "Check plugin signatures" -msgstr "" - -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "" - -#: common/models.py:1628 +#: common/models.py:1796 msgid "Enable URL integration" msgstr "" -#: common/models.py:1629 +#: common/models.py:1797 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1636 +#: common/models.py:1804 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1637 +#: common/models.py:1805 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1644 +#: common/models.py:1812 msgid "Enable app integration" msgstr "" -#: common/models.py:1645 +#: common/models.py:1813 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1652 +#: common/models.py:1820 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1653 +#: common/models.py:1821 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1660 +#: common/models.py:1828 msgid "Enable event integration" msgstr "" -#: common/models.py:1661 +#: common/models.py:1829 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1668 +#: common/models.py:1836 msgid "Enable project codes" msgstr "" -#: common/models.py:1669 +#: common/models.py:1837 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1675 +#: common/models.py:1843 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1676 +#: common/models.py:1844 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1682 -msgid "Automatic Stocktake Period" -msgstr "" - -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" -msgstr "" - -#: common/models.py:1692 -msgid "Report Deletion Interval" -msgstr "" - -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" -msgstr "" - -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" -msgstr "" - -#: common/models.py:1751 -msgid "Hide inactive parts" -msgstr "" - -#: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" -msgstr "" - -#: common/models.py:1758 -msgid "Show subscribed parts" -msgstr "" - -#: common/models.py:1759 -msgid "Show subscribed parts on the homepage" -msgstr "" - -#: common/models.py:1765 -msgid "Show subscribed categories" -msgstr "" - -#: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" -msgstr "" - -#: common/models.py:1772 -msgid "Show latest parts" -msgstr "" - -#: common/models.py:1773 -msgid "Show latest parts on the homepage" -msgstr "" - -#: common/models.py:1779 -msgid "Recent Part Count" -msgstr "" - -#: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "" - -#: common/models.py:1786 -msgid "Show unvalidated BOMs" -msgstr "" - -#: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" -msgstr "" - -#: common/models.py:1793 -msgid "Show recent stock changes" -msgstr "" - -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" -msgstr "" - -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "" - -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "" - -#: common/models.py:1807 -msgid "Show low stock" -msgstr "" - -#: common/models.py:1808 -msgid "Show low stock items on the homepage" -msgstr "" - -#: common/models.py:1814 -msgid "Show depleted stock" -msgstr "" - -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" -msgstr "" - -#: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" -msgstr "" - -#: common/models.py:1828 -msgid "Show expired stock" -msgstr "" - -#: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" -msgstr "" - -#: common/models.py:1836 -msgid "Show stale stock items on the homepage" -msgstr "" - -#: common/models.py:1842 -msgid "Show pending builds" -msgstr "" - -#: common/models.py:1843 -msgid "Show pending builds on the homepage" -msgstr "" - -#: common/models.py:1849 -msgid "Show overdue builds" -msgstr "" - #: common/models.py:1850 -msgid "Show overdue builds on the homepage" +msgid "Exclude External Locations" msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" +msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" msgstr "" #: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1948 -msgid "Display part categories in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" msgstr "" #: common/models.py:1954 -msgid "Search Stock" +msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1955 -msgid "Display stock items in search preview window" +#: common/models.py:1960 +msgid "Show recent stock changes" msgstr "" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" +msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" +#: common/models.py:1967 +msgid "Show low stock" msgstr "" #: common/models.py:1968 -msgid "Search Locations" +msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" +#: common/models.py:1974 +msgid "Show depleted stock" msgstr "" #: common/models.py:1975 -msgid "Search Companies" +msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1976 -msgid "Display companies in search preview window" +#: common/models.py:1981 +msgid "Show needed stock" msgstr "" #: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" +msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" +msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" +msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" -msgstr "Formlarda Miktarı Göster" +msgid "Show news on the homepage" +msgstr "" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" +#: common/models.py:2058 +msgid "Inline label display" msgstr "" #: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" +msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "Formlarda Miktarı Göster" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "Fiyat" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "Aktif" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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 "Resim" -#: common/models.py:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3478,7 +3580,7 @@ msgstr "" msgid "Parts imported" msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3497,9 +3599,9 @@ msgstr "" msgid "Description of the company" msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "" @@ -3507,331 +3609,395 @@ msgstr "" msgid "Company website URL" msgstr "Şirket web sitesi" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "Adres" - -#: company/models.py:119 -msgid "Company address" -msgstr "Şirket adresi" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "Telefon numarası" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "İletişim telefon numarası" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "E-posta" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "İletişim e-posta adresi" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "İletişim" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "müşteri mi" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "Bu şirkete ürün satıyor musunuz?" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "tedarikçi mi" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "Bu şirketten ürün satın alıyor musunuz?" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "üretici mi" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "Bu şirket üretim yapıyor mu?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "Bu şirket için varsayılan para birimi" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Temel Parça" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "Parça seçin" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Üretici" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "Üretici seçin" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "ÜPN" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "Üretici Parça Numarası" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "Parametre adı" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "Değer" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "Parametre değeri" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Tedarikçi" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "Tedarikçi seçin" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "Not" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "temel maliyet" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "Paketleme" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "çoklu" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "Mevcut" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "Satın Alma Emri Oluştur" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,72 +4007,79 @@ msgstr "" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "Müşteri" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Adres" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "Resmi İndirin" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "Tedarikçi Parçaları" @@ -3916,156 +4089,144 @@ msgstr "Yeni tedarikçi parçası oluştur" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "Yeni Tedarikçi Parçası" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "Parçaları sil" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "Parçaları Sil" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "Tedarikçi Stoku" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "Satın Alma Emirleri" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "Yeni satın alma emri oluştur" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "Yeni Satın Alma Emri" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "Satış Emirleri" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "Yeni satış emri oluştur" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "Yeni Satış Emri" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "Atanan Stok" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" +#: company/templates/company/detail.html:206 +msgid "Company addresses" msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "Üreticiler" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "Parça siparişi" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "" @@ -4074,46 +4235,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "Tedarikçi parçalarını sil" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "" @@ -4137,106 +4280,111 @@ msgstr "" msgid "Contacts" msgstr "" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "Tedarikçi Parçası" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "Tedarikçi Parça Stoku" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "Tedarikçi Parçası Emirleri" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "Fiyat Bilgisi" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "Stok Kalemleri" @@ -4244,102 +4392,95 @@ msgstr "Stok Kalemleri" msgid "Supplier Part Pricing" msgstr "Tedarikçi Parçası Fiyatlandırması" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "Yeni Tedarikçi" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "Yeni Üretici" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "Müşteriler" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "Yeni Müşteri" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "Şirketler" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "Yeni Şirket" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "Etiket adı" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "Etiket tanımı" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "Etiket" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "Etiket şablon listesi" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "Etkin" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "Etiket sablonu etkinleştirildi" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "Genişlik [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "Etiket genişliği mm olarak belirtilmeli" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "Yükseklik [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "Etiket yüksekliği mm olarak belirtilmeli" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "Dosya Adı Deseni" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "Etiket dosya adları oluşturma için desen" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "Filtreler" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,170 +4489,174 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "Harici sayfaya bağlantı" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" msgstr "Oluşturan" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "Sipariş referansı" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" @@ -4519,398 +4664,398 @@ msgstr "" msgid "Item quantity" msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "Tahsis miktarı stok miktarını aşamaz" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "Seri numaralı stok kalemi için miktar bir olmalı" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "Stok tahsis miktarını girin" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,26 +5065,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "Emiri dosya çıkar" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "Siparişi iptal et" @@ -4949,90 +5094,82 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "Siparişi tamamlandı olarak işaretle" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5085,13 +5222,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "" @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "Sipariş Notları" @@ -5197,40 +5329,40 @@ msgstr "Sipariş Notları" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "Toplam Maliyet" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "İşlemler" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "DPN" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "Revizyon" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "Anahtar kelimeler" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,24 +5490,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "Çeşidi" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "Minimum Stok" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5383,115 +5515,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "Parçalar" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Varsayılan Konum" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "" @@ -5499,461 +5624,468 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "Parça Kategorileri" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "Bu kategori içindeki parçalar için varsayılan konum" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "IPN regex kalıbıyla eşleşmelidir {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "Yinelenen DPN'ye parça ayarlarında izin verilmiyor" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "Parça adı" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "Şablon Mu" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "Bu parça bir şablon parçası mı?" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "Bu parça başka bir parçanın çeşidi mi?" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" msgstr "Parça revizyon veya versiyon numarası" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "Varsayılan Tedarikçi" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" msgstr "Varsayılan tedarikçi parçası" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "Bu parça diğer parçalardan yapılabilir mi?" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "Bu parça diğer parçaların yapımında kullanılabilir mi?" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "Bu parça dış tedarikçilerden satın alınabilir mi?" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "Bu parça müşterilere satılabilir mi?" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "Bu parça aktif mi?" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" msgstr "Oluşturan Kullanıcı" -#: part/models.py:1042 -msgid "User responsible for this part" +#: part/models.py:1014 +msgid "Owner responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "Test şablonları sadece takip edilebilir paçalar için oluşturulabilir" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "Test Adı" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "Test Açıklaması" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Gerekli" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "Testi geçmesi için bu gerekli mi?" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "Parametre şablon adı benzersiz olmalıdır" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "Parametre Şablonu" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Bu malzeme listesi, çeşit parçalar listesini kalıtsalıdır" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Çeşide İzin Ver" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Çeşit parçaların stok kalemleri bu malzeme listesinde kullanılabilir" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,90 +6605,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Alt kategoriler" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "Parçalar (Alt kategoriler dahil)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "Kategori ayarla" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "Kategori Ayarla" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6581,7 +6705,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "Yenile" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "Parça Test Şablonları" msgid "Add Test Template" msgstr "Test Şablonu Ekle" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "Parça Çeşitleri" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "Yeni çeşit oluştur" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "Yeni Çeşit" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "Parça Tedarikçileri" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6732,13 +6856,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6747,158 +6871,158 @@ msgstr "" msgid "Part List" msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "Etiket Yazdır" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "Stok işlemleri" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "Parça işlemleri" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "Bu parça bir şablon parçadır (Bu parçanın çeşitleri yapılabilir)" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "Parça stoku seri numarası ile takip edilebilir" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "Bu parça harici tedarikçilerden satın alınabilir" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "Pasif" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "Son Seri Numarası" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "Hesapla" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6955,15 +7079,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "Stok" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "Fiyatlandırma" @@ -6987,11 +7111,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7054,12 +7178,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "Stok Yok" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "Düşük Stok" @@ -7108,37 +7232,36 @@ msgstr "Yeni parça çeşidi oluştur" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "" @@ -7150,20 +7273,21 @@ msgstr "İşlem belirtilmedi" msgid "No matching action found" msgstr "Eşleşen eylem bulunamadı" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "Barkod verisi için eşleşme bulunamadı" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "Barkod verisi için eşleşme bulundu" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "Şablon için geçerli bir nesne sağlanmadı" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "Şablon adı" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "Rapor şablon dosyası" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "Rapor şablon tanımı" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "Revizyon numarası raporla (otomatik artış)" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "Rapor şablonu etkin" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Stok kalemi sorgu filtreleri (anahter=değer [key=value] olarak virgülle ayrılmış liste)" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,9 +7816,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "" @@ -7488,26 +7830,30 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "Seri Numara" +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "Seri No" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Stok Konumu" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "Stok Konumları" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "Seri numarası olan ögenin miktarı bir olmalı" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "Miktar birden büyük ise seri numarası ayarlanamaz" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "Üst Stok Kalemi" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "Bu stok kalemi için tedarikçi parçası seçin" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "Bu öge için seri numarası" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "Seri numaraları tam sayı listesi olmalı" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "Miktar seri numaları ile eşleşmiyor" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "Seri numaraları zaten mevcut" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "Stok kalemi stokta olmadığı için taşınamaz" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "İşlem notu ekle (isteğe bağlı)" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "Konuma Tara" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "Yazdırma işlemleri" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "Stok ayarlama işlemleri" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "Stoku seri numarala" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "Çeşide çevir" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Yapım İşi" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "Konum ayarlanmadı" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "Stok kalemi tüm gerekli testleri geçmedi" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erdi" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "Bu stok kaleminin süresi %(item.expiry_date)s tarihinde sona erecek" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "Uyarı" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "Bu işlem kolayca geri alınamaz" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "Stok Kalemine Dönüştür" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "Bu stok kalemi için seri numaralandırılmış ögeler oluştur." msgid "Select quantity to serialize, and unique serial numbers." msgstr "Seri numaralandırılacak miktarı ve benzersiz seri numaralarını seçin." -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 msgid "Location actions" msgstr "Konum işlemleri" -#: stock/templates/stock/location.html:104 +#: stock/templates/stock/location.html:106 msgid "Edit location" msgstr "Konumu düzenle" -#: stock/templates/stock/location.html:106 +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "Konumu sil" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "Bu konumun sahipleri listesinde değilsiniz. Bu stok konumu düzenlenemez." -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Alt konumlar" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "Yeni stok konumu oluştur" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "Yeni Konum" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "Giriş" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "Yapım İşi Emirleri için Gerekli" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8613,7 +9025,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "" @@ -8651,7 +9063,7 @@ msgstr "" msgid "Import Part" msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "Parça Parametre Şablonu" @@ -8659,12 +9071,21 @@ msgstr "Parça Parametre Şablonu" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,30 +9093,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8704,7 +9125,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8741,7 +9162,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,32 +9171,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "Commit Tarihi" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "Commit Hash Değeri" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "" @@ -8810,7 +9234,7 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" @@ -8827,7 +9251,7 @@ msgstr "" msgid "No value set" msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "" @@ -8851,50 +9275,103 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "Kategori parametre şablonu bulunamadı" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "Şablonu Düzenle" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "Şablonu Sil" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "Kategori Parametre Şablonu Sil" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "Kategori Parametre Şablonu Oluştur" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "Parça Parametre Şablonu Oluştur" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -8913,14 +9390,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "Arama" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,11 +9409,11 @@ msgstr "" msgid "Server" msgstr "Sunucu" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -8948,6 +9425,10 @@ msgstr "" msgid "Stock Settings" msgstr "" +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "" @@ -8958,13 +9439,6 @@ msgstr "" msgid "Change Password" msgstr "" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9204,44 +9679,48 @@ msgstr "Güncel" msgid "Update Available" msgstr "Güncelleme Mevcut" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "API Sürümü" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "Python Sürümü" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "Django Sürümü" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "Katkıda Bulunanlar" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "Mobil Uygulama" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "Hata Raporu Gönder" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "panoya kopyala" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "sürüm bilgisini kopyala" @@ -9259,7 +9738,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "Onay" @@ -9435,30 +9914,30 @@ msgstr "" msgid "Add Attachment" msgstr "Dosya Ekle" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "Cevap Yok" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "Bu fonksiyona erişmek için gerekli izinlere sahip değilsiniz" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "Ek Düzenle" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,743 +10203,839 @@ msgstr "Konuma Kaydet" msgid "Barcode does not match a valid location" msgstr "Barkod geçerli bir konumla eşleşmiyor" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "Kapat" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "Seviyeler" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "Dışa aktarılan malzeme listesine parça tedarikçisi verilerini dahil edin" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "Gerekli Parça" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "Yapım işi emri eksik" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "Tamamlanmış Yapım İşi Emri" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "Bu Malzeme Listesi takip edilebilir parçalar içeriyor" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "Takip edilebilir parçaların seri numaraları belirtilmiş olmalı" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "Birden çok tek yapım işi çıktısı oluşturmak için seri numaraları girin" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "Yapım İşi Çıktısı Oluştur" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "Stok tahsisini düzenle" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "Stok tahsisini sil" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "Parçaları Seçin" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" +msgstr "Stok tahsisini düzenle" + +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "Stok tahsisini sil" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "Şablon Parça" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "Tedarikçi parçalarını sil" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "Tedarikçi parçasını düzenle" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "Tedarikçi parçasını sil" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "doğru" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "yanlış" @@ -10448,89 +11043,89 @@ msgstr "yanlış" msgid "Select filter" msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "Etiket Şablonu Seç" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "Etiket Bulunamadı" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "Çeşit bulunamadı" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "Parça parametre şablonu bulunamadı" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "Parça Parametre Şablonu Düzenle" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "Parça Parametre Şablonu Sil" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "Katagori Yok" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" msgstr "" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "Kategori ayarla" + +#: templates/js/translated/part.js:2283 +msgid "parts" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "Katagori Yok" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "Sorgu ile eşleşen test şablonu bulunamadı" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "Ürünler" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "Stok tahsisini onayla" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "Silme İşlemini Onayla" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "Seri numaralarını tahsis et" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "Seri Numaralarını Tahsis Et" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,686 +12282,726 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "Stok konumunu düzenle" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "Bu stok konumunu silmek istediğinizden emin misiniz?" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "Stok Konumunu Sil" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "Stok ayarlamasını onayla" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "Stok konumu ayarlanmadı" -#: templates/js/translated/stock.js:1746 +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "Stok birlşetirme" + +#: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "Parça sil" + +#: templates/js/translated/stock.js:1923 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1850 +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:1855 +#: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1858 +#: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1863 +#: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1865 +#: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1868 +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "Detaylar" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "Konum artık yok" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "Çeşit Stokuna İzin Ver" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "Alt konumları dahil et" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "Konumları dahil et" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "Seri Numaralı" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "Seri numarası BvE" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "Seri numarası büyük veya eşit" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "Seri numarası KvE" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "Seri numarası küçük veya eşit" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "Seri numarası" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "Alt konumlardaki stoku dahil et" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "Çeşitleri Dahil Et" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "Çeşit parçaların stok kalemlerini dahil et" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "Alt kategorilerdeki parçaları dahil et" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "DPN Var" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" @@ -12390,51 +13033,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "Gösteriliyor" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "için" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "yüzünden" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "satırlar" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "Sonuç bulunamadı" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "Sayfalandırmayı Göster" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "Değiştir" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "Sütunlar" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "Tümü" @@ -12454,11 +13097,11 @@ msgstr "Bildirimleri Göster" msgid "New Notifications" msgstr "Yeni Bildirimler" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "Çıkış" @@ -12474,11 +13117,11 @@ msgstr "Tüm bildirimleri ve içeriğini göster" msgid "QR data not provided" msgstr "QR sağlanamadı" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "Başarıyla çıkış yapıldı." -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "Tekrar giriş yap" @@ -12616,50 +13259,6 @@ msgstr "E-posta Ayarları" msgid "Email settings not configured" msgstr "E-posta ayarları yapılandırılmadı" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "Barkod İşlemleri" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "Stok Seçenekleri" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "Seçili stok parçalarını ekle" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "Seçili stok parçalarını kaldır" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "Seçili stok parçalarını değerlendir" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "Stok parçalarını taşı" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "Seçili stok parçalarını birleştir" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "Stok birlşetirme" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "Seçili parçaları sırala" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "Seçili parçaları sil" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "Parça sil" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "Evet" @@ -12668,59 +13267,99 @@ msgstr "Evet" msgid "No" msgstr "Hayır" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "Kullanıcılar" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "Bu gruba atanacak kullanıcıyı seçin" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" -msgstr "Aşağıdaki kullanıcılar birden çok grubun üyesi:" +#: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "Kullanıcı bilgisi" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "Yetkiler" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "Önemli tarihler" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "İzinleri ayarla" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "Grup" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "Görünüm" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "Parçayı görüntüleme izni" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "Parça ekleme izni" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "Değiştir" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "Parçaları düzenleme izni" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "Parçaları silme izni" diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po index 85bea8a1a5..d1b4edfb96 100644 --- a/InvenTree/locale/vi/LC_MESSAGES/django.po +++ b/InvenTree/locale/vi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -17,422 +17,447 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "API endpoint không tồn tại" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "Người dùng không được phân quyền xem mẫu này" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" msgstr "Chưa cung cấp giá trị" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" -msgstr "" +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "Không thể chuyển đổi {original} sang {unit}" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "Số lượng cung cấp không hợp lệ" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "Số lượng cung cấp không hợp lệ ({exc})" -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "Chi tiết lỗi có thể được tìm thấy trong bảng quản trị" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "Nhập ngày" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "Ghi chú" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "Giá trị '{name}' không xuất hiện ở định dạng mẫu" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "Giá trị được cung cấp không khớp với mẫu bắt buộc: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "Nhập mật khẩu" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "Nhập mật khẩu mới" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "Xác nhận mật khẩu" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "Xác nhận mật khẩu mới" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "Mật khẩu cũ" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "Email (nhắc lại)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Xác nhận địa chỉ email" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "Bạn phải nhập cùng một email mỗi lần." -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "Địa chỉ email chính đã cung cấp không hợp lệ." -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "Miền email được cung cấp không được phê duyệt." -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "Đăng ký bị vô hiệu hóa." + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "Số lượng cung cấp không hợp lệ" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "Chuỗi số sê-ri trống" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "Trùng lặp sê-ri" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "Phạm vi nhóm không hợp lệ: {g}" +msgid "Invalid group range: {group}" +msgstr "Phạm vi nhóm không hợp lệ: {group}" -#: InvenTree/helpers.py:562 +#: InvenTree/helpers.py:552 #, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "Khoảng nhóm {group} vượt cho phép số lượng ({expected_quantity})" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 #, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "" +msgid "Invalid group sequence: {group}" +msgstr "Thứ tự nhóm không hợp lệ: {group}" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" -msgstr "" +msgstr "Không tìm thấy số sê-ri" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "" +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "Số sê ri duy nhất ({len(serials)}) phải phù hợp số lượng ({expected_quantity})" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" -msgstr "" +msgstr "Xóa thẻ HTML từ giá trị này" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "Lỗi kết nối" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "Máy chủ phản hồi với mã trạng thái không hợp lệ" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "Xảy ra Exception" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "Máy chủ đã phản hồi với giá trị Content-Length không hợp lệ" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "Hình ảnh quá lớn" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "Tải xuống hình ảnh vượt quá kích thước tối đa" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "Máy chủ trả về phản hồi trống" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "URL được cung cấp không phải là tệp hình ảnh hợp lệ" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "[{site.name}] Đăng nhập vào ứng dụng" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "Email" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" -msgstr "" +msgstr "Siêu dữ liệu phải là đối tượng từ điển của python" + +#: InvenTree/models.py:85 +msgid "Plugin Metadata" +msgstr "Phụ trợ siêu dữ liệu" #: InvenTree/models.py:86 -msgid "Plugin Metadata" -msgstr "" - -#: InvenTree/models.py:87 msgid "JSON metadata field, for use by external plugins" -msgstr "" +msgstr "Trường siêu dữ liệu JSON, được sử dụng bởi phụ trợ bên ngoài" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" -msgstr "" +msgstr "Mẫu được định dạng không thích hợp" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" -msgstr "" +msgstr "Khóa định dạng không rõ ràng đã được chỉ định" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" -msgstr "" +msgstr "Thiếu khóa định dạng cần thiết" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" -msgstr "" +msgstr "Trường tham chiếu không thể rỗng" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" -msgstr "" +msgstr "Tham chiếu phải phù hợp với mẫu yêu cầu" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" -msgstr "" +msgstr "Số tham chiếu quá lớn" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" -msgstr "" +msgstr "Tập tin bị thiếu" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" -msgstr "" +msgstr "Thiếu liên kết bên ngoài" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "Đính kèm" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "Chọn file đính kèm" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "Liên kết" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "Liên kết đến URL bên ngoài" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "Bình luận" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "Bình luận tệp tin" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "Người dùng" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "Ngày tải lên" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "Tên tập tin không được để trống" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "Thư mục đính kèm không hợp lệ" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" -msgstr "" +msgstr "Tên tập tin chứa ký tự không hợp lệ '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" -msgstr "" +msgstr "Tên tệp tin thiếu phần mở rộng" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" -msgstr "" +msgstr "Tên của tệp đính kèm này đã tồn tại" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" -msgstr "" +msgstr "Lỗi khi đổi tên tệp tin" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" -msgstr "" +msgstr "Tên trùng lặp không thể tồn tại trong cùng cấp thư mục" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" -msgstr "" +msgstr "Lựa chọn sai" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" -msgstr "" +msgstr "Tên" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "Mô tả" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "Mô tả (tùy chọn)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" -msgstr "" +msgstr "thư mục cha" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" -msgstr "" +msgstr "Đường dẫn" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" -msgstr "" +msgstr "Ghi chú markdown (không bắt buộc)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" -msgstr "" +msgstr "Dữ liệu mã vạch" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" -msgstr "" +msgstr "Dữ liệu mã vạch của bên thứ ba" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" -msgstr "" +msgstr "Dữ liệu băm mã vạch" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" -msgstr "" +msgstr "Chuỗi băm duy nhất của dữ liệu mã vạch" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" -msgstr "" +msgstr "Mã vạch đã tồn tại" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" -msgstr "" +msgstr "Lỗi máy chủ" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." -msgstr "" +msgstr "Lỗi đã được ghi lại bởi máy chủ." -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" -msgstr "" +msgstr "Phải là một số hợp lệ" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" -msgstr "" +msgstr "Tiền tệ" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" -msgstr "" +msgstr "Chọn tiền tệ trong các tùy chọn đang có" #: InvenTree/serializers.py:364 msgid "Filename" @@ -440,15 +465,15 @@ msgstr "Tên tập tin" #: InvenTree/serializers.py:401 msgid "Invalid value" -msgstr "" +msgstr "Giá trị không hợp lệ" #: InvenTree/serializers.py:423 msgid "Data File" -msgstr "" +msgstr "Tập tin dữ liệu" #: InvenTree/serializers.py:424 msgid "Select data file for upload" -msgstr "" +msgstr "Chọn tệp tin để tải lên" #: InvenTree/serializers.py:445 msgid "Unsupported file type" @@ -472,322 +497,334 @@ msgstr "Chưa có dữ liệu" #: InvenTree/serializers.py:601 msgid "No data columns supplied" -msgstr "" +msgstr "Chưa cung cấp cột dữ liệu" #: InvenTree/serializers.py:678 #, python-brace-format msgid "Missing required column: '{name}'" -msgstr "" +msgstr "Thiếu cột bắt buộc: '{name}'" #: InvenTree/serializers.py:687 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Nhân bản cột: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" -msgstr "" +msgstr "URL của tệp hình ảnh bên ngoài" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" -msgstr "" +msgstr "Chức năng tải hình ảnh từ URL bên ngoài không được bật" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "Tiếng Bulgaria" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "Tiếng Séc" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "Tiếng Đan Mạch" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:822 msgid "German" msgstr "Tiếng Đức" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:823 msgid "Greek" -msgstr "" +msgstr "Tiếng Hy Lạp" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:824 msgid "English" -msgstr "" +msgstr "Tiếng Anh" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:825 msgid "Spanish" -msgstr "" +msgstr "Tiếng Tây Ban Nha" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" -msgstr "" +msgstr "Tiếng Tây Ban Nha (Mê-hi-cô)" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" -msgstr "" +msgstr "Tiếng Ba Tư" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:828 msgid "Finnish" -msgstr "" +msgstr "Tiếng Phần Lan" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:829 msgid "French" msgstr "Tiếng Pháp" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "Tiếng Do Thái" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "Tiếng Ấn Độ" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "Tiếng Hung-ga-ri" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "Tiếng Ý" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "Tiếng Nhật" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "Tiếng Hàn" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "Tiếng Hà Lan" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "Tiếng Na Uy" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "Tiếng Ba Lan" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "Tiếng Bồ Đào Nha" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "Tiếng Bồ Đào Nha (Brazil)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "Tiếng Nga" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "Tiếng Slô-ven-ni-a" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "Tiếng Thụy Điển" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "Tiếng Thái" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "Tiếng Thổ Nhĩ Kỳ" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "Tiếng Việt" -#: InvenTree/settings.py:740 -msgid "Chinese" -msgstr "Tiếng Trung" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "Tiếng Trung (Giản thể)" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "Tiếng Trung (Phồn thể)" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" -msgstr "" +msgstr "Nhân công chạy ngầm kiểm tra thất bại" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" -msgstr "" +msgstr "Chưa cấu hình dịch vụ gửi email" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" -msgstr "" +msgstr "Kiểm tra tình trạng hệ thống InvenTree thất bại" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" -msgstr "" +msgstr "Đợi duyệt" #: InvenTree/status_codes.py:13 generic/states/tests.py:17 msgid "Placed" -msgstr "" +msgstr "Đã đặt" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" -msgstr "" +msgstr "Hoàn thành" #: InvenTree/status_codes.py:15 InvenTree/status_codes.py:43 #: InvenTree/status_codes.py:150 InvenTree/status_codes.py:173 msgid "Cancelled" -msgstr "" +msgstr "Đã hủy" #: InvenTree/status_codes.py:16 InvenTree/status_codes.py:44 #: InvenTree/status_codes.py:71 msgid "Lost" -msgstr "" +msgstr "Mất" #: InvenTree/status_codes.py:17 InvenTree/status_codes.py:45 #: InvenTree/status_codes.py:73 msgid "Returned" -msgstr "" +msgstr "Đã trả lại" #: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 msgid "In Progress" -msgstr "" +msgstr "Đang tiến hành" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" -msgstr "" +msgstr "Đã chuyển" #: InvenTree/status_codes.py:66 msgid "OK" -msgstr "" +msgstr "Đồng ý" #: InvenTree/status_codes.py:67 msgid "Attention needed" -msgstr "" +msgstr "Chú ý cần thiết" #: InvenTree/status_codes.py:68 msgid "Damaged" -msgstr "" +msgstr "Bị hư hại" #: InvenTree/status_codes.py:69 msgid "Destroyed" -msgstr "" +msgstr "Đã hủy" #: InvenTree/status_codes.py:70 msgid "Rejected" -msgstr "" +msgstr "Đã từ chối" #: InvenTree/status_codes.py:72 msgid "Quarantined" -msgstr "" +msgstr "Đã cách ly" #: InvenTree/status_codes.py:91 msgid "Legacy stock tracking entry" -msgstr "" +msgstr "Mục theo dõi kho cổ điển" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" -msgstr "" +msgstr "Kho hàng đã được khởi tạo" #: InvenTree/status_codes.py:96 msgid "Edited stock item" -msgstr "" +msgstr "Sửa kho hàng" #: InvenTree/status_codes.py:97 msgid "Assigned serial number" -msgstr "" +msgstr "Số sê ri đã được gán" #: InvenTree/status_codes.py:100 msgid "Stock counted" -msgstr "" +msgstr "Kho đã đếm" #: InvenTree/status_codes.py:101 msgid "Stock manually added" -msgstr "" +msgstr "Kho được thêm thủ công" #: InvenTree/status_codes.py:102 msgid "Stock manually removed" -msgstr "" +msgstr "Kho được xóa thủ công" #: InvenTree/status_codes.py:105 msgid "Location changed" -msgstr "" +msgstr "Vị trí đã thay đổi" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "" +msgstr "Kho hàng đã được cập nhật" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" -msgstr "" +msgstr "Đã cài đặt vào bộ phận lắp ráp" #: InvenTree/status_codes.py:110 msgid "Removed from assembly" -msgstr "" +msgstr "Di rời khỏi bộ phận lắp ráp" #: InvenTree/status_codes.py:112 msgid "Installed component item" -msgstr "" +msgstr "Mục thành phần đã cài đặt" #: InvenTree/status_codes.py:113 msgid "Removed component item" -msgstr "" +msgstr "Mục thành phần đã di rời" #: InvenTree/status_codes.py:116 msgid "Split from parent item" -msgstr "" +msgstr "Tách từ mục cha" #: InvenTree/status_codes.py:117 msgid "Split child item" -msgstr "" +msgstr "Tách mục con" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" -msgstr "" +msgstr "Kho hàng đã được gộp" #: InvenTree/status_codes.py:123 msgid "Converted to variant" -msgstr "" +msgstr "Đã chuyển đổi sang biến thể" #: InvenTree/status_codes.py:126 msgid "Build order output created" -msgstr "" +msgstr "Đầu ra đơn đặt bản dựng đã được tạo" #: InvenTree/status_codes.py:127 msgid "Build order output completed" -msgstr "" +msgstr "Đầu ra đơn đặt bản dựng đã hoàn thành" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "" +msgstr "Đầu ra đơn đặt bản dựng bị từ chối" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" -msgstr "" +msgstr "Tiêu hao bởi đơn đặt bản dựng" #: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" -msgstr "" +msgstr "Vận chyển dựa vào đơn đặt bản dựng" #: InvenTree/status_codes.py:135 msgid "Received against Purchase Order" -msgstr "" +msgstr "Đã nhận dựa vào đơn đặt hàng mua" #: InvenTree/status_codes.py:138 msgid "Returned against Return Order" -msgstr "" +msgstr "Trả hành dựa vào đơn hàng trả lại" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" -msgstr "" +msgstr "Gửi đến khách hàng" #: InvenTree/status_codes.py:142 msgid "Returned from customer" -msgstr "" +msgstr "Bị trả lại từ khách hàng" #: InvenTree/status_codes.py:149 msgid "Production" @@ -811,121 +848,167 @@ msgstr "Hoàn tiền" #: InvenTree/status_codes.py:203 msgid "Reject" -msgstr "" +msgstr "Từ chối" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" -msgstr "" +msgstr "Đơn vị vật lý không hợp lệ" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" -msgstr "" +msgstr "Mã tiền tệ không hợp lệ" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" -msgstr "" +msgstr "Giá trị hàng hóa dư không thể là số âm" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" -msgstr "" +msgstr "Hàng hóa dư thừa không thể vượt quá 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" -msgstr "" +msgstr "Giá trị không hợp lệ cho hàng hóa dư thừa" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "Sửa thông tin người dùng" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "Đặt Mật khẩu" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "Mật khẩu phải trùng khớp" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" -msgstr "" +msgstr "Nhập sai mật khẩu" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "Thông tin hệ thống" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "Giới thiệu" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" -msgstr "" +msgstr "Bạn dựng phải được hủy bỏ trước khi có thể xóa được" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "Vật tư tiêu hao" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "Tuỳ chọn" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "Đã theo dõi" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "Đã cấp phát" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "Có sẵn" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "Tạo đơn hàng" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "Tạo đơn hàng" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "Sản phẩm đơn đặt bản dựng không thể thay đổi được" + +#: build/models.py:122 msgid "Invalid choice for parent build" -msgstr "" +msgstr "Lựa chọn sai cho bản dựng cha" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" -msgstr "" +msgstr "Tham chiếu đơn đặt bản dựng" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "Tham chiếu" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" -msgstr "" +msgstr "Mô tả ngắn về phiên bạn (Tùy chọn)" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" -msgstr "" +msgstr "Phiên bản cha" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" -msgstr "" +msgstr "Đơn đặt bản dựng với bản dựng này đã được phân bổ" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,2529 +1017,2548 @@ msgstr "" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "Nguyên liệu" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" -msgstr "" +msgstr "Chọn sản phẩm để xây dựng" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" -msgstr "" +msgstr "Tham chiếu đơn đặt bản dựng" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" -msgstr "" +msgstr "Đơn đặt bán hàng với bản dựng này đã được phân bổ" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" -msgstr "" +msgstr "Địa điểm nguồn" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" -msgstr "" - -#: build/models.py:212 -msgid "Destination Location" -msgstr "" - -#: build/models.py:216 -msgid "Select location where the completed items will be stored" -msgstr "" - -#: build/models.py:220 -msgid "Build Quantity" -msgstr "" +msgstr "Chọn địa điểm để lấy trong kho cho bản dựng này (để trống để lấy từ bất kỳ vị trí kho nào)" #: build/models.py:223 -msgid "Number of stock items to build" -msgstr "" +msgid "Destination Location" +msgstr "Địa điểm đích" #: build/models.py:227 +msgid "Select location where the completed items will be stored" +msgstr "Chọn địa điểm nơi hàng hóa hoàn thiện sẽ được lưu kho" + +#: build/models.py:231 +msgid "Build Quantity" +msgstr "Xây dựng số lượng" + +#: build/models.py:234 +msgid "Number of stock items to build" +msgstr "Số kho hàng để dựng" + +#: build/models.py:238 msgid "Completed items" -msgstr "" +msgstr "Những mục hoàn thành" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" -msgstr "" +msgstr "Số sản phẩm trong kho đã được hoàn thiện" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" -msgstr "" +msgstr "Trnạg thái bản dựng" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" -msgstr "" +msgstr "Mã trạng thái bản dựng" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" -msgstr "" +msgstr "Mã lô hàng" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" -msgstr "" +msgstr "Mã lô cho đầu ra bản dựng này" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "Ngày tạo" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" -msgstr "" +msgstr "Ngày hoàn thành mục tiêu" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." -msgstr "" +msgstr "Ngày mục tiêu để hoàn thành bản dựng. Bản dựng sẽ bị quá hạn sau ngày này." -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "Ngày hoàn thành" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "hoàn thành bởi" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" -msgstr "" +msgstr "Cấp bởi" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" -msgstr "" +msgstr "Người dùng người đã được phân công cho đơn đặt bản dựng này" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" -msgstr "" +msgstr "Chịu trách nhiệm" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" -msgstr "" +msgstr "Người dùng hoặc nhóm có trách nhiệm với đơn đặt bản dựng này" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" -msgstr "" +msgstr "Liên kết bên ngoài" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" -msgstr "" +msgstr "Độ ưu tiên" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" -msgstr "" +msgstr "Độ quan trọng của đơn đặt bản dựng" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "Mã dự án" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "Mã dự án cho đơn đặt bản dựng này" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" -msgstr "" +msgstr "Đơn đặt bản dựng {build} đã được hoàn thành" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" -msgstr "" +msgstr "Một đơn đặt bản dựng đã được hoàn thành" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" -msgstr "" +msgstr "Không có đầu ra bản dựng đã được chỉ ra" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" -msgstr "" +msgstr "Đầu ra bản dựng đã được hoàn thiện" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" -msgstr "" +msgstr "Đầu ra bản dựng không phù hợp với đơn đặt bản dựng" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" -msgstr "" +msgstr "Số lượng phải lớn hơn 0" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" -msgstr "" +msgstr "Số lượng không thể lớn hơn số lượng đầu ra" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "" +#: build/models.py:1266 +msgid "Build object" +msgstr "Dựng đối tượng" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "Số lượng" -#: build/models.py:1469 +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "Yêu cầu số lượng để dựng đơn đặt" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "Xây dựng mục phải xác định đầu ra, bởi vì sản phẩm chủ được đánh dấu là có thể theo dõi" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "Số lượng được phân bổ ({q}) không thể vượt quá số lượng có trong kho ({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "Kho hàng đã bị phân bổ quá đà" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "Số lượng phân bổ phải lớn hơn 0" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "Số lượng phải là 1 cho kho sê ri" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "Hàng trong kho đã chọn không phù hợp với đường BOM" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "Kho hàng" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "Kho hàng gốc" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" -msgstr "" +msgstr "Số lượng kho hàng cần chỉ định để xây dựng" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" -msgstr "" +msgstr "Cài đặt vào" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" -msgstr "" +msgstr "Kho hàng đích" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" -msgstr "" +msgstr "Đầu ra bản dựng" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" -msgstr "" +msgstr "Đầu ra xây dựng không hợp với bản dựng cha" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" -msgstr "" +msgstr "Đầu ra sản phẩm không phù hợp với bản dựng đơn đặt hàng" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" -msgstr "" +msgstr "Đầu ra bản dựng này đã được hoàn thành" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" -msgstr "" +msgstr "Đầu ra bản dựng này chưa được phân bổ đầy đủ" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" -msgstr "" +msgstr "Điền số lượng cho đầu ra bản dựng" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" -msgstr "" +msgstr "Số lượng nguyên dương cần phải điền cho sản phẩm có thể theo dõi" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" -msgstr "" +msgstr "Cần nhập số lượng nguyên dương, bởi vì hóa đơn vật liệu chứa sản phẩm có thể theo dõi" -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" -msgstr "" +msgstr "Số sê-ri" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" -msgstr "" +msgstr "Nhập vào số sêri cho đầu ra bản dựng" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" -msgstr "" +msgstr "Số sêri tự cấp" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" -msgstr "" +msgstr "Tự động cấp số seri phù hợp cho hàng hóa được yêu cầu" -#: build/serializers.py:326 stock/api.py:670 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" -msgstr "" +msgstr "Số sêri sau đây đã tồn tại hoặc không hợp lệ" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" -msgstr "" +msgstr "Danh sách đầu ra bản dựng phải được cung cấp" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" -msgstr "" - -#: build/serializers.py:416 -msgid "Stock location for scrapped outputs" -msgstr "" +msgstr "Địa điểm" #: build/serializers.py:422 -msgid "Discard Allocations" -msgstr "" - -#: build/serializers.py:423 -msgid "Discard any stock allocations for scrapped outputs" -msgstr "" +msgid "Stock location for scrapped outputs" +msgstr "Vị trí kho cho đầu ra phế phẩm" #: build/serializers.py:428 +msgid "Discard Allocations" +msgstr "Hủy phân bổ" + +#: build/serializers.py:429 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "Hủy bất kỳ phân kho nào cho đầu ra phế phẩm" + +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" -msgstr "" +msgstr "Lý do loại bỏ đầu ra bản dựng" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" -msgstr "" +msgstr "Vị trí cho đầu ra bản dựng hoàn thiện" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "Trạng thái" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" -msgstr "" +msgstr "Chấp nhận phân kho dang dở" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" -msgstr "" +msgstr "Hoàn hiện đầu ra nếu kho chưa được phân bổ hết chỗ trống" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" -msgstr "" +msgstr "Xóa phân kho" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" -msgstr "" +msgstr "Trừ số lượng bất kỳ kho nào được phân bổ đến bản dựng này" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" -msgstr "" +msgstr "Xóa toàn bộ đầu ra chưa hoàn thành" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" -msgstr "" +msgstr "Xóa bất kỳ đầu ra bản dựng nào chưa được hoàn thành" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" -msgstr "" +msgstr "Chưa được cấp phép" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" -msgstr "" +msgstr "Chấp nhận trạng thái tiêu hao bởi đơn đặt bản dựng này" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" -msgstr "" +msgstr "Phân bổ trước khi hoàn thiện đơn đặt bản dựng này" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" -msgstr "" +msgstr "Kho quá tải" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" -msgstr "" +msgstr "Bạn muốn thế nào để xử lý hàng trong kho được gán thừa cho đơn đặt bản dựng" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" -msgstr "" +msgstr "Một vài hàng hóa đã được phân bổ quá thừa" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" -msgstr "" +msgstr "Chấp nhận chưa phân bổ được" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" -msgstr "" +msgstr "Chấp nhận hàng hóa không được phân bổ đầy đủ vào đơn đặt bản dựng này" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" -msgstr "" +msgstr "Kho được yêu cầu chưa được phân bổ hết không gian" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" -msgstr "" +msgstr "Chấp nhận không hoàn thành" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" -msgstr "" +msgstr "Chấp nhận số yêu cầu của đầu ra bản dựng chưa được hoàn thành" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" -msgstr "" +msgstr "Số lượng bản dựng được yêu cầu chưa được hoàn thành" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" -msgstr "" +msgstr "Đơn đặt bản dựng có đầu ra chưa hoàn thiện" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "Lộ giới" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" -msgstr "" +msgstr "Đầu ra bản dựng" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" -msgstr "" +msgstr "Đầu ra bản dựng phải chỉ đến bản dựng tương ứng" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "Mục chi tiết bản dựng" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" -msgstr "" +msgstr "bom_item.part phải trỏ đến phần tương tự của đơn đặt bản dựng" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" -msgstr "" +msgstr "Hàng hóa phải trong kho" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" -msgstr "" +msgstr "Số lượng có sẵn ({q}) đã bị vượt quá" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" -msgstr "" +msgstr "Đầu ra bản dựng phải được xác định cho việc phân sản phẩm được theo dõi" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" -msgstr "" +msgstr "Đầu ra bản dựng không thể chỉ định cho việc phân sản phẩm chưa được theo dõi" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" -msgstr "" +msgstr "Hàng hóa phân bổ phải được cung cấp" #: build/serializers.py:943 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" -msgstr "" +msgstr "Vị trí kho nơi sản phẩm được lấy ra (để trống để lấy từ bất kỳ vị trí nào)" #: build/serializers.py:951 msgid "Exclude Location" -msgstr "" +msgstr "Ngoại trừ vị trí" #: build/serializers.py:952 msgid "Exclude stock items from this selected location" -msgstr "" +msgstr "Không bao gồm hàng trong kho từ vị trí đã chọn này" #: build/serializers.py:957 msgid "Interchangeable Stock" -msgstr "" +msgstr "Kho trao đổi" #: build/serializers.py:958 msgid "Stock items in multiple locations can be used interchangeably" -msgstr "" +msgstr "Hàng trong kho thuộc nhiều vị trí có thể dùng thay thế được cho nhau" #: build/serializers.py:963 msgid "Substitute Stock" -msgstr "" +msgstr "Kho thay thế" #: build/serializers.py:964 msgid "Allow allocation of substitute parts" -msgstr "" +msgstr "Cho phép phân kho sản phẩm thay thế" #: build/serializers.py:969 msgid "Optional Items" -msgstr "" +msgstr "Mục tùy chọn" #: build/serializers.py:970 msgid "Allocate optional BOM items to build order" -msgstr "" +msgstr "Phân bổ các mục hóa đơn vật liệu tùy chọn đến đơn đặt bản dựng" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" -msgstr "" +msgstr "Kho được yêu cầu cho đặt hàng bản dựng" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" -msgstr "" +msgstr "Đơn đặt bản dựng quá hạn" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" -msgstr "" +msgstr "Đặt hàng bản dựng {bo} đang quá hạn" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" -msgstr "" +msgstr "Ảnh thu nhỏ sản phẩm" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" -msgstr "" +msgstr "Chức năng mã vạch" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" -msgstr "" +msgstr "Hiển thị mã QR" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" -msgstr "" +msgstr "Gỡ mã vạch" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" -msgstr "" +msgstr "Liên kết mã vạch" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" -msgstr "" +msgstr "Chức năng in ấn" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" -msgstr "" +msgstr "Báo cáo in đơn đặt bản dựng" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" -msgstr "" +msgstr "Chức năng bản dựng" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" -msgstr "" +msgstr "Sửa bản dựng" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" -msgstr "" +msgstr "Hủy bản dựng" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" -msgstr "" +msgstr "Nhân bản bản dựng" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" -msgstr "" +msgstr "Xóa bản dựng" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" -msgstr "" +msgstr "Bản dựng hoàn thiện" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" -msgstr "" +msgstr "Mô tả bản dựng" #: build/templates/build/build_base.html:117 msgid "No build outputs have been created for this build order" -msgstr "" +msgstr "Không có đầu ra bản dựng đã được tạo cho đơn đặt bản dựng này" #: build/templates/build/build_base.html:124 msgid "Build Order is ready to mark as completed" -msgstr "" +msgstr "Đơn đặt bản dựng đã được đánh dấu hoàn thành" #: build/templates/build/build_base.html:129 msgid "Build Order cannot be completed as outstanding outputs remain" -msgstr "" +msgstr "Đơn đặt bản dựng không thể hoàn thiện bởi vì những đầu ra nổi bật còn tồn tại" #: build/templates/build/build_base.html:134 msgid "Required build quantity has not yet been completed" -msgstr "" +msgstr "Số lượng bản dựng được yêu cầu chưa được hoàn thành" #: build/templates/build/build_base.html:139 msgid "Stock has not been fully allocated to this Build Order" -msgstr "" +msgstr "Kho không được phân bổ đầy đủ với yêu cầu bản dựng này" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" -msgstr "" +msgstr "Ngày mục tiêu" #: build/templates/build/build_base.html:165 #, python-format msgid "This build was due on %(target)s" -msgstr "" +msgstr "Bản dựng đã đến hạn vào %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" -msgstr "" +msgstr "Quá hạn" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "Đã hoàn thành" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "Đầu ra hoàn thiện" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" -msgstr "" +msgstr "Đơn đặt hàng" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" -msgstr "" +msgstr "Phát hành bởi" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" -msgstr "" +msgstr "Độ ưu tiên" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "" +msgstr "Xóa đơn đặt bản dựng" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "" +msgstr "Mã QR đơn đặt bản dựng" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "" +msgstr "Liên kết mã vạch đến Đơn đặt bản dựng này" #: build/templates/build/detail.html:15 msgid "Build Details" -msgstr "" +msgstr "Chi tiết bản dựng" #: build/templates/build/detail.html:38 msgid "Stock Source" -msgstr "" +msgstr "Nguồn kho" #: build/templates/build/detail.html:43 msgid "Stock can be taken from any available location." -msgstr "" +msgstr "Kho có thể được lấy từ bất kỳ địa điểm nào." -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" -msgstr "" +msgstr "Đích đến" #: build/templates/build/detail.html:56 msgid "Destination location not specified" -msgstr "" +msgstr "Địa điểm đích chưa được xác định" #: build/templates/build/detail.html:73 msgid "Allocated Parts" -msgstr "" +msgstr "Sản phẩm đã phân bổ" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" -msgstr "" +msgstr "Hàng loạt" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" -msgstr "" +msgstr "Đã tạo" #: build/templates/build/detail.html:144 msgid "No target date set" -msgstr "" +msgstr "Chưa đặt ngày mục tiêu" + +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "Đã hoàn thành" #: build/templates/build/detail.html:153 msgid "Build not complete" -msgstr "" +msgstr "Xây dựng chưa hoàn thiện" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" -msgstr "" +msgstr "Đơn đặt bản dựng con" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" -msgstr "" +msgstr "Phân bổ kho đến bản dựng" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" -msgstr "" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "Phân kho" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "Phân kho" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" -msgstr "" +msgstr "Tự động chỉ định kho đến bản dựng" + +#: build/templates/build/detail.html:185 +msgid "Auto Allocate" +msgstr "Tự động phân bổ" #: build/templates/build/detail.html:187 -msgid "Auto Allocate" -msgstr "" - -#: build/templates/build/detail.html:189 msgid "Manually allocate stock to build" -msgstr "" +msgstr "Chỉ định kho thủ công đến bản dựng" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" -msgstr "" +msgstr "Chỉ định kho" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" -msgstr "" +msgstr "Đơn đặt yêu cầu sản phẩm" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" -msgstr "" - -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "" +msgstr "Đặt hàng sản phẩm" #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" -msgstr "" +msgstr "Đầu ra bản dựng chưa hoàn thành" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" -msgstr "" +msgstr "Tạo đầu ra bản dựng mới" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" -msgstr "" +msgstr "Đầu ra bản dựng mới" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" -msgstr "" +msgstr "Kho tiêu thụ" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" -msgstr "" +msgstr "Đầu ra bản dựng hoàn thiện" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" -msgstr "" +msgstr "Tập tin đính kèm" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" -msgstr "" +msgstr "Ghi chép bản dựng" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" -msgstr "" +msgstr "Phân bổ hoàn thành" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" -msgstr "" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "Tất cả đường đã được chỉ định đầy đủ" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" -msgstr "" +msgstr "Tạo đơn đặt bản dựng" #: build/templates/build/sidebar.html:5 msgid "Build Order Details" -msgstr "" +msgstr "Chi tiết đơn đặt bản dựng" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" -msgstr "" - -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "" +msgstr "Đầu ra chưa hoàn thiện" #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" -msgstr "" +msgstr "Định dạng tệp không được hỗ trợ {fmt}" #: common/files.py:65 msgid "Error reading file (invalid encoding)" -msgstr "" +msgstr "Lỗi đọc file (mã hóa không hợp lệ)" #: common/files.py:70 msgid "Error reading file (invalid format)" -msgstr "" +msgstr "Lỗi đọc file (định dạng không hợp lệ)" #: common/files.py:72 msgid "Error reading file (incorrect dimension)" -msgstr "" +msgstr "Lỗi đọc file (kích thước không hợp lệ)" #: common/files.py:74 msgid "Error reading file (data could be corrupted)" -msgstr "" +msgstr "Lỗi đọc file (dữ liệu có thể bị hư hại)" #: common/forms.py:13 msgid "File" -msgstr "" +msgstr "Tệp" #: common/forms.py:14 msgid "Select file to upload" -msgstr "" +msgstr "Chọn tệp để tải lên" #: common/forms.py:28 msgid "{name.title()} File" -msgstr "" +msgstr "Tập tin {name.title()}" #: common/forms.py:29 #, python-brace-format msgid "Select {name} file to upload" -msgstr "" +msgstr "Chọn tập tin {name} để tải lên" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" -msgstr "" +msgstr "Đã cập nhật" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" -msgstr "" +msgstr "Nhãn thời gian của lần cập cuối cùng" -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" -msgstr "" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" -msgstr "" +msgstr "Mã dự án duy nhất" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" -msgstr "" +msgstr "Mô tả dự án" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" -msgstr "" +msgstr "Khóa thiết lập (phải duy nhất - phân biệt hoa thường)" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "Giá trị cài đặt" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" -msgstr "" +msgstr "Giá trị đã chọn không hợp lệ" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" -msgstr "" +msgstr "Giá trị phải là kiểu boolean" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" -msgstr "" +msgstr "Giá trị phải là một số nguyên dương" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" -msgstr "" - -#: common/models.py:844 -msgid "No group" -msgstr "" - -#: common/models.py:869 -msgid "An empty domain is not allowed." -msgstr "" - -#: common/models.py:871 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "" - -#: common/models.py:928 -msgid "Restart required" -msgstr "" - -#: common/models.py:929 -msgid "A setting has been changed which requires a server restart" -msgstr "" - -#: common/models.py:936 -msgid "Server Instance Name" -msgstr "" - -#: common/models.py:938 -msgid "String descriptor for the server instance" -msgstr "" - -#: common/models.py:943 -msgid "Use instance name" -msgstr "" - -#: common/models.py:944 -msgid "Use the instance name in the title-bar" -msgstr "" - -#: common/models.py:950 -msgid "Restrict showing `about`" -msgstr "" - -#: common/models.py:951 -msgid "Show the `about` modal only to superusers" -msgstr "" - -#: common/models.py:957 company/models.py:101 company/models.py:102 -msgid "Company name" -msgstr "" - -#: common/models.py:958 -msgid "Internal company name" -msgstr "" +msgstr "Chuỗi khóa phải duy nhất" #: common/models.py:963 -msgid "Base URL" -msgstr "" +msgid "No group" +msgstr "Không có nhóm" -#: common/models.py:964 -msgid "Base URL for server instance" -msgstr "" +#: common/models.py:988 +msgid "An empty domain is not allowed." +msgstr "Tên miền rỗng là không được phép." -#: common/models.py:971 -msgid "Default Currency" -msgstr "" +#: common/models.py:990 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "Tên miền không hợp lệ: {domain}" -#: common/models.py:972 -msgid "Select base currency for pricing calculations" -msgstr "" +#: common/models.py:1002 +msgid "No plugin" +msgstr "Không phần mở rộng" -#: common/models.py:979 -msgid "Download from URL" -msgstr "" +#: common/models.py:1068 +msgid "Restart required" +msgstr "Cần khởi động lại" -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "" +#: common/models.py:1069 +msgid "A setting has been changed which requires a server restart" +msgstr "Một thiết lập đã bị thay đổi yêu cầu khởi động lại máy chủ" -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "Chuyển dữ liệu chờ xử lý" -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "Số đợt nâng cấp cơ sở dữ liệu chờ xử lý" -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" +#: common/models.py:1083 +msgid "Server Instance Name" +msgstr "Tên thực thể máy chủ" -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 -msgid "days" -msgstr "" - -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "" - -#: common/models.py:1039 -msgid "Auto Backup Interval" -msgstr "" - -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "" - -#: common/models.py:1050 -msgid "Task Deletion Interval" -msgstr "" - -#: common/models.py:1051 -msgid "Background task results will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1061 -msgid "Error Log Deletion Interval" -msgstr "" - -#: common/models.py:1062 -msgid "Error logs will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1072 -msgid "Notification Deletion Interval" -msgstr "" - -#: common/models.py:1073 -msgid "User notifications will be deleted after specified number of days" -msgstr "" - -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 -msgid "Barcode Support" -msgstr "" - -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "" +#: common/models.py:1085 +msgid "String descriptor for the server instance" +msgstr "Mô tả chuỗi cho thực thể máy chủ" #: common/models.py:1090 -msgid "Barcode Input Delay" -msgstr "" +msgid "Use instance name" +msgstr "Sử dụng tên thực thể" #: common/models.py:1091 -msgid "Barcode input processing delay time" -msgstr "" +msgid "Use the instance name in the title-bar" +msgstr "Sử dụng tên thực thể trên thanh tiêu đề" -#: common/models.py:1101 -msgid "Barcode Webcam Support" -msgstr "" +#: common/models.py:1097 +msgid "Restrict showing `about`" +msgstr "Cấm hiển thị `giới thiệu`" -#: common/models.py:1102 -msgid "Allow barcode scanning via webcam in browser" -msgstr "" +#: common/models.py:1098 +msgid "Show the `about` modal only to superusers" +msgstr "Chỉ hiển thị cửa sổ `giới thiệu` với siêu người dùng" -#: common/models.py:1108 -msgid "Part Revisions" -msgstr "" +#: common/models.py:1104 company/models.py:101 company/models.py:102 +msgid "Company name" +msgstr "Tên công ty" -#: common/models.py:1109 -msgid "Enable revision field for Part" -msgstr "" +#: common/models.py:1105 +msgid "Internal company name" +msgstr "Tên công ty nội bộ" -#: common/models.py:1115 -msgid "IPN Regex" -msgstr "" +#: common/models.py:1110 +msgid "Base URL" +msgstr "URL cơ sở" -#: common/models.py:1116 -msgid "Regular expression pattern for matching Part IPN" -msgstr "" +#: common/models.py:1111 +msgid "Base URL for server instance" +msgstr "URL cơ sở cho thực thể máy chủ" -#: common/models.py:1120 -msgid "Allow Duplicate IPN" -msgstr "" +#: common/models.py:1118 +msgid "Default Currency" +msgstr "Tiền tệ mặc định" -#: common/models.py:1121 -msgid "Allow multiple parts to share the same IPN" -msgstr "" +#: common/models.py:1119 +msgid "Select base currency for pricing calculations" +msgstr "Chọn tiền tệ chính khi tính giá" + +#: common/models.py:1126 +msgid "Currency Update Interval" +msgstr "Tần suất cập nhật tiền tệ" #: common/models.py:1127 -msgid "Allow Editing IPN" -msgstr "" +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "Mức độ thường xuyên để cập nhật tỉ giá hối đoái (điền 0 để tắt)" -#: common/models.py:1128 -msgid "Allow changing the IPN value while editing a part" -msgstr "" +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" +msgstr "ngày" -#: common/models.py:1134 -msgid "Copy Part BOM Data" -msgstr "" +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "Phần mở rộng cập nhật tiền tệ" -#: common/models.py:1135 -msgid "Copy BOM data by default when duplicating a part" -msgstr "" +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "Phần mở rộng cập nhật tiền tệ được sử dụng" -#: common/models.py:1141 -msgid "Copy Part Parameter Data" -msgstr "" +#: common/models.py:1144 +msgid "Download from URL" +msgstr "Tải về từ URL" -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" -msgstr "" +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "Cho phép tải ảnh và tệp tin từ xa theo URL bên ngoài" -#: common/models.py:1148 -msgid "Copy Part Test Data" -msgstr "" +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "Giới hạn kích thước tải xuống" -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" -msgstr "" +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "Kích thước tải xuống tối đa với hình ảnh từ xa" #: common/models.py:1163 -msgid "Parts are templates by default" -msgstr "" +msgid "User-agent used to download from URL" +msgstr "User-agent được dùng để tải xuống theo URL" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" -msgstr "" +#: common/models.py:1164 +msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" +msgstr "Cho phép ghi đè user-agent được dùng để tải về hình ảnh và tệp tin từ xa theo URL bên ngoài (để trống nghĩa là dùng mặc định)" + +#: common/models.py:1169 +msgid "Require confirm" +msgstr "Yêu cầu xác nhận" #: common/models.py:1170 -msgid "Parts can be assembled from other components by default" -msgstr "" +msgid "Require explicit user confirmation for certain action." +msgstr "Yêu cầu người dùng xác nhận rõ ràng với một số chức năng nhất định." -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" -msgstr "" +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "Cấp độ cây" #: common/models.py:1177 -msgid "Parts can be used as sub-components by default" -msgstr "" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "Độ sâu cây mặc định cho màn hình cây. Cấp độ sâu hơn sẽ sử dụng kỹ thuật tải chậm nếu cần thiết." -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" -msgstr "" +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "Thời gian kiểm tra bản cập nhật" -#: common/models.py:1184 -msgid "Parts are purchaseable by default" -msgstr "" +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "Mức độ thường xuyên để kiểm tra bản cập nhật (điền 0 để tắt)" -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" -msgstr "" +#: common/models.py:1197 +msgid "Automatic Backup" +msgstr "Sao lưu tự động" #: common/models.py:1198 -msgid "Parts are trackable by default" -msgstr "" +msgid "Enable automatic backup of database and media files" +msgstr "Bật tính năng sao lưu tự động cơ sở dữ liệu và tệp tin đa phương tiện" -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" -msgstr "" +#: common/models.py:1204 +msgid "Auto Backup Interval" +msgstr "Khoảng thời gian sao lưu tự động" #: common/models.py:1205 -msgid "Parts are virtual by default" -msgstr "" +msgid "Specify number of days between automated backup events" +msgstr "Xác định số ngày giữa các kỳ sao lưu tự động" -#: common/models.py:1211 -msgid "Show Import in Views" -msgstr "" +#: common/models.py:1215 +msgid "Task Deletion Interval" +msgstr "Khoảng thời gian xóa tác vụ" -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" -msgstr "" +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" +msgstr "Kết quả tác vụ chạy ngầm sẽ bị xóa sau số ngày được chỉ định" #: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" -msgstr "" +msgid "Error Log Deletion Interval" +msgstr "Khoảng thời gian xóa nhật ký lỗi" -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" -msgstr "" +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" +msgstr "Nhật ký lỗi sẽ bị xóa sau số ngày được chỉ định" -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" -msgstr "" +#: common/models.py:1237 +msgid "Notification Deletion Interval" +msgstr "Khoảng thời gian xóa thông báo" -#: common/models.py:1239 -msgid "Part Name Display Format" -msgstr "" +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" +msgstr "Thông báo sẽ bị xóa sau số ngày được chỉ định" -#: common/models.py:1240 -msgid "Format to display the part name" -msgstr "" +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "Hỗ trợ mã vạch" -#: common/models.py:1247 -msgid "Part Category Default Icon" -msgstr "" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "Bật hỗ trợ máy quét mã vạch trong giao diện web" -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" -msgstr "" +#: common/models.py:1255 +msgid "Barcode Input Delay" +msgstr "Độ trễ quét mã vạch" -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" -msgstr "" +#: common/models.py:1256 +msgid "Barcode input processing delay time" +msgstr "Thời gian trễ xử lý đầu đọc mã vạch" -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" -msgstr "" +#: common/models.py:1266 +msgid "Barcode Webcam Support" +msgstr "Hỗ trợ mã vạch qua webcam" -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" -msgstr "" +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" +msgstr "Cho phép quét mã vạch qua webcam bên trong trình duyệt" -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" -msgstr "" +#: common/models.py:1273 +msgid "Part Revisions" +msgstr "Phiên bản Sản phẩm" -#: common/models.py:1275 -msgid "Use Supplier Pricing" -msgstr "" +#: common/models.py:1274 +msgid "Enable revision field for Part" +msgstr "Bật trường phiên bản cho sản phẩm" -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" -msgstr "" +#: common/models.py:1280 +msgid "IPN Regex" +msgstr "Mẫu IPN" -#: common/models.py:1282 -msgid "Purchase History Override" -msgstr "" +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" +msgstr "Mẫu dùng nhanh phổ biến dành cho tìm IPN sản phẩm" -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" -msgstr "" +#: common/models.py:1285 +msgid "Allow Duplicate IPN" +msgstr "Cho phép trùng IPN" -#: common/models.py:1289 -msgid "Use Stock Item Pricing" -msgstr "" +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" +msgstr "Cho phép nhiều sản phẩm dùng IPN giống nhau" -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" -msgstr "" +#: common/models.py:1292 +msgid "Allow Editing IPN" +msgstr "Cho phép sửa IPN" -#: common/models.py:1296 -msgid "Stock Item Pricing Age" -msgstr "" +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" +msgstr "Cho phép đổi giá trị IPN khi sửa một sản phẩm" -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" -msgstr "" +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "Sao chép dữ liệu BOM của sản phẩm" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "Sao chép dữ liệu BOM mặc định khi nhân bản 1 sản phẩm" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" +msgstr "Sao chép dữ liệu tham số sản phẩm" #: common/models.py:1307 -msgid "Use Variant Pricing" -msgstr "" +msgid "Copy parameter data by default when duplicating a part" +msgstr "Sao chép dữ liệu tham số mặc định khi nhân bản 1 sản phẩm" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" -msgstr "" +#: common/models.py:1313 +msgid "Copy Part Test Data" +msgstr "Chép thông tin kiểm thử sản phẩm" #: common/models.py:1314 -msgid "Active Variants Only" -msgstr "" +msgid "Copy test data by default when duplicating a part" +msgstr "Sao chép dữ liệu kiểm thử mặc định khi nhân bản 1 sản phẩm" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" -msgstr "" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" +msgstr "Sao chéo mẫu tham số danh mục" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" -msgstr "" +msgid "Copy category parameter templates when creating a part" +msgstr "Sao chéo mẫu tham số danh mục khi tạo 1 sản phẩm" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" -msgstr "" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" +msgstr "Mẫu" -#: common/models.py:1332 -msgid "Internal Prices" -msgstr "" +#: common/models.py:1328 +msgid "Parts are templates by default" +msgstr "Sản phẩm là mẫu bởi mặc định" -#: common/models.py:1333 -msgid "Enable internal prices for parts" -msgstr "" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" +msgstr "Lắp ráp" -#: common/models.py:1339 -msgid "Internal Price Override" -msgstr "" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" +msgstr "Sản phẩm có thể lắp giáp từ thành phần khác theo mặc định" -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" -msgstr "" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" +msgstr "Thành phần" -#: common/models.py:1346 -msgid "Enable label printing" -msgstr "" +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" +msgstr "Sản phẩm có thể được sử dụng mặc định như thành phần phụ" -#: common/models.py:1347 -msgid "Enable label printing from the web interface" -msgstr "" +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" +msgstr "Có thể mua" -#: common/models.py:1353 -msgid "Label Image DPI" -msgstr "" +#: common/models.py:1349 +msgid "Parts are purchaseable by default" +msgstr "Sản phẩm mặc định có thể mua được" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" -msgstr "" +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "Có thể bán" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "Sản phẩm mặc định có thể bán được" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" +msgstr "Có thể theo dõi" #: common/models.py:1363 -msgid "Enable Reports" -msgstr "" +msgid "Parts are trackable by default" +msgstr "Sản phẩm mặc định có thể theo dõi được" -#: common/models.py:1364 -msgid "Enable generation of reports" -msgstr "" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" +msgstr "Ảo" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" -msgstr "" +#: common/models.py:1370 +msgid "Parts are virtual by default" +msgstr "Sản phẩm mặc định là số hóa" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" -msgstr "" +#: common/models.py:1376 +msgid "Show Import in Views" +msgstr "Hiển thị Nhập liệu trong khung xem" #: common/models.py:1377 -msgid "Page Size" -msgstr "" +msgid "Display the import wizard in some part views" +msgstr "Hiển thị đồ thuật nhập dữ liệu trong một số khung nhìn sản phẩm" -#: common/models.py:1378 -msgid "Default page size for PDF reports" -msgstr "" +#: common/models.py:1383 +msgid "Show related parts" +msgstr "Hiển thị sản phẩm liên quan" -#: common/models.py:1388 -msgid "Enable Test Reports" -msgstr "" +#: common/models.py:1384 +msgid "Display related parts for a part" +msgstr "Hiện sản phẩm liên quan cho 1 sản phẩm" -#: common/models.py:1389 -msgid "Enable generation of test reports" -msgstr "" +#: common/models.py:1390 +msgid "Initial Stock Data" +msgstr "Số liệu tồn kho ban đầu" -#: common/models.py:1395 -msgid "Attach Test Reports" -msgstr "" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" +msgstr "Cho phép tạo tồn kho ban đầu khi thêm 1 sản phẩm mới" -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" -msgstr "" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" +msgstr "Dữ liệu nhà cung cấp ban đầu" -#: common/models.py:1402 -msgid "Globally Unique Serials" -msgstr "" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" +msgstr "Cho phép tạo dữ liệu nhà cung cấp ban đầu khi thêm 1 sản phẩm mới" -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" -msgstr "" +#: common/models.py:1404 +msgid "Part Name Display Format" +msgstr "Định dạng tên sản phẩm hiển thị" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" -msgstr "" +#: common/models.py:1405 +msgid "Format to display the part name" +msgstr "Định dạng để hiển thị tên sản phẩm" -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" -msgstr "" +#: common/models.py:1412 +msgid "Part Category Default Icon" +msgstr "Biểu tượng mặc định của danh mục sản phẩm" -#: common/models.py:1416 -msgid "Delete Depleted Stock" -msgstr "" +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" +msgstr "Biểu tượng mặc định của danh mục sản phẩm (để trống nghĩa là không có biểu tượng)" -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" -msgstr "" +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "Bắt buộc đơn vị tham số" -#: common/models.py:1423 -msgid "Batch Code Template" -msgstr "" +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "Nếu đơn vị được cung cấp, giá trị tham số phải phù hợp với các đơn vị xác định" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" -msgstr "" +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" +msgstr "Vị trí phần thập phân giá bán tối thiểu" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "" - -#: common/models.py:1430 -msgid "Enable stock expiry functionality" -msgstr "" +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" +msgstr "Số vị trí thập phân tối thiểu cần hiển thị khi tạo dữ liệu giá" #: common/models.py:1436 -msgid "Sell Expired Stock" -msgstr "" +msgid "Maximum Pricing Decimal Places" +msgstr "Vị trí phần thập phân giá bán tối đa" #: common/models.py:1437 -msgid "Allow sale of expired stock" -msgstr "" +msgid "Maximum number of decimal places to display when rendering pricing data" +msgstr "Số vị trí thập phân tối đa cần hiển thị khi tạo dữ liệu giá" -#: common/models.py:1443 -msgid "Stock Stale Time" -msgstr "" +#: common/models.py:1447 +msgid "Use Supplier Pricing" +msgstr "Sử dụng giá bán nhà cung cấp" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" -msgstr "" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" +msgstr "Bao gồm giá phá vỡ cả nhà cung cấp trong tính toán giá tổng thể" -#: common/models.py:1451 -msgid "Build Expired Stock" -msgstr "" +#: common/models.py:1454 +msgid "Purchase History Override" +msgstr "Ghi đè lịch sử mua hàng" -#: common/models.py:1452 -msgid "Allow building with expired stock" -msgstr "" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" +msgstr "Giá đơn hàng đặt mua trước đó ghi đè giá phá vỡ của nhà cung cấp" -#: common/models.py:1458 -msgid "Stock Ownership Control" -msgstr "" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" +msgstr "Sử dụng giá hàng hóa trong kho" -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" -msgstr "" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" +msgstr "Dùng giá bán từ dữ liệu kho nhập vào thủ công đối với bộ tính toán giá bán" -#: common/models.py:1465 -msgid "Stock Location Default Icon" -msgstr "" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" +msgstr "Tuổi giá kho hàng" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" -msgstr "" - -#: common/models.py:1471 -msgid "Build Order Reference Pattern" -msgstr "" - -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" -msgstr "" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" +msgstr "Loại trừ hàng hóa trong kho cũ hơn số ngày ngày từ bảng tính giá bán" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" -msgstr "" +msgid "Use Variant Pricing" +msgstr "Sử dụng giá biến thể" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" -msgstr "" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" +msgstr "Bao gồm giá biến thể trong bộ tính toán giá tổng thể" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" -msgstr "" +msgid "Active Variants Only" +msgstr "Chỉ các biến thể hoạt động" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" -msgstr "" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" +msgstr "Chỉ sử dụng sản phẩm biến thể hoạt động để tính toán giá bán biến thể" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" -msgstr "" +msgid "Pricing Rebuild Interval" +msgstr "Tần suất tạo lại giá" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" -msgstr "" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" +msgstr "Số ngày trước khi giá sản phẩm được tự động cập nhật" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" -msgstr "" +#: common/models.py:1504 +msgid "Internal Prices" +msgstr "Giá nội bộ" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" -msgstr "" +#: common/models.py:1505 +msgid "Enable internal prices for parts" +msgstr "Bật giá nội bộ cho sản phẩm" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" -msgstr "" +#: common/models.py:1511 +msgid "Internal Price Override" +msgstr "Ghi đè giá nội bộ" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" -msgstr "" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" +msgstr "Nếu khả dụng, giá nội bộ ghi đè tính toán khoảng giá" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" -msgstr "" +#: common/models.py:1518 +msgid "Enable label printing" +msgstr "Bật in tem nhãn" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" -msgstr "" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" +msgstr "Bật chức năng in tem nhãn từ giao diện web" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" -msgstr "" +#: common/models.py:1525 +msgid "Label Image DPI" +msgstr "DPI hỉnh ảnh tem nhãn" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" -msgstr "" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" +msgstr "Độ phân giải DPI khi tạo tệp hình ảnh để cung cấp cho plugin in ấn tem nhãn" #: common/models.py:1535 -msgid "Enable password forgot" -msgstr "" +msgid "Enable Reports" +msgstr "Bật báo cáo" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" -msgstr "" +msgid "Enable generation of reports" +msgstr "Cho phép tạo báo cáo" -#: common/models.py:1542 -msgid "Enable registration" -msgstr "" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" +msgstr "Chế độ gỡ lỗi" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" -msgstr "" +msgid "Generate reports in debug mode (HTML output)" +msgstr "Tạo báo cáo trong chế độ gỡ lỗi (đầu ra HTML)" -#: common/models.py:1549 -msgid "Enable SSO" -msgstr "" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" +msgstr "Khổ giấy" #: common/models.py:1550 -msgid "Enable SSO on the login pages" -msgstr "" +msgid "Default page size for PDF reports" +msgstr "Kích thước trang mặc định cho báo cáo PDF" #: common/models.py:1556 -msgid "Enable SSO registration" -msgstr "" +msgid "Enable Test Reports" +msgstr "Bật báo cáo kiểm thử" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" -msgstr "" +msgid "Enable generation of test reports" +msgstr "Cho phép tạo báo cáo kiểm thử" #: common/models.py:1563 -msgid "Email required" -msgstr "" +msgid "Attach Test Reports" +msgstr "Đính kèm báo cáo kiểm thử" #: common/models.py:1564 -msgid "Require user to supply mail on signup" -msgstr "" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +msgstr "Khi in một báo cáo kiểm thử, đính kèm một bản sao của báo cáo kiểm thử với hàng trong kho đã được kết hợp" #: common/models.py:1570 -msgid "Auto-fill SSO users" -msgstr "" +msgid "Globally Unique Serials" +msgstr "Sê ri toàn cục duy nhất" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" -msgstr "" +msgid "Serial numbers for stock items must be globally unique" +msgstr "Số sê ri cho hàng trong kho phải là duy nhất trong toàn hệ thống" #: common/models.py:1577 -msgid "Mail twice" -msgstr "" +msgid "Autofill Serial Numbers" +msgstr "Tự động điền số sê ri" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" -msgstr "" +msgid "Autofill serial numbers in forms" +msgstr "Tự động điền số sê ri vào biểu mẫu" #: common/models.py:1584 -msgid "Password twice" -msgstr "" +msgid "Delete Depleted Stock" +msgstr "Xóa kho đã hết hàng" #: common/models.py:1585 -msgid "On signup ask users twice for their password" -msgstr "" +msgid "Determines default behaviour when a stock item is depleted" +msgstr "Nhận dạng hành vi mặc định khi hàng trong kho bị hết" #: common/models.py:1591 -msgid "Allowed domains" -msgstr "" +msgid "Batch Code Template" +msgstr "Mẫu sinh mã theo lô" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" -msgstr "" +msgid "Template for generating default batch codes for stock items" +msgstr "Mẫu tạo mã theo lô mặc định cho hàng trong kho" + +#: common/models.py:1597 +msgid "Stock Expiry" +msgstr "Quá hạn trong kho" #: common/models.py:1598 -msgid "Group on signup" -msgstr "" +msgid "Enable stock expiry functionality" +msgstr "Bật chức năng quá hạn tồn kho" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" -msgstr "" +#: common/models.py:1604 +msgid "Sell Expired Stock" +msgstr "Bán kho quá hạn" #: common/models.py:1605 -msgid "Enforce MFA" -msgstr "" +msgid "Allow sale of expired stock" +msgstr "Cho phép bán hàng kho quá hạn" -#: common/models.py:1606 -msgid "Users must use multifactor security." -msgstr "" +#: common/models.py:1611 +msgid "Stock Stale Time" +msgstr "Thời gian hàng cũ trong kho" #: common/models.py:1612 -msgid "Check plugins on startup" -msgstr "" +msgid "Number of days stock items are considered stale before expiring" +msgstr "Số ngày hàng trong kho được xác định là cũ trước khi quá hạn" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" -msgstr "" +#: common/models.py:1619 +msgid "Build Expired Stock" +msgstr "Dựng kho quá hạn" #: common/models.py:1620 -msgid "Check plugin signatures" -msgstr "" +msgid "Allow building with expired stock" +msgstr "Cho phép xây dựng với kho hàng quá hạn" -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "" +#: common/models.py:1626 +msgid "Stock Ownership Control" +msgstr "Kiểm soát sở hữu kho" -#: common/models.py:1628 -msgid "Enable URL integration" -msgstr "" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" +msgstr "Bật chức năng kiểm soát sở hữu kho với địa điểm và hàng trong kho" -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" -msgstr "" +#: common/models.py:1633 +msgid "Stock Location Default Icon" +msgstr "Biểu tượng địa điểm kho mặc định" -#: common/models.py:1636 -msgid "Enable navigation integration" -msgstr "" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" +msgstr "Biểu tượng địa điểm kho hàng mặc định (trống nghĩa là không có biểu tượng)" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" -msgstr "" +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "Hiển thị hàng hóa đã lắp đặt" -#: common/models.py:1644 -msgid "Enable app integration" -msgstr "" +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "Hiển thị hàng trong kho đã được lắp đặt trên bảng kho" -#: common/models.py:1645 -msgid "Enable plugins to add apps" -msgstr "" +#: common/models.py:1646 +msgid "Build Order Reference Pattern" +msgstr "Mã tham chiếu đơn đặt bản dựng" -#: common/models.py:1652 -msgid "Enable schedule integration" -msgstr "" +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" +msgstr "Mẫu bắt buộc cho để trường tham chiếu đơn đặt bản dựng" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" -msgstr "" +msgid "Enable Return Orders" +msgstr "Bật đơn hàng trả lại" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" +msgstr "Bật chức năng đơn hàng trả lại trong giao diện người dùng" #: common/models.py:1660 -msgid "Enable event integration" -msgstr "" +msgid "Return Order Reference Pattern" +msgstr "Mẫu tham chiếu đơn hàng trả lại" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" -msgstr "" +msgid "Required pattern for generating Return Order reference field" +msgstr "Mẫu bắt buộc để tạo trường tham chiếu đơn hàng trả lại" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" +msgstr "Sửa đơn hàng trả lại đã hoàn thành" #: common/models.py:1668 -msgid "Enable project codes" -msgstr "" +msgid "Allow editing of return orders after they have been completed" +msgstr "Cho phép sửa đơn hàng trả lại sau khi đã hoàn thành rồi" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" -msgstr "" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" +msgstr "Mẫu tham chiếu đơn đặt hàng" #: common/models.py:1675 -msgid "Stocktake Functionality" -msgstr "" +msgid "Required pattern for generating Sales Order reference field" +msgstr "Mẫu bắt buộc để tạo trường tham chiếu đơn đặt hàng" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" -msgstr "" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" +msgstr "Vận chuyển mặc định đơn đặt hàng" #: common/models.py:1682 -msgid "Automatic Stocktake Period" -msgstr "" +msgid "Enable creation of default shipment with sales orders" +msgstr "Cho phép tạo vận chuyển mặc định với đơn đặt hàng" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" -msgstr "" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" +msgstr "Sửa đơn đặt hàng đã hoàn thành" -#: common/models.py:1692 -msgid "Report Deletion Interval" -msgstr "" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" +msgstr "Cho phép sửa đơn đặt hàng sau khi đã vận chuyển hoặc hoàn thành" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" -msgstr "" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" +msgstr "Mẫu tham chiếu đơn đặt mua" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" -msgstr "" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" +msgstr "Mẫu bắt buộc cho để trường tham chiếu đơn đặt mua" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" -msgstr "" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" +msgstr "Sửa đơn đặt mua đã hoàn thành" -#: common/models.py:1751 -msgid "Hide inactive parts" -msgstr "" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "Cho phép sửa đơn đặt mua sau khi đã vận chuyển hoặc hoàn thành" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "Bật quên mật khẩu" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "Bật chức năng quên mật khẩu trong trang đăng nhập" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "Bật đăng ký" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "Cho phép người dùng tự đăng ký tại trang đăng nhập" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "Bật SSO" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "Cho phép SSO tại trang đăng nhập" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "Bật đăng ký SSO" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "Cho phép người dùng tự đăng ký SSO tại trang đăng nhập" + +#: common/models.py:1738 +msgid "Email required" +msgstr "Yêu cầu email" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "Yêu cầu người dùng cung cấp email để đăng ký" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "Người dùng tự động điền SSO" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" +msgstr "Tự động điền thông tin chi tiết từ dữ liệu tài khoản SSO" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" -msgstr "" +msgid "Mail twice" +msgstr "Thư 2 lần" -#: common/models.py:1758 -msgid "Show subscribed parts" -msgstr "" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" +msgstr "Khi đăng ký sẽ hỏi người dùng hai lần thư điện tử của họ" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" -msgstr "" +msgid "Password twice" +msgstr "Mật khẩu 2 lần" -#: common/models.py:1765 -msgid "Show subscribed categories" -msgstr "" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" +msgstr "Khi đăng ký sẽ hỏi người dùng hai lần mật khẩu của họ" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" -msgstr "" +msgid "Allowed domains" +msgstr "Các tên miền được phép" -#: common/models.py:1772 +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgstr "Cấm đăng ký với 1 số tên miền cụ thể (dấu phẩy ngăn cách, bắt đầu với dấu @)" + +#: common/models.py:1773 +msgid "Group on signup" +msgstr "Nhóm khi đăng ký" + +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" +msgstr "Nhóm được gán cho người dùng mới khi đăng ký" + +#: common/models.py:1780 +msgid "Enforce MFA" +msgstr "Bắt buộc MFA" + +#: common/models.py:1781 +msgid "Users must use multifactor security." +msgstr "Người dùng phải sử dụng bảo mật đa nhân tố." + +#: common/models.py:1787 +msgid "Check plugins on startup" +msgstr "Kiểm tra phần mở rộng khi khởi động" + +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" +msgstr "Kiểm tra toàn bộ phần mở rộng đã được cài đặt khi khởi dộng - bật trong môi trường ảo hóa" + +#: common/models.py:1796 +msgid "Enable URL integration" +msgstr "Bật tích hợp URL" + +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" +msgstr "Bật phần mở rộng để thêm định tuyến URL" + +#: common/models.py:1804 +msgid "Enable navigation integration" +msgstr "Bật tích hợp điều hướng" + +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" +msgstr "Bật phần mở rộng để tích hợp thanh định hướng" + +#: common/models.py:1812 +msgid "Enable app integration" +msgstr "Bật tích hợp ứng dụng" + +#: common/models.py:1813 +msgid "Enable plugins to add apps" +msgstr "Bật phần mở rộng để thêm ứng dụng" + +#: common/models.py:1820 +msgid "Enable schedule integration" +msgstr "Cho phép tích hợp lập lịch" + +#: common/models.py:1821 +msgid "Enable plugins to run scheduled tasks" +msgstr "Bật phẩn mở rộng để chạy các tác vụ theo lịch" + +#: common/models.py:1828 +msgid "Enable event integration" +msgstr "Bật tích hợp nguồn cấp sự kiện" + +#: common/models.py:1829 +msgid "Enable plugins to respond to internal events" +msgstr "Bật phần mở rộng để trả lời sự kiện bên trong" + +#: common/models.py:1836 +msgid "Enable project codes" +msgstr "Bật mã dự án" + +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" +msgstr "Bật mã dự án để theo dõi dự án" + +#: common/models.py:1843 +msgid "Stocktake Functionality" +msgstr "Chức năng kiểm kê" + +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgstr "Bật chức năng kiểm kê theo mức độ ghi nhận kho và tính toán giá trị kho" + +#: common/models.py:1850 +msgid "Exclude External Locations" +msgstr "Ngoại trừ vị trí bên ngoài" + +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "Loại trừ hàng trong kho thuộc địa điểm bên ngoài ra khỏi tính toán kiểm kê" + +#: common/models.py:1857 +msgid "Automatic Stocktake Period" +msgstr "Giai đoạn kiểm kê tự động" + +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" +msgstr "Số ngày giữa ghi chép kiểm kê tự động (đặt không để tắt)" + +#: common/models.py:1867 +msgid "Report Deletion Interval" +msgstr "Khoảng thời gian xóa báo cáo" + +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" +msgstr "Báo cáo kiểm kê sẽ bị xóa sau số ngày xác định" + +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" +msgstr "Khóa thiết lập (phải duy nhất - phân biệt hoa thường" + +#: common/models.py:1925 +msgid "Hide inactive parts" +msgstr "Ẩn sản phẩm ngừng hoạt động" + +#: common/models.py:1926 +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "Ẩn sản phẩm bị tắt trong kết quả trình bày tại trang chủ" + +#: common/models.py:1932 +msgid "Show subscribed parts" +msgstr "Hiện sản phẩm đã đăng ký" + +#: common/models.py:1933 +msgid "Show subscribed parts on the homepage" +msgstr "Hiện sản phẩm đã đăng ký trên trang chủ" + +#: common/models.py:1939 +msgid "Show subscribed categories" +msgstr "Hiện danh mục đã đăng ký" + +#: common/models.py:1940 +msgid "Show subscribed part categories on the homepage" +msgstr "Hiện danh mục sản phẩm đã đăng ký trên trang chủ" + +#: common/models.py:1946 msgid "Show latest parts" msgstr "Hiển thị nguyên liệu mới nhất" -#: common/models.py:1773 +#: common/models.py:1947 msgid "Show latest parts on the homepage" msgstr "Hiển thị nguyên liệu mới nhất trên trang chủ" -#: common/models.py:1779 -msgid "Recent Part Count" -msgstr "" - -#: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "" - -#: common/models.py:1786 +#: common/models.py:1953 msgid "Show unvalidated BOMs" -msgstr "" - -#: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" -msgstr "" - -#: common/models.py:1793 -msgid "Show recent stock changes" -msgstr "" - -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" -msgstr "" - -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "" - -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "" - -#: common/models.py:1807 -msgid "Show low stock" -msgstr "" - -#: common/models.py:1808 -msgid "Show low stock items on the homepage" -msgstr "" - -#: common/models.py:1814 -msgid "Show depleted stock" -msgstr "" - -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" -msgstr "" - -#: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" -msgstr "" - -#: common/models.py:1828 -msgid "Show expired stock" -msgstr "" - -#: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "" - -#: common/models.py:1835 -msgid "Show stale stock" -msgstr "" - -#: common/models.py:1836 -msgid "Show stale stock items on the homepage" -msgstr "" - -#: common/models.py:1842 -msgid "Show pending builds" -msgstr "" - -#: common/models.py:1843 -msgid "Show pending builds on the homepage" -msgstr "" - -#: common/models.py:1849 -msgid "Show overdue builds" -msgstr "" - -#: common/models.py:1850 -msgid "Show overdue builds on the homepage" -msgstr "" - -#: common/models.py:1856 -msgid "Show outstanding POs" -msgstr "" - -#: common/models.py:1857 -msgid "Show outstanding POs on the homepage" -msgstr "" - -#: common/models.py:1863 -msgid "Show overdue POs" -msgstr "" - -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" -msgstr "" - -#: common/models.py:1870 -msgid "Show outstanding SOs" -msgstr "" - -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" -msgstr "" - -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "" - -#: common/models.py:1920 -msgid "Display parts in search preview window" -msgstr "" - -#: common/models.py:1926 -msgid "Search Supplier Parts" -msgstr "" - -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" -msgstr "" - -#: common/models.py:1933 -msgid "Search Manufacturer Parts" -msgstr "" - -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" -msgstr "" - -#: common/models.py:1940 -msgid "Hide Inactive Parts" -msgstr "" - -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" -msgstr "" - -#: common/models.py:1947 -msgid "Search Categories" -msgstr "" - -#: common/models.py:1948 -msgid "Display part categories in search preview window" -msgstr "" +msgstr "Hiển thị BOM chưa được xác thực" #: common/models.py:1954 -msgid "Search Stock" -msgstr "" +msgid "Show BOMs that await validation on the homepage" +msgstr "Hiện BOM chờ xác thực tại trang chủ" -#: common/models.py:1955 -msgid "Display stock items in search preview window" -msgstr "" +#: common/models.py:1960 +msgid "Show recent stock changes" +msgstr "Hiện thay đổi kho hàng gần đây" #: common/models.py:1961 -msgid "Hide Unavailable Stock Items" -msgstr "" +msgid "Show recently changed stock items on the homepage" +msgstr "Hiện hàng trong kho được thay đổi gần nhất trên trang chủ" -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" -msgstr "" +#: common/models.py:1967 +msgid "Show low stock" +msgstr "Hiển thị hàng còn ít" #: common/models.py:1968 -msgid "Search Locations" -msgstr "" +msgid "Show low stock items on the homepage" +msgstr "Hiển thị hàng hóa còn ít tại trang chủ" -#: common/models.py:1969 -msgid "Display stock locations in search preview window" -msgstr "" +#: common/models.py:1974 +msgid "Show depleted stock" +msgstr "Hiển thị hết hàng" #: common/models.py:1975 -msgid "Search Companies" -msgstr "" +msgid "Show depleted stock items on the homepage" +msgstr "Hiển thị hàng hóa đã bán hết tại trang chủ" -#: common/models.py:1976 -msgid "Display companies in search preview window" -msgstr "" +#: common/models.py:1981 +msgid "Show needed stock" +msgstr "Hiển thị hàng cần thiết" #: common/models.py:1982 -msgid "Search Build Orders" -msgstr "" +msgid "Show stock items needed for builds on the homepage" +msgstr "Hiện hàng trong kho cần thiết cho xây dựng tại trang chủ" -#: common/models.py:1983 -msgid "Display build orders in search preview window" -msgstr "" +#: common/models.py:1988 +msgid "Show expired stock" +msgstr "Bán kho quá hạn" #: common/models.py:1989 -msgid "Search Purchase Orders" -msgstr "" +msgid "Show expired stock items on the homepage" +msgstr "Hiển thị hàng hóa đã quá hạn trên trang chủ" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" -msgstr "" +#: common/models.py:1995 +msgid "Show stale stock" +msgstr "Hiện kho hàng ế" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" -msgstr "" +msgid "Show stale stock items on the homepage" +msgstr "Hiện hàng trong kho bị ế trên trang chủ" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" -msgstr "" +#: common/models.py:2002 +msgid "Show pending builds" +msgstr "Hiện bản dựng chờ xử lý" #: common/models.py:2003 -msgid "Search Sales Orders" -msgstr "" +msgid "Show pending builds on the homepage" +msgstr "Hiện bản dựng chờ xử lý trên trang chủ" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" -msgstr "" +#: common/models.py:2009 +msgid "Show overdue builds" +msgstr "Hiện bản dựng quá hạn" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" -msgstr "" +msgid "Show overdue builds on the homepage" +msgstr "Hiện bản dựng quá hạn trên trang chủ" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" -msgstr "" +#: common/models.py:2016 +msgid "Show outstanding POs" +msgstr "Hiện PO nổi bật" #: common/models.py:2017 -msgid "Search Return Orders" -msgstr "" +msgid "Show outstanding POs on the homepage" +msgstr "Hiện PO nổi bật trên trang chủ" -#: common/models.py:2018 -msgid "Display return orders in search preview window" -msgstr "" +#: common/models.py:2023 +msgid "Show overdue POs" +msgstr "Hiện PO quá hạn" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" -msgstr "" +msgid "Show overdue POs on the homepage" +msgstr "Hiện đơn mua hàng quá hạn trên trang chủ" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" -msgstr "" +#: common/models.py:2030 +msgid "Show outstanding SOs" +msgstr "Hiện đơn hàng vận chuyển nổi bật" #: common/models.py:2031 -msgid "Search Preview Results" -msgstr "" +msgid "Show outstanding SOs on the homepage" +msgstr "Hiện đơn hàng vận chuyển nổi bật tại trang chủ" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" -msgstr "" +#: common/models.py:2037 +msgid "Show overdue SOs" +msgstr "Hiện đơn vận chuyển quá hạn" #: common/models.py:2038 -msgid "Regex Search" -msgstr "" +msgid "Show overdue SOs on the homepage" +msgstr "Hiện đơn vận chuyển quá hạn trên trang chủ" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" -msgstr "" +#: common/models.py:2044 +msgid "Show pending SO shipments" +msgstr "Hiện đơn vận chuyển chờ xử lý" #: common/models.py:2045 -msgid "Whole Word Search" -msgstr "" +msgid "Show pending SO shipments on the homepage" +msgstr "Hiện đơn vận chuyển chờ xử lý trên trang chủ" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" -msgstr "" +#: common/models.py:2051 +msgid "Show News" +msgstr "Hiện tin tức" #: common/models.py:2052 -msgid "Show Quantity in Forms" -msgstr "" +msgid "Show news on the homepage" +msgstr "Hiện tin tức trên trang chủ" -#: common/models.py:2053 -msgid "Display available part quantity in some forms" -msgstr "" +#: common/models.py:2058 +msgid "Inline label display" +msgstr "Hiển thị nhãn cùng dòng" #: common/models.py:2059 -msgid "Escape Key Closes Forms" -msgstr "" +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "Hiển thị nhãn PDF trong trình duyệt, thay vì tải về dạng tệp tin" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" -msgstr "" +#: common/models.py:2065 +msgid "Default label printer" +msgstr "Máy in tem nhãn mặc định" #: common/models.py:2066 -msgid "Fixed Navbar" -msgstr "" +msgid "Configure which label printer should be selected by default" +msgstr "Cấu hình máy in tem nhãn nào được chọn mặc định" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" -msgstr "" +#: common/models.py:2072 +msgid "Inline report display" +msgstr "Hiển thị báo cáo cùng hàng" #: common/models.py:2073 -msgid "Date Format" -msgstr "" +msgid "Display PDF reports in the browser, instead of downloading as a file" +msgstr "Hiện báo cáo PDF trong trình duyệt, thay vì tải về dạng tệp tin" -#: common/models.py:2074 -msgid "Preferred format for displaying dates" -msgstr "" +#: common/models.py:2079 +msgid "Search Parts" +msgstr "Tìm sản phẩm" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" -msgstr "" +#: common/models.py:2080 +msgid "Display parts in search preview window" +msgstr "Hiện hàng hóa trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2089 -msgid "Display part scheduling information" -msgstr "" +#: common/models.py:2086 +msgid "Search Supplier Parts" +msgstr "Tìm sản phẩm nhà cung cấp" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" -msgstr "" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" +msgstr "Hiện sản phẩm nhà cung cấp trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" -msgstr "" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" +msgstr "Tìm sản phẩm nhà sản xuất" -#: common/models.py:2102 -msgid "Table String Length" -msgstr "" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" +msgstr "Hiện sản phẩm nhà sản xuất trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" -msgstr "" +#: common/models.py:2100 +msgid "Hide Inactive Parts" +msgstr "Ẩn sản phẩm ngừng hoạt động" -#: common/models.py:2112 -msgid "Default part label template" -msgstr "" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" +msgstr "Loại trừ sản phẩm ngưng hoạt động trong cửa sổ xem trước tìm kiếm" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" -msgstr "" +#: common/models.py:2107 +msgid "Search Categories" +msgstr "Tìm kiếm danh mục" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "Hiện danh mục sản phẩm trong cửa sổ xem trước tìm kiếm" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "Tìm kiếm kho" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" +msgstr "Hiện hàng hóa ở kho trong cửa sổ xem trước tìm kiếm" #: common/models.py:2121 -msgid "Default stock item template" -msgstr "" +msgid "Hide Unavailable Stock Items" +msgstr "Ẩn hàng hóa trong kho không có sẵn" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" -msgstr "" +msgid "Exclude stock items which are not available from the search preview window" +msgstr "Không bao gồm hàng hóa trong kho mà không sẵn sàng từ màn hình xem trước tìm kiếm" -#: common/models.py:2130 -msgid "Default stock location label template" -msgstr "" +#: common/models.py:2128 +msgid "Search Locations" +msgstr "Tìm kiếm vị trí" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" -msgstr "" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "Hiện vị trí kho hàng trong cửa sổ xem trước tìm kiếm" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "Tìm kiếm công ty" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "Hiện công ty trong cửa sổ xem trước tìm kiếm" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "Tìm kiếm đặt hàng xây dựng" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "Hiện đơn đặt xây dựng trong cửa sổ xem trước tìm kiếm" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "Tìm kiếm đơn đặt mua" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "Hiện đơn đặt mua trong cửa sổ xem trước tìm kiếm" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "Loại trừ đơn đặt mua không hoạt động" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "Loại trừ đơn đặt mua không hoạt động ra khỏi cửa sổ xem trước tìm kiếm" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "Tìm đơn đặt hàng người mua" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "Hiện đơn đặt hàng người mua trong cửa sổ xem trước tìm kiếm" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "Loại trừ đơn đặt hàng người mua không hoạt động" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" +msgstr "Không bao gồm đơn đặt hàng người mua không hoạt động trong cửa sổ xem trước tìm kiếm" #: common/models.py:2177 -msgid "Price break quantity" -msgstr "" +msgid "Search Return Orders" +msgstr "Tìm kiếm đơn hàng trả lại" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 -#: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 -msgid "Price" -msgstr "" +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "Hiện đơn hàng trả lại trong cửa sổ xem trước tìm kiếm" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" +msgstr "Loại trừ đơn hàng trả lại không hoạt động" #: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "Không bao gồm đơn hàng trả lại không hoạt động trong cửa sổ xem trước tìm kiếm" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "Kết quả xem trước tìm kiếm" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "Số kết quả cần hiển thị trong từng phần của cửa sổ xem trước tìm kiếm" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "Tìm kiếm biểu thức" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "Bật tìm kiếm biểu thức chính quy trong câu truy vấn tìm kiếm" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "Tìm phù hợp toàn bộ chữ" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "Truy vấn tìm trả về kết quả phù hợp toàn bộ chữ" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "Hiện số lượng trong biểu mẫu" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "Hiển thị số lượng sản phẩm có sẵn trong một số biểu mẫu" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "Phím escape để đóng mẫu biểu" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "Sử dụng phím escape để đóng mẫu biểu hộp thoại" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "Cố định điều hướng" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "Vị trí thành điều hướng là cố định trên cùng màn hình" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "Định dạng ngày" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "Định dạng ưa chuộng khi hiển thị ngày" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "Lập lịch sản phẩm" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "Hiển thị thông tin lịch sản phẩm" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "Kiểm kê sản phẩm" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "Hiển thị thông tin kiểm kê sản phẩm (nếu chức năng kiểm kê được bật)" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "Độ dài chuỗi trong bảng" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "Giới hạn độ dài tối đa cho chuỗi hiển thị trong kiểu xem bảng biểu" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "Mẫu nhãn sản phẩm mặc định" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "Mẫu nhãn sản phẩm mặc định được chọn tự động" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "Mẫu hàng hóa trong khi mặc định" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "Mẫu nhãn hàng hóa trong kho tự động được chọn" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "Mẫu nhãn vị trí kho mặc định" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "Mẫu nhãn vị trí kho được chọn tự động" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "Nhận báo cáo lỗi" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "Nhận thông báo khi có lỗi hệ thống" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "Số lượng giá phá vỡ" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "Giá" + +#: common/models.py:2352 msgid "Unit price at specified quantity" -msgstr "" +msgstr "Đơn vị giá theo số lượng cụ thể" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" -msgstr "" +msgstr "Đầu mối" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" -msgstr "" +msgstr "Đầu mối tại điểm webhook được nhận" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" -msgstr "" +msgstr "Tên của webhook này" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" -msgstr "" +msgstr "Hoạt động" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" -msgstr "" +msgstr "Webhook có hoạt động không" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" -msgstr "" +msgstr "Chữ ký số" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" -msgstr "" +msgstr "Chữ ký số để truy cập" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" -msgstr "" +msgstr "Bí mật" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" -msgstr "" +msgstr "Mã bí mật dùng chung cho HMAC" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" -msgstr "" +msgstr "Mã Tin nhắn" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" -msgstr "" +msgstr "Định danh duy nhất cho tin nhắn này" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" -msgstr "" +msgstr "Máy chủ" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" -msgstr "" +msgstr "Mãy chủ từ tin nhắn này đã được nhận" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" -msgstr "" +msgstr "Đầu mục" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" -msgstr "" +msgstr "Đầu mục tin nhắn" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" -msgstr "" +msgstr "Thân" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" -msgstr "" +msgstr "Thân tin nhắn này" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" -msgstr "" +msgstr "Đầu mối của tin nhắn này đã nhận được" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" -msgstr "" +msgstr "Làm việc vào" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" -msgstr "" +msgstr "Công việc trong tin nhắn này đã kết thúc?" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" -msgstr "" +msgstr "Mã" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" -msgstr "" +msgstr "Tiêu đề" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" -msgstr "" +msgstr "Đã công bố" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" -msgstr "" +msgstr "Tác giả" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" -msgstr "" +msgstr "Tóm tắt" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" -msgstr "" +msgstr "Đọc" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" -msgstr "" +msgstr "Tin này đã được đọc?" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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 "" +msgstr "Hình ảnh" -#: common/models.py:2737 +#: common/models.py:2902 msgid "Image file" -msgstr "" +msgstr "Tệp ảnh" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "Tên đơn vị phải là một định danh hợp lệ" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "Tên đơn vị" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "Biểu tượng" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "Biểu tượng đơn vị tùy chọn" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "Định nghĩa" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "Định nghĩa đơn vị" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" -msgstr "" +msgstr "Mới {verbose_name}" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" -msgstr "" +msgstr "Một đơn đặt hàng mới đã được tạo và phân công cho bạn" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" -msgstr "" +msgstr "Mục đã nhận" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" -msgstr "" +msgstr "Hàng đã được nhận theo đơn đặt mua" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" -msgstr "" +msgstr "Hàng đã nhận theo đơn hàng trả lại" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" -msgstr "" +msgstr "Lỗi được thông báo bởi phần mở rộng" #: common/views.py:85 order/templates/order/order_wizard/po_upload.html:51 #: order/templates/order/purchase_order_detail.html:24 order/views.py:118 #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:108 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" -msgstr "" +msgstr "Tải lên tệp tin" #: common/views.py:86 order/templates/order/order_wizard/match_fields.html:52 #: order/views.py:119 @@ -3464,21 +3566,21 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:52 part/views.py:109 #: templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" -msgstr "" +msgstr "Khớp trường" #: common/views.py:87 msgid "Match Items" -msgstr "" +msgstr "Khớp hàng hóa" #: common/views.py:420 msgid "Fields matching failed" -msgstr "" +msgstr "Khớp trường thất bại" #: common/views.py:481 msgid "Parts imported" -msgstr "" +msgstr "Hàng hóa đã được nhập vào" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3487,351 +3589,415 @@ msgstr "" #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" -msgstr "" +msgstr "Bước trước" #: company/models.py:106 msgid "Company description" -msgstr "" +msgstr "Mô tả công ty" #: company/models.py:107 msgid "Description of the company" -msgstr "" +msgstr "Mô tả của công ty" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" -msgstr "" +msgstr "Trang web" #: company/models.py:114 msgid "Company website URL" -msgstr "" +msgstr "URL trang web của công ty" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "" +#: company/models.py:118 +msgid "Phone number" +msgstr "Số điện thoại" #: company/models.py:119 -msgid "Company address" -msgstr "" +msgid "Contact phone number" +msgstr "Số điện thoại liên hệ" #: company/models.py:122 -msgid "Phone number" -msgstr "" +msgid "Contact email address" +msgstr "Địa chỉ email liên hệ" -#: company/models.py:123 -msgid "Contact phone number" -msgstr "" - -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "" +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 +msgid "Contact" +msgstr "Liên hệ" #: company/models.py:126 -msgid "Contact email address" -msgstr "" - -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 -msgid "Contact" -msgstr "" - -#: company/models.py:130 msgid "Point of contact" -msgstr "" +msgstr "Đầu mối liên hệ" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" -msgstr "" +msgstr "Liên kết đến thông tin công ty ngoài" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" -msgstr "" +msgstr "là khách hàng" + +#: company/models.py:142 +msgid "Do you sell items to this company?" +msgstr "Bạn có bán hàng cho công ty này?" + +#: company/models.py:144 +msgid "is supplier" +msgstr "là nhà cung cấp" + +#: company/models.py:144 +msgid "Do you purchase items from this company?" +msgstr "Bạn có mua hàng từ công ty này?" #: company/models.py:146 -msgid "Do you sell items to this company?" -msgstr "" - -#: company/models.py:148 -msgid "is supplier" -msgstr "" - -#: company/models.py:148 -msgid "Do you purchase items from this company?" -msgstr "" - -#: company/models.py:150 msgid "is manufacturer" -msgstr "" +msgstr "là nhà sản xuất" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" -msgstr "" +msgstr "Công ty này có sản xuất sản phẩm?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" -msgstr "" +msgstr "Tiền tệ mặc định dùng cho công ty này" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" -msgstr "" +msgstr "Doanh nghiêp" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "Chọn doanh nghiệp" + +#: company/models.py:337 +msgid "Address title" +msgstr "Tiêu đề địa chỉ" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "Tiêu đề mô tả mục địa chỉ" + +#: company/models.py:342 +msgid "Primary address" +msgstr "Địa chỉ chính" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "Đặt làm địa chỉ chính" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "Dòng 1" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "Địa chỉ dòng 1" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "Dòng 2" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "Địa chỉ dòng 2" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "Mã bưu chính" + +#: company/models.py:361 +msgid "City/Region" +msgstr "Thành phố/Vùng" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "Mã bưu chính thành phố/vùng" + +#: company/models.py:366 +msgid "State/Province" +msgstr "Bang/Tỉnh" + +#: company/models.py:367 +msgid "State or province" +msgstr "Bang hay tỉnh" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "Quốc gia" + +#: company/models.py:372 +msgid "Address country" +msgstr "Địa chỉ quốc gia" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "Ghi chú vận chuyển" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "Ghi chú dành cho chuyển phát nhanh" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "Ghi chú nội bọ chuyển phát nhanh" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "Ghi chú nội bộ sử dụng cho chuyển phát nhanh" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "Liên kết thông tin địa chỉ (bên ngoài)" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" -msgstr "" +msgstr "Sản phẩm cơ bản" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" -msgstr "" +msgstr "Chọn sản phẩm" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "Nhà sản xuất" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" -msgstr "" +msgstr "Chọn nhà sản xuất" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" -msgstr "" +msgstr "MPN" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" -msgstr "" +msgstr "Mã số nhà sản xuất" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" -msgstr "" +msgstr "URL cho liên kết sản phẩm của nhà sản xuất bên ngoài" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" -msgstr "" +msgstr "Mô tả sản phẩm của nhà sản xuất" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" -msgstr "" +msgstr "Sản phẩm nhà sản xuất" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" -msgstr "" +msgstr "Tên tham số" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" -msgstr "" +msgstr "Giá trị" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" -msgstr "" +msgstr "Giá trị tham số" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" -msgstr "" +msgstr "Đơn vị" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" -msgstr "" +msgstr "Đơn vị tham số" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" -msgstr "" +msgstr "Đơn vị đóng gói phải tương thích với đơn vị sản phẩm cơ bản" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" -msgstr "" +msgstr "Đơn vị đóng gói phải lớn hơn không" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" -msgstr "" +msgstr "Sản phẩm nhà sản xuất đã liên kết phải tham chiếu với sản phẩm cơ bản tương tự" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "Nhà cung cấp" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" -msgstr "" +msgstr "Chọn nhà cung cấp" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" -msgstr "" +msgstr "SKU" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" -msgstr "" +msgstr "Đơn vị quản lý kho nhà cung cấp" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" -msgstr "" +msgstr "Chọn sản phẩm của nhà sản xuất" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" -msgstr "" +msgstr "URL cho liên kết sản phẩm của nhà cung cấp bên ngoài" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" -msgstr "" +msgstr "Mô tả sản phẩm nhà cung cấp" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" -msgstr "" +msgstr "Ghi chú" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" -msgstr "" +msgstr "chi phí cơ sở" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" -msgstr "" +msgstr "Thu phí tối thiểu (vd: phí kho bãi)" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" -msgstr "" +msgstr "Đóng gói" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" -msgstr "" +msgstr "Đóng gói sản phẩm" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" -msgstr "" +msgstr "Số lượng gói" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." -msgstr "" +msgstr "Tổng số lượng được cung cấp trong một gói đơn. Để trống cho các hàng hóa riêng lẻ." -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" -msgstr "" +msgstr "nhiều" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" -msgstr "" +msgstr "Đặt hàng nhiều" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" -msgstr "" +msgstr "Số lượng có sẵn từ nhà cung cấp" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" -msgstr "" +msgstr "Sẵn hàng đã được cập nhật" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" -msgstr "" +msgstr "Ngày cập nhật cuối thông tin tồn kho" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" -msgstr "" +msgstr "Tiền tệ mặc định được sử dụng cho nhà cung cấp này" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" -msgstr "" +msgstr "Tạo đơn mua hàng" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" -msgstr "" +msgstr "Chức năng doanh nghiệp" + +#: company/templates/company/company_base.html:32 +msgid "Edit company information" +msgstr "Sửa thông tin doanh nghiệp" #: company/templates/company/company_base.html:33 -msgid "Edit company information" -msgstr "" - -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: templates/js/translated/company.js:444 msgid "Edit Company" -msgstr "" +msgstr "Sửa doanh nghiệp" + +#: company/templates/company/company_base.html:37 +msgid "Delete company" +msgstr "Xóa doanh nghiệp" #: company/templates/company/company_base.html:38 -msgid "Delete company" -msgstr "" - -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:162 msgid "Delete Company" -msgstr "" +msgstr "Xóa doanh nghiệp" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3839,1216 +4005,1187 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:84 #: report/templates/report/inventree_test_report_base.html:163 msgid "Part image" -msgstr "" +msgstr "Ảnh sản phẩm" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" -msgstr "" +msgstr "Tải hình mới lên" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" -msgstr "" +msgstr "Tải hình ảnh từ URL" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" -msgstr "" +msgstr "Xóa ảnh" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" -msgstr "" +msgstr "Khách hàng" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" -msgstr "" +msgstr "Dùng tiền mặc định" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "Địa chỉ" + +#: company/templates/company/company_base.html:125 msgid "Phone" -msgstr "" +msgstr "Điện thoại" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 +msgid "Remove Image" +msgstr "Xoá hình ảnh" #: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 -msgid "Remove Image" -msgstr "" - -#: company/templates/company/company_base.html:207 msgid "Remove associated image from this company" -msgstr "" +msgstr "Xóa ảnh đã gắn kết với doanh nghiệp này" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" -msgstr "" +msgstr "Xóa" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "" +msgstr "Tải ảnh lên" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "" +msgstr "Tải ảnh xuống" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" -msgstr "" +msgstr "Sản phẩm nhà cung cấp" #: company/templates/company/detail.html:19 msgid "Create new supplier part" -msgstr "" +msgstr "Thêm mới sản phẩm nhà cung cấp" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" -msgstr "" +msgstr "Sản phẩm nhà cung cấp mới" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" -msgstr "" +msgstr "Sản phẩm nhà sản xuất" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" -msgstr "" +msgstr "Tạo sản phẩm nhà sản xuất mới" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" -msgstr "" +msgstr "Sản phẩm nhà sản xuất mới" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" -msgstr "" +msgstr "Kho nhà cung cấp" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" -msgstr "" +msgstr "Đơn mua hàng" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" -msgstr "" +msgstr "Đơn đặt hàng" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" -msgstr "" +msgstr "Đơn đặt hàng mới" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" -msgstr "" +msgstr "Đơn hàng bán" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" -msgstr "" +msgstr "Tạo đơn hàng bán mới" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" -msgstr "" +msgstr "Đơn đặt bán mới" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" -msgstr "" +msgstr "Kho đã được giao" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" -msgstr "" +msgstr "Đơn hàng trả lại" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" -msgstr "" +msgstr "Tạo đơn hàng trả lại mới" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" -msgstr "" +msgstr "Đơn hàng trả lại mới" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" -msgstr "" +msgstr "Ghi chú doanh nghiệp" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" -msgstr "" +msgstr "Liên lạc của doanh nghiệp" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" -msgstr "" +msgstr "Thêm liên lạc" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "" +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "Địa chỉ doanh nghiệp" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "Thêm địa chỉ" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" -msgstr "" +msgstr "Nhà sản xuất" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" -msgstr "" +msgstr "Đặt mua sản phẩm" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" -msgstr "" +msgstr "Sửa sản phẩm của nhà sản xuất" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" -msgstr "" +msgstr "Xóa sản phẩm của nhà sản xuất" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" -msgstr "" +msgstr "Sản phẩm nội bộ" #: company/templates/company/manufacturer_part.html:95 msgid "No manufacturer information available" -msgstr "" +msgstr "Chưa có thông tin nhà sản xuất" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" -msgstr "" +msgstr "Nhà cung cấp" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "Thông số" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" -msgstr "" +msgstr "Tham số mới" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "Xóa các thông số" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" -msgstr "" +msgstr "Thêm tham số" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" -msgstr "" +msgstr "Sản phẩm nhà sản xuất" #: company/templates/company/sidebar.html:10 msgid "Supplied Parts" -msgstr "" +msgstr "Sản phẩm đã được cung cấp" #: company/templates/company/sidebar.html:16 msgid "Supplied Stock Items" -msgstr "" +msgstr "Hàng trong kho đã cung cấp" #: company/templates/company/sidebar.html:25 msgid "Assigned Stock Items" -msgstr "" +msgstr "Hàng trong kho đã được phân bổ" #: company/templates/company/sidebar.html:33 msgid "Contacts" -msgstr "" +msgstr "Danh bạ" + +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "Địa chỉ" #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" -msgstr "" +msgstr "Sản phẩm nhà cung cấp" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" -msgstr "" +msgstr "Chức năng cho sản phẩm nhà cung cấp" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" -msgstr "" +msgstr "Đặt hàng sản phẩm" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" -msgstr "" +msgstr "Cập nhật tính sẵn sàng" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" -msgstr "" +msgstr "Sửa sản phẩm nhà cung cấp" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" -msgstr "" +msgstr "Nhân bản sản phẩm nhà cung cấp" + +#: company/templates/company/supplier_part.html:73 +msgid "Delete Supplier Part" +msgstr "Xóa sản phẩm nhà cung cấp" #: company/templates/company/supplier_part.html:74 -msgid "Delete Supplier Part" -msgstr "" - -#: company/templates/company/supplier_part.html:75 msgid "Delete Supplier Part" -msgstr "" +msgstr "Xóa sản phẩm nhà cung cấp" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" -msgstr "" +msgstr "Chưa có thông tin nhà cung cấp" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" -msgstr "" +msgstr "Kho sản phẩm nhà cung cấp" + +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 +msgid "Create new stock item" +msgstr "Thêm mới hàng trong kho" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 -msgid "Create new stock item" -msgstr "" - -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" -msgstr "" +msgstr "Hàng trong kho mới" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" -msgstr "" +msgstr "Đơn đặt hàng nhà cung cấp" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" -msgstr "" +msgstr "Thông tin giá cả" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" -msgstr "" +msgstr "Thêm giá phá vỡ" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" -msgstr "" +msgstr "Mã QR sản phẩm nhà cung cấp" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" -msgstr "" +msgstr "Liên kết mã vạch đến hàng hóa nhà cung cấp" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" -msgstr "" +msgstr "Cập nhật sự sẵn sàng sản phẩm" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" -msgstr "" +msgstr "Hàng trong kho" #: company/templates/company/supplier_part_sidebar.html:9 msgid "Supplier Part Pricing" -msgstr "" +msgstr "Giá sản phẩm nhà cung cấp" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" -msgstr "" +msgstr "Nhà cung cấp mới" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" -msgstr "" +msgstr "Nhà sản xuất mới" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" -msgstr "" +msgstr "Khách hàng" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" -msgstr "" +msgstr "Khách hàng mới" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" -msgstr "" +msgstr "Doanh nghiệp" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" -msgstr "" +msgstr "Doanh nghiệp mới" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" -msgstr "" +msgstr "Tên nhãn" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" -msgstr "" - -#: label/models.py:118 -msgid "Label" -msgstr "" - -#: label/models.py:119 -msgid "Label template file" -msgstr "" - -#: label/models.py:125 report/models.py:273 -msgid "Enabled" -msgstr "" - -#: label/models.py:126 -msgid "Label template is enabled" -msgstr "" +msgstr "Mô tả nhãn" #: label/models.py:131 -msgid "Width [mm]" -msgstr "" +msgid "Label" +msgstr "Nhãn" #: label/models.py:132 -msgid "Label width, specified in mm" -msgstr "" +msgid "Label template file" +msgstr "Tệp mẫu nhãn" -#: label/models.py:138 -msgid "Height [mm]" -msgstr "" +#: label/models.py:138 report/models.py:311 +msgid "Enabled" +msgstr "Đã bật" #: label/models.py:139 +msgid "Label template is enabled" +msgstr "Mẫu nhãn đã bật" + +#: label/models.py:144 +msgid "Width [mm]" +msgstr "Chiều rộng [mm]" + +#: label/models.py:145 +msgid "Label width, specified in mm" +msgstr "Chiều rộng nhãn, tính theo mm" + +#: label/models.py:151 +msgid "Height [mm]" +msgstr "Chiều cao [mm]" + +#: label/models.py:152 msgid "Label height, specified in mm" -msgstr "" +msgstr "Chiều cao nhãn, tính theo mm" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" -msgstr "" +msgstr "Mẫu tên tệp" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" -msgstr "" +msgstr "Mẫu dùng để tạo tên tệp nhãn" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," -msgstr "" +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "Truy vấn bộ lọc (dùng dấu phẩy ngăn cách các cặp key=value)" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" -msgstr "" - -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "" +msgstr "Bộ lọc" #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" -msgstr "" +msgid "QR Code" +msgstr "Mã QR" #: label/templates/label/part/part_label_code128.html:31 #: label/templates/label/stocklocation/qr_and_text.html:31 #: templates/qr_code.html:7 msgid "QR code" -msgstr "" +msgstr "Mã QR" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" -msgstr "" +msgstr "Tổng tiền" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" -msgstr "" +msgstr "Không tìm thấy đơn đặt mua phù hợp" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "Đơn hàng" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" -msgstr "" +msgstr "Đơn hàng trả lại" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" -msgstr "" +msgstr "Không rõ" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" -msgstr "" +msgstr "Tổng tiền cho đơn hàng hàng" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" -msgstr "" +msgstr "Tiền tệ đơn đặt hàng" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" -msgstr "" +msgstr "Tiền tệ cho đơn đặt này (để trống để sử dụng tiền mặc định)" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" -msgstr "" +msgstr "Liên hệ không phù hợp với doanh nghiệp đã chọn" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" -msgstr "" +msgstr "Mô tả đơn đặt (tùy chọn)" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" -msgstr "" +msgstr "Mã dự án đã chọn cho đơn đặt hàng này" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" -msgstr "" +msgstr "Liên kết đến trang bên ngoài" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." -msgstr "" +msgstr "Ngày mong muốn giao được hàng. Đơn đặt sẽ quá hạn sau ngày này." -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" -msgstr "" +msgstr "Tạo bởi" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" -msgstr "" +msgstr "Người dùng hoặc nhóm có trách nhiệm với đơn đặt này" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" -msgstr "" +msgstr "Đầu mối liên hệ của đơn đặt này" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "Địa chỉ công ty cho đơn đặt này" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" -msgstr "" +msgstr "Mã đặt hàng" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" -msgstr "" +msgstr "Trạng thái đơn đặt mua" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" -msgstr "" +msgstr "Doanh nghiệp từ những hàng hóa đang được đặt mua" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" -msgstr "" +msgstr "Tham chiếu nhà cung cấp" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" -msgstr "" +msgstr "Mã tham chiếu đơn đặt nhà cung cấp" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" -msgstr "" +msgstr "nhận bởi" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" -msgstr "" +msgstr "Ngày phát hành" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" -msgstr "" +msgstr "Ngày đặt hàng đã phát hành" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" -msgstr "" +msgstr "Ngày đặt hàng đã được hoàn thiện" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" -msgstr "" +msgstr "Nhà cung cấp sản phẩm phải trùng với nhà cung cấp PO" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" -msgstr "" +msgstr "Số lượng phải là số dương" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" -msgstr "" +msgstr "Doanh nghiệp từ những hàng hóa đang được bán" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " -msgstr "" +msgstr "Tham chiếu khách hàng " -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" -msgstr "" +msgstr "Mã tham chiếu đơn đặt của khách hàng" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" -msgstr "" +msgstr "Ngày giao hàng" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" -msgstr "" +msgstr "vận chuyển bằng" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" -msgstr "" +msgstr "Đơn đặt hàng không thể hoàn thiện vì chưa có sản phẩm nào được chọn" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" -msgstr "" +msgstr "Những đơn hàng đang mở thì sẽ được đánh dấu là hoàn thành" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" -msgstr "" +msgstr "Đơn hàng không thể hoàn thành được vì vận chuyển chưa xong" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" -msgstr "" +msgstr "Đơn hàng không thể hoàn thành được vì những khoản riêng chưa xong" #: order/models.py:1074 msgid "Item quantity" -msgstr "" +msgstr "Số lượng mặt hàng" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" -msgstr "" +msgstr "Tham chiếu khoản riêng" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" -msgstr "" +msgstr "Ghi chú khoản riêng" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" -msgstr "" +msgstr "Ngày mục tiêu cho khoản riêng này (để trống để sử dụng ngày mục tiêu từ đơn đặt)" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" -msgstr "" +msgstr "Mô tả khoản riêng (tùy chọn)" + +#: order/models.py:1122 +msgid "Context" +msgstr "Ngữ cảnh" #: order/models.py:1123 -msgid "Context" -msgstr "" - -#: order/models.py:1124 msgid "Additional context for this line" -msgstr "" +msgstr "Ngữ cảnh bổ sung" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" -msgstr "" +msgstr "Đơn giá" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" -msgstr "" +msgstr "Sản phẩm nhà cung cấp phải phù hợp với nhà cung cung cấp" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" -msgstr "" +msgstr "đã bị xóa" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" -msgstr "" +msgstr "Đặt hàng" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" -msgstr "" +msgstr "Sản phẩm nhà cung cấp" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" -msgstr "" +msgstr "Đã nhận" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" -msgstr "" +msgstr "Số mục đã nhận" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "Giá mua" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" -msgstr "" +msgstr "Giá đơn vị mua" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" -msgstr "" +msgstr "Có phải người mua hàng muốn mặt hàng này được tích trữ?" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" -msgstr "" +msgstr "Không thể gán sản phẩm ảo vào trong đơn đặt bán hàng" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" -msgstr "" +msgstr "Chỉ có thể gán sản phẩm có thể bán vào đơn đặt bán hàng" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" -msgstr "" +msgstr "Giá bán" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" -msgstr "" +msgstr "Giá bán đơn vị" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" -msgstr "" +msgstr "Số lượng đã vận chuyển" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" -msgstr "" +msgstr "Ngày vận chuyển" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" -msgstr "" +msgstr "Ngày giao hàng" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" -msgstr "" +msgstr "Ngày giao hàng của vận chuyển" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" -msgstr "" +msgstr "Kiểm tra bởi" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" -msgstr "" +msgstr "Người dùng đã kiểm tra vận chuyển này" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" -msgstr "" +msgstr "Vận chuyển" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" -msgstr "" +msgstr "Mã vận chuyển" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" -msgstr "" +msgstr "Số theo dõi" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" -msgstr "" +msgstr "Thông tin theo dõi vận chuyển" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" -msgstr "" +msgstr "Mã hóa đơn" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" -msgstr "" +msgstr "Số tham chiếu liên kết với hóa đơn" + +#: order/models.py:1467 +msgid "Shipment has already been sent" +msgstr "Vận đơn đã được gửi đi" #: order/models.py:1470 -msgid "Shipment has already been sent" -msgstr "" - -#: order/models.py:1473 msgid "Shipment has no allocated stock items" -msgstr "" +msgstr "Vận đơn chưa có hàng hóa được phân bổ" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" -msgstr "" +msgstr "Hàng trong kho chưa được giao" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" -msgstr "" +msgstr "Không thể phân bổ hàng hóa vào cùng với dòng với sản phẩm khác" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" -msgstr "" +msgstr "Không thể phân bổ hàng hóa vào một dòng mà không có sản phẩm nào" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" -msgstr "" +msgstr "Số lượng phân bổ không thể vượt quá số lượng của kho" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" -msgstr "" +msgstr "Số lượng phải là 1 cho hàng hóa sêri" + +#: order/models.py:1609 +msgid "Sales order does not match shipment" +msgstr "Đơn bán hàng không phù hợp với vận đơn" #: order/models.py:1610 -msgid "Sales order does not match shipment" -msgstr "" - -#: order/models.py:1611 msgid "Shipment does not match sales order" -msgstr "" +msgstr "Vận đơn không phù hợp với đơn bán hàng" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" -msgstr "" +msgstr "Dòng" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" -msgstr "" +msgstr "Tham chiếu vận đơn của đơn hàng bán" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" -msgstr "" +msgstr "Hàng hóa" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" -msgstr "" +msgstr "Chọn hàng trong kho để phân bổ" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" -msgstr "" +msgstr "Nhập số lượng phân kho" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" -msgstr "" +msgstr "Tham chiếu đơn hàng trả lại" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" -msgstr "" +msgstr "Công ty có hàng hóa sẽ được trả lại" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" -msgstr "" +msgstr "Trạng thái đơn hàng trả lại" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" -msgstr "" +msgstr "Chỉ hàng hóa thêo sêri mới có thể được gán vào đơn hàng trả lại" + +#: order/models.py:1911 +msgid "Select item to return from customer" +msgstr "Chọn hàng hóa để trả lại từ khách hàng" + +#: order/models.py:1916 +msgid "Received Date" +msgstr "Ngày nhận được" #: order/models.py:1917 -msgid "Select item to return from customer" -msgstr "" - -#: order/models.py:1922 -msgid "Received Date" -msgstr "" - -#: order/models.py:1923 msgid "The date this this return item was received" -msgstr "" +msgstr "Ngày mà hàng hóa trả lại đã được nhận" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" -msgstr "" +msgstr "Kết quả" + +#: order/models.py:1928 +msgid "Outcome for this line item" +msgstr "Kết quả cho hàng hóa dòng này" #: order/models.py:1934 -msgid "Outcome for this line item" -msgstr "" - -#: order/models.py:1940 msgid "Cost associated with return or repair for this line item" -msgstr "" +msgstr "Chi phí gắn với hàng trả lại hoặc sửa chữa cho dòng hàng hóa này" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" -msgstr "" +msgstr "Đơn đặt không thể bị hủy" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" -msgstr "" +msgstr "Cho phép đơn đặt phải đóng lại cùng với các mục dòng hàng hóa chưa hoàn thành" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" -msgstr "" +msgstr "Đơn đặt có dòng hàng hóa chưa hoàn thành" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" -msgstr "" +msgstr "Đơn đặt là không được mở" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" -msgstr "" +msgstr "Tiền tệ giá mua" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" -msgstr "" +msgstr "Sản phẩm nhà cung cấp phải được chỉ định" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" -msgstr "" +msgstr "Đơn đặt mua phải được chỉ định" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" -msgstr "" +msgstr "Nhà cung cấp phải phù hợp với đơn đặt mua" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" -msgstr "" +msgstr "Đơn đặt mua phải phù hợp với nhà cung cấp" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" -msgstr "" +msgstr "Mục dòng" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" -msgstr "" +msgstr "Mục dòng không phù hợp với đơn đặt mua" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" -msgstr "" +msgstr "Chọn vị trí đích cho hàng hóa đã nhận" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" -msgstr "" +msgstr "Nhập mã lô cho hàng trong kho đang đến" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" -msgstr "" +msgstr "Nhập số sê ri cho hàng trong kho đang đến" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" -msgstr "" +msgstr "Mã vạch" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" -msgstr "" +msgstr "Mã vạch đã quét" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" -msgstr "" +msgstr "Mã vạch đã được dùng" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" -msgstr "" +msgstr "Cần điền số nguyên cho sản phẩm có thể theo dõi" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" -msgstr "" +msgstr "Dòng hàng hóa phải được cung cấp" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" -msgstr "" +msgstr "Vị trí đích phải được chỉ ra" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" -msgstr "" +msgstr "Giá trị mã vạch đã cung cấp phải duy nhất" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" -msgstr "" +msgstr "Tiền tệ giá bán" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" -msgstr "" +msgstr "Chưa cung cấp thông tin vận chuyển" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" -msgstr "" +msgstr "Dòng hàng hóa chưa được gắn với đơn đặt này" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" -msgstr "" +msgstr "Số lượng phải là số dương" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" -msgstr "" +msgstr "Nhập số sê ri để phân bổ" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" -msgstr "" +msgstr "Vận đơn đã được chuyển đi" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" -msgstr "" +msgstr "Vận đơn không được gắn với đơn đặt này" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" -msgstr "" +msgstr "Không tìm thấy số sê ri sau đây" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" -msgstr "" +msgstr "Những số sê ri sau đây đã được phân bổ" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" -msgstr "" - -#: order/serializers.py:1562 -msgid "Line item does not match return order" -msgstr "" - -#: order/serializers.py:1565 -msgid "Line item has already been received" -msgstr "" +msgstr "Dòng riêng biệt đơn hàng trả lại" #: order/serializers.py:1597 +msgid "Line item does not match return order" +msgstr "Line item không phù hợp với đơn hàng trả lại" + +#: order/serializers.py:1600 +msgid "Line item has already been received" +msgstr "Line item đã nhận được" + +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" -msgstr "" +msgstr "Hàng hóa chỉ có thể được nhận theo đơn hàng đang trong tiến trình" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" -msgstr "" +msgstr "Tiền tệ giá đồng hạng" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" -msgstr "" +msgstr "Đơn đặt mua quá hạn" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" -msgstr "" +msgstr "Đơn đặt mua {po} quá hạn" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" -msgstr "" +msgstr "Đơn bán hàng quá hạn" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" -msgstr "" +msgstr "Đơn bán hàng {so} đã quá hạn" #: order/templates/order/order_base.html:51 msgid "Print purchase order report" -msgstr "" +msgstr "In báo cáo đơn đặt mua" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" -msgstr "" +msgstr "Xuất đơn đặt sang tệp tin" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" -msgstr "" +msgstr "Chức năng đơn đặt" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" -msgstr "" +msgstr "Chỉnh sửa đơn đặt" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" -msgstr "" +msgstr "Hủy đơn đặt" #: order/templates/order/order_base.html:73 msgid "Duplicate order" -msgstr "" +msgstr "Đơn đặt trùng" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" -msgstr "" +msgstr "Vấn đề đơn hàng" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" -msgstr "" +msgstr "Đánh dấu đơn đặt đã hoàn thành" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" -msgstr "" +msgstr "Đơn đặt hoàn thành" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" -msgstr "" +msgstr "Ảnh thu nhỏ sản phẩm nhà cung cấp" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" -msgstr "" +msgstr "Tham chiếu đơn đặt" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" -msgstr "" +msgstr "Mô tả đơn đặt" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" -msgstr "" +msgstr "Trạng thái đặt hàng" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" -msgstr "" +msgstr "Chưa có thông tin nhà cung cấp" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" -msgstr "" +msgstr "Mục dòng hoàn thành" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" -msgstr "" +msgstr "Chưa hoàn thành" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" -msgstr "" +msgstr "Đã cấp" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" -msgstr "" +msgstr "Tổng chi phí" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" -msgstr "" +msgstr "Không thể tính tổng chi phí" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" -msgstr "" +msgstr "Mã QR đơn đặt mua" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" -msgstr "" +msgstr "Liên kết mã vạch với đơn đặt mua" #: order/templates/order/order_wizard/match_fields.html:9 #: part/templates/part/import_wizard/ajax_match_fields.html:9 #: part/templates/part/import_wizard/match_fields.html:9 #: templates/patterns/wizard/match_fields.html:8 msgid "Missing selections for the following required columns" -msgstr "" +msgstr "Chọn thiếu cột bắt buộc dưới đây" #: order/templates/order/order_wizard/match_fields.html:20 #: part/templates/part/import_wizard/ajax_match_fields.html:20 #: part/templates/part/import_wizard/match_fields.html:20 #: templates/patterns/wizard/match_fields.html:19 msgid "Duplicate selections found, see below. Fix them then retry submitting." -msgstr "" +msgstr "Phát hiện lựa chọn trùng lắp, xem bên dưới. Sửa chúng trước khi thử gửi lại." #: order/templates/order/order_wizard/match_fields.html:29 #: order/templates/order/order_wizard/match_parts.html:21 @@ -5056,28 +5193,28 @@ msgstr "" #: part/templates/part/import_wizard/match_references.html:21 #: templates/patterns/wizard/match_fields.html:28 msgid "Submit Selections" -msgstr "" +msgstr "Gửi phần chọn" #: order/templates/order/order_wizard/match_fields.html:35 #: part/templates/part/import_wizard/ajax_match_fields.html:28 #: part/templates/part/import_wizard/match_fields.html:35 #: templates/patterns/wizard/match_fields.html:34 msgid "File Fields" -msgstr "" +msgstr "Các trường tập tin" #: order/templates/order/order_wizard/match_fields.html:42 #: part/templates/part/import_wizard/ajax_match_fields.html:35 #: part/templates/part/import_wizard/match_fields.html:42 #: templates/patterns/wizard/match_fields.html:41 msgid "Remove column" -msgstr "" +msgstr "Xóa cột" #: order/templates/order/order_wizard/match_fields.html:60 #: part/templates/part/import_wizard/ajax_match_fields.html:53 #: part/templates/part/import_wizard/match_fields.html:60 #: templates/patterns/wizard/match_fields.html:59 msgid "Duplicate selection" -msgstr "" +msgstr "Lựa chọn trùng lặp" #: order/templates/order/order_wizard/match_fields.html:71 #: order/templates/order/order_wizard/match_parts.html:52 @@ -5085,44 +5222,44 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" -msgstr "" +msgstr "Xóa hàng" #: order/templates/order/order_wizard/match_parts.html:12 #: part/templates/part/import_wizard/ajax_match_references.html:12 #: part/templates/part/import_wizard/match_references.html:12 msgid "Errors exist in the submitted data" -msgstr "" +msgstr "Lỗi xảy ra khi gửi thông tin" #: order/templates/order/order_wizard/match_parts.html:28 #: part/templates/part/import_wizard/ajax_match_references.html:21 #: part/templates/part/import_wizard/match_references.html:28 msgid "Row" -msgstr "" +msgstr "Dòng" #: order/templates/order/order_wizard/match_parts.html:29 msgid "Select Supplier Part" -msgstr "" +msgstr "Chọn sản phẩm nhà cung cấp" #: order/templates/order/order_wizard/po_upload.html:8 msgid "Return to Orders" -msgstr "" +msgstr "Trở lại đơn đặt" #: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" -msgstr "" +msgstr "Tải tệp tin lên đơn đặt mua" #: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." -msgstr "" +msgstr "Đơn đặt đã được xử lý. Không thể tải lên tệp tin." #: order/templates/order/order_wizard/po_upload.html:27 #: part/templates/part/import_wizard/ajax_part_upload.html:10 @@ -5130,7 +5267,7 @@ msgstr "" #: templates/patterns/wizard/upload.html:13 #, python-format msgid "Step %(step)s of %(count)s" -msgstr "" +msgstr "Bước %(step)s của %(count)s" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/return_order_detail.html:18 @@ -5139,3705 +5276,3992 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:19 #: report/templates/report/inventree_so_report_base.html:22 msgid "Line Items" -msgstr "" +msgstr "Mục dòng" #: order/templates/order/po_sidebar.html:7 msgid "Received Stock" -msgstr "" +msgstr "Kho đã nhận hàng" #: order/templates/order/purchase_order_detail.html:18 msgid "Purchase Order Items" -msgstr "" +msgstr "Hàng hóa đặt mua" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" -msgstr "" +msgstr "Thêm mục dòng" #: order/templates/order/purchase_order_detail.html:31 #: order/templates/order/purchase_order_detail.html:32 #: order/templates/order/return_order_detail.html:28 #: order/templates/order/return_order_detail.html:29 msgid "Receive Line Items" -msgstr "" +msgstr "Nhận mục dòng" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" -msgstr "" +msgstr "Dòng khác" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" -msgstr "" +msgstr "Thêm dòng khác" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" -msgstr "" +msgstr "Mục đã nhận" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" -msgstr "" +msgstr "Ghi chú đơn đặt" #: order/templates/order/return_order_base.html:18 #: order/templates/order/sales_order_base.html:18 msgid "Customer logo thumbnail" -msgstr "" +msgstr "Ảnh thu nhỏ logo khách hàng" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" -msgstr "" +msgstr "In báo cáo đơn hàng trả lại" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" -msgstr "" +msgstr "In danh sách đóng gói" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" -msgstr "" +msgstr "Mã khách hàng" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" -msgstr "" +msgstr "Tổng chi phí" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" -msgstr "" +msgstr "Mã QR đơn hàng trả lại" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" -msgstr "" +msgstr "Liên kết mã vạch với đơn hàng trả lại" #: order/templates/order/return_order_sidebar.html:5 msgid "Order Details" -msgstr "" +msgstr "Chi tiết đơn đặt" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" -msgstr "" +msgstr "In báo cáo đơn hàng bán" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" -msgstr "" +msgstr "Mục vận chuyển" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" -msgstr "" +msgstr "Hoàn thành đơn bán hàng" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" -msgstr "" +msgstr "Chưa phân bổ đầy đủ đơn bán hàng" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" -msgstr "" +msgstr "Vận đơn đã hoàn thành" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" -msgstr "" +msgstr "Mã QR đơn bán hàng" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" -msgstr "" +msgstr "Liên kết Mã vạch đến Đơn hàng bán" #: order/templates/order/sales_order_detail.html:18 msgid "Sales Order Items" -msgstr "" +msgstr "Hàng hóa đơn hàng bán" + +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 +msgid "Pending Shipments" +msgstr "Vận chuyển đang chờ xử lý" #: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 -msgid "Pending Shipments" -msgstr "" - -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" -msgstr "" +msgstr "Chức năng" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" -msgstr "" +msgstr "Lô hàng mới" #: order/views.py:120 msgid "Match Supplier Parts" -msgstr "" +msgstr "Khớp sản phẩm nhà cung cấp" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" -msgstr "" +msgstr "Đơn hàng bán không thấy" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" -msgstr "" +msgstr "Không tìm thấy giá" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" -msgstr "" +msgstr "Cập nhật {part} giá đơn vị đến {price}" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" -msgstr "" +msgstr "Cập nhật {part} giá đơn vị đến {price} và số lượng đến {qty}" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" -msgstr "" +msgstr "ID sản phẩm" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" -msgstr "" +msgstr "Tên sản phẩm" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" -msgstr "" +msgstr "Mô tả sản phẩm" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" -msgstr "" +msgstr "IPN" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" -msgstr "" +msgstr "Phiên bản" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" -msgstr "" +msgstr "Từ khóa" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" -msgstr "" +msgstr "ID danh mục" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" -msgstr "" +msgstr "Tên danh mục" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" -msgstr "" +msgstr "ID vị trí mặc định" #: part/admin.py:45 msgid "Default Supplier ID" -msgstr "" +msgstr "ID nhà cung ứng mặc định" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" -msgstr "" +msgstr "Biến thể của" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" -msgstr "" +msgstr "Kho tối thiểu" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" -msgstr "" +msgstr "Còn hàng" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" -msgstr "" +msgstr "Bật đơn hàng" #: part/admin.py:63 part/templates/part/part_sidebar.html:27 msgid "Used In" -msgstr "" +msgstr "Sử dụng trong" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" -msgstr "" +msgstr "Đang dựng" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" -msgstr "" +msgstr "Chi phí tối thiểu" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" -msgstr "" +msgstr "Chi phí tối đa" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" -msgstr "" +msgstr "ID cha" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" -msgstr "" +msgstr "Tên cha" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" -msgstr "" +msgstr "Đưỡng dẫn danh mục" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "Nguyên liệu" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" -msgstr "" +msgstr "Cấp độ BOM" + +#: part/admin.py:263 +msgid "BOM Item ID" +msgstr "ID hàng hóa BOM" #: part/admin.py:267 -msgid "BOM Item ID" -msgstr "" - -#: part/admin.py:271 msgid "Parent IPN" -msgstr "" +msgstr "IPN cha" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" -msgstr "" +msgstr "IPN sản phẩm" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" -msgstr "" +msgstr "Giá thấp nhất" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" -msgstr "" +msgstr "Giá cao nhất" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" -msgstr "" +msgstr "Đơn đặt mua vào" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" -msgstr "" +msgstr "Đơn hàng bán ra" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" -msgstr "" +msgstr "Kho sản xuất bởi Đơn đặt bản dựng" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" -msgstr "" +msgstr "Kho được yêu cầu cho đơn đặt bản dựng" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" -msgstr "" +msgstr "Hợp lệ" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" -msgstr "" +msgstr "Xác minh toàn bộ hóa đơn vật liệu" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" -msgstr "" +msgstr "Tùy chọn này phải được chọn" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" -msgstr "" +msgstr "Điểm bán mặc định" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" -msgstr "" +msgstr "Tổng số lượng" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" -msgstr "" +msgstr "Số hàng tồn" #: part/forms.py:48 msgid "Input quantity for price calculation" -msgstr "" +msgstr "Số lượng đầu ra cho tính toán giá bán" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" -msgstr "" +msgstr "Danh mục sản phẩm" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" -msgstr "" +msgstr "Danh mục sản phẩm" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" -msgstr "" +msgstr "Vị trí mặc định cho sản phẩm trong danh mục này" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" -msgstr "" +msgstr "Cấu trúc" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." -msgstr "" +msgstr "Hàng hóa không được gán trực tiếp vào danh mục có cấu trúc nhưng có thể được gán vào danh mục con." -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" -msgstr "" +msgstr "Từ khóa mặc định" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" -msgstr "" +msgstr "Từ khóa mặc định cho sản phẩm trong danh mục này" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" -msgstr "" +msgstr "Biểu tượng" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" -msgstr "" +msgstr "Biểu tượng (tùy chọn)" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" -msgstr "" +msgstr "Bạn không thể thay đổi cấu trúc nhóm sản phẩm này vì một số sản phẩm đã được gắn với nó rồi!" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" -msgstr "" +msgstr "Lựa chọn sai cho sản phẩm cha" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" -msgstr "" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "Không thể dùng sản phẩm '{self}' trong BOM cho '{parent}' (đệ quy)" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "Sản phẩm '{parent}' được dùng trong BOM cho '{self}' (đệ quy)" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "IPN phải phù hợp mẫu biểu thức chính quy {pattern}" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" -msgstr "" +msgstr "Hàng trong kho với số sê ri này đã tồn tại" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" -msgstr "" +msgstr "IPN trùng lặp không được cho phép trong thiết lập sản phẩm" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." -msgstr "" +msgstr "Sản phẩm với Tên, IPN và Duyệt lại đã tồn tại." -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" -msgstr "" +msgstr "Sản phẩm không thể được phân vào danh mục sản phẩm có cấu trúc!" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" -msgstr "" +msgstr "Tên sản phẩm" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" -msgstr "" +msgstr "Là Mẫu" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" -msgstr "" +msgstr "Sản phẩm này có phải là sản phẩm mẫu?" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" -msgstr "" +msgstr "Đây có phải là 1 biến thể của sản phẩm khác?" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" -msgstr "" +msgstr "Mô tả (không bắt buộc)" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" -msgstr "" +msgstr "Từ khóa sản phẩm để cải thiện sự hiện diện trong kết quả tìm kiếm" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" -msgstr "" +msgstr "Danh mục" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" -msgstr "" +msgstr "Danh mục sản phẩm" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" -msgstr "" +msgstr "Mã sản phẩm nội bộ" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" -msgstr "" +msgstr "Số phiên bản hoặc bản duyệt lại sản phẩm" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" -msgstr "" +msgstr "Hàng hóa này sẽ được cất vào đâu?" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" -msgstr "" +msgstr "Nhà cung ứng mặc định" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" -msgstr "" +msgstr "Nhà cung ứng sản phẩm mặc định" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" -msgstr "" +msgstr "Hết hạn mặc định" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" -msgstr "" +msgstr "Thời gian hết hạn (theo ngày) để nhập kho hàng hóa cho sản phẩm này" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" -msgstr "" +msgstr "Cấp độ kho tối thiểu được phép" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" -msgstr "" +msgstr "Đơn vị đo cho sản phẩm này" + +#: part/models.py:965 +msgid "Can this part be built from other parts?" +msgstr "Sản phẩm này có thể được dựng từ sản phẩm khác?" + +#: part/models.py:971 +msgid "Can this part be used to build other parts?" +msgstr "Sản phẩm này có thể dùng để dựng các sản phẩm khác?" + +#: part/models.py:977 +msgid "Does this part have tracking for unique items?" +msgstr "Sản phẩm này có đang theo dõi cho hàng hóa duy nhất?" + +#: part/models.py:982 +msgid "Can this part be purchased from external suppliers?" +msgstr "Sản phẩm này có thể mua được từ nhà cung ứng bên ngoài?" + +#: part/models.py:987 +msgid "Can this part be sold to customers?" +msgstr "Sản phẩm này có thể được bán cho khách hàng?" + +#: part/models.py:992 +msgid "Is this part active?" +msgstr "Sản phẩm này đang hoạt động?" #: part/models.py:997 -msgid "Can this part be built from other parts?" -msgstr "" +msgid "Is this a virtual part, such as a software product or license?" +msgstr "Đây là sản phẩm ảo, ví dụ như sản phẩm phần mềm hay bản quyền?" -#: part/models.py:1003 -msgid "Can this part be used to build other parts?" -msgstr "" +#: part/models.py:999 +msgid "BOM checksum" +msgstr "Giá trị tổng kiểm BOM" -#: part/models.py:1009 -msgid "Does this part have tracking for unique items?" -msgstr "" +#: part/models.py:999 +msgid "Stored BOM checksum" +msgstr "Giá trị tổng kiểm BOM đã được lưu" + +#: part/models.py:1002 +msgid "BOM checked by" +msgstr "BOM kiểm tra bởi" + +#: part/models.py:1004 +msgid "BOM checked date" +msgstr "Ngày kiểm tra BOM" + +#: part/models.py:1008 +msgid "Creation User" +msgstr "Tạo người dùng" #: part/models.py:1014 -msgid "Can this part be purchased from external suppliers?" -msgstr "" +msgid "Owner responsible for this part" +msgstr "Trách nhiệm chủ sở hữu cho sản phẩm này" -#: part/models.py:1019 -msgid "Can this part be sold to customers?" -msgstr "" - -#: part/models.py:1024 -msgid "Is this part active?" -msgstr "" - -#: part/models.py:1029 -msgid "Is this a virtual part, such as a software product or license?" -msgstr "" - -#: part/models.py:1031 -msgid "BOM checksum" -msgstr "" - -#: part/models.py:1031 -msgid "Stored BOM checksum" -msgstr "" - -#: part/models.py:1034 -msgid "BOM checked by" -msgstr "" - -#: part/models.py:1036 -msgid "BOM checked date" -msgstr "" - -#: part/models.py:1040 -msgid "Creation User" -msgstr "" - -#: part/models.py:1042 -msgid "User responsible for this part" -msgstr "" - -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" -msgstr "" +msgstr "Kiểm kê cuối cùng" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" -msgstr "" +msgstr "Bán nhiều" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" -msgstr "" +msgstr "Tiền được dùng để làm đệm tính toán giá bán" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" -msgstr "" +msgstr "Chi phí BOM tối thiểu" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" -msgstr "" +msgstr "Chi phí thành phần sản phẩm tối thiểu" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" -msgstr "" +msgstr "Chi phí BOM tối đa" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" -msgstr "" +msgstr "Chi phí thành phần sản phẩm tối đa" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" -msgstr "" +msgstr "Chi phí mua vào tối thiểu" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" -msgstr "" +msgstr "Chi phí mua vào tối thiểu trong lịch sử" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" -msgstr "" +msgstr "Chi phí mua tối đa" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" -msgstr "" +msgstr "Chi phí thành phần sản phẩm tối đa trong lịch sử" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" -msgstr "" +msgstr "Giá nội bộ tối thiểu" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" -msgstr "" +msgstr "Chi phí tối thiểu dựa trên phá vỡ giá nội bộ" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" -msgstr "" +msgstr "Giá nội bộ tối đa" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" -msgstr "" +msgstr "Chi phí tối đa dựa trên phá vỡ giá nội bộ" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" -msgstr "" +msgstr "Giá nhà cung ứng tối thiểu" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" -msgstr "" +msgstr "Giá sản phẩm tối thiểu từ nhà cung ứng bên ngoài" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" -msgstr "" +msgstr "Giá nhà cung ứng tối đa" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" -msgstr "" +msgstr "Giá sản phẩm tối đã từ nhà cung ứng bên ngoài" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" -msgstr "" +msgstr "Giá trị biến thể tối thiểu" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" -msgstr "" +msgstr "Chi phí tối thiểu của sản phẩm biến thể đã tính" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" -msgstr "" +msgstr "Chi phí biến thể tối đa" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" -msgstr "" +msgstr "Chi phí tối đa của sản phẩm biến thể đã tính" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" -msgstr "" +msgstr "Chi phí tối thiểu tính toán tổng thể" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" -msgstr "" +msgstr "Chi phí tối đa tính toán tổng thể" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" -msgstr "" +msgstr "Giá bán thấp nhất" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" -msgstr "" +msgstr "Giá bán tối thiểu dựa trên phá giá" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" -msgstr "" +msgstr "Giá bán cao nhất" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" -msgstr "" +msgstr "Giá bán cao nhất dựa trên phá giá" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" -msgstr "" +msgstr "Chi phí bán hàng tối thiểu" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" -msgstr "" +msgstr "Giá bán hàng tối thiểu trong lịch sử" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" -msgstr "" +msgstr "Giá bán hàng tối đa" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" -msgstr "" +msgstr "Giá bán hàng tối đa trong lịch sử" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" -msgstr "" +msgstr "Sản phẩm dành cho kiểm kê" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" -msgstr "" +msgstr "Tổng số hàng" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" -msgstr "" +msgstr "Số mục kho độc lậo tại thời điểm kiểm kê" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" -msgstr "" +msgstr "Tống số kho tại thời điểm kiểm kê" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" -msgstr "" +msgstr "Ngày" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" -msgstr "" +msgstr "Kiểm kê đã thực hiện" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" -msgstr "" +msgstr "Ghi chú bổ sung" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" -msgstr "" +msgstr "Người dùng đã thực hiện đợt kiểm kê này" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" -msgstr "" +msgstr "Chi phí kho tối thiểu" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" -msgstr "" +msgstr "Chi phí kho tối thiểu ước tính của kho đang có" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" -msgstr "" +msgstr "Chi phí kho tối đa" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" -msgstr "" +msgstr "Chi phí kho tối đa ước tính của kho đang có" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" -msgstr "" +msgstr "Báo cáo" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" -msgstr "" +msgstr "Tệp báo cáo kiểm kê (được sinh nội bộ)" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" -msgstr "" +msgstr "Bộ đếm sản phẩm" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" -msgstr "" +msgstr "Số sản phẩm đã được bao quát bởi kiểm kê" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" -msgstr "" +msgstr "Người dùng đã yêu cầu báo cáo kiểm kê này" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" -msgstr "" +msgstr "Chỉ có thể tạo mẫu kiểm thử cho sản phẩm có thể theo dõi" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" -msgstr "" +msgstr "Kiểm thử với tên này đã tồn tại cho sản phẩm này" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" -msgstr "" +msgstr "Tên kiểm thử" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" -msgstr "" - -#: part/models.py:3281 -msgid "Test Description" -msgstr "" +msgstr "Nhập tên cho kiểm thử" #: part/models.py:3282 +msgid "Test Description" +msgstr "Mô tả kiểm thử" + +#: part/models.py:3283 msgid "Enter description for this test" -msgstr "" +msgstr "Nhập mô tả cho kiểm thử này" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" -msgstr "" +msgstr "Bắt buộc" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" -msgstr "" +msgstr "Kiểm thử này bắt buộc phải đạt?" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" -msgstr "" +msgstr "Giá trị bắt buộc" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" -msgstr "" +msgstr "Kiểm thử này yêu cầu 1 giá trị khi thêm một kết quả kiểm thử?" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" -msgstr "" +msgstr "Yêu cầu đính kèm" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" -msgstr "" +msgstr "Kiểm thử này yêu cầu tệp đính kèm khi thêm một kết quả kiểm thử?" #: part/models.py:3346 msgid "Checkbox parameters cannot have units" -msgstr "" +msgstr "Tham số hộp kiểm tra không thể có đơn vị" #: part/models.py:3351 msgid "Checkbox parameters cannot have choices" -msgstr "" +msgstr "Tham số hộp kiểm tra không thể có lựa chọn" #: part/models.py:3369 msgid "Choices must be unique" -msgstr "" +msgstr "Lựa chọn phải duy nhất" #: part/models.py:3385 msgid "Parameter template name must be unique" -msgstr "" +msgstr "Tên tham số mẫu phải là duy nhất" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" -msgstr "" +msgstr "Tên tham số" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" -msgstr "" +msgstr "Đơn vị vật lý cho tham số này" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" -msgstr "" +msgstr "Mô tả tham số" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" -msgstr "" +msgstr "Ô lựa chọn" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" -msgstr "" +msgstr "Tham số này có phải là hộp kiểm tra?" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" -msgstr "" +msgstr "Lựa chọn" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" -msgstr "" +msgstr "Lựa chọn hợp lệ từ tham số này (ngăn cách bằng dấu phẩy)" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" -msgstr "" +msgstr "Lựa chọn sai cho giá trị tham số" + +#: part/models.py:3545 +msgid "Parent Part" +msgstr "Sản phẩm cha" + +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 +msgid "Parameter Template" +msgstr "Mẫu tham số" #: part/models.py:3555 -msgid "Parent Part" -msgstr "" - -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 -msgid "Parameter Template" -msgstr "" - -#: part/models.py:3565 msgid "Data" -msgstr "" +msgstr "Dữ liệu" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" -msgstr "" +msgstr "Giá trị tham số" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" -msgstr "" +msgstr "Giá trị mặc định" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" -msgstr "" - -#: part/models.py:3664 -msgid "Part ID or part name" -msgstr "" +msgstr "Giá trị tham số mặc định" #: part/models.py:3668 +msgid "Part ID or part name" +msgstr "Tên hoặc mã sản phẩm" + +#: part/models.py:3672 msgid "Unique part ID value" -msgstr "" - -#: part/models.py:3676 -msgid "Part IPN value" -msgstr "" - -#: part/models.py:3679 -msgid "Level" -msgstr "" +msgstr "Giá trị mã sản phẩm duy nhất" #: part/models.py:3680 +msgid "Part IPN value" +msgstr "Giá trị IPN sản phẩm" + +#: part/models.py:3683 +msgid "Level" +msgstr "Cấp độ" + +#: part/models.py:3684 msgid "BOM level" -msgstr "" +msgstr "Cấp độ BOM" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "Mục BOM" + +#: part/models.py:3771 msgid "Select parent part" -msgstr "" - -#: part/models.py:3772 -msgid "Sub part" -msgstr "" - -#: part/models.py:3773 -msgid "Select part to be used in BOM" -msgstr "" +msgstr "Chọn sản phẩm cha" #: part/models.py:3779 +msgid "Sub part" +msgstr "Sản phẩm phụ" + +#: part/models.py:3780 +msgid "Select part to be used in BOM" +msgstr "Chọn sản phẩm được dùng trong BOM" + +#: part/models.py:3786 msgid "BOM quantity for this BOM item" -msgstr "" +msgstr "Số lượng BOM cho mục BOM này" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" -msgstr "" +msgstr "Mục BOM này là tùy chọn" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" -msgstr "" +msgstr "Mục BOM này bị tiêu hao (không được theo dõi trong đơn đặt bản dựng)" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" -msgstr "" +msgstr "Dư thừa" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" -msgstr "" +msgstr "Số lượng bản dựng lãng phí ước tính (tuyệt đối hoặc phần trăm)" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" -msgstr "" +msgstr "Tham chiếu mục BOM" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" -msgstr "" +msgstr "Ghi chú mục BOM" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" -msgstr "" +msgstr "Giá trị tổng kiểm" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" -msgstr "" +msgstr "Giá trị tổng kiểm dòng BOM" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" -msgstr "" +msgstr "Đã xác minh" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" -msgstr "" +msgstr "Mục BOM này là hợp lệ" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 part/templates/part/upload_bom.html:57 +#: templates/js/translated/bom.js:1054 +#: templates/js/translated/table_filters.js:178 +#: templates/js/translated/table_filters.js:211 msgid "Gets inherited" -msgstr "" +msgstr "Nhận thừa hưởng" -#: part/models.py:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" -msgstr "" +msgstr "Mục BOM này được thừa kế bởi BOM cho sản phẩm biến thể" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" -msgstr "" +msgstr "Cho phép biến thể" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" -msgstr "" +msgstr "Hàng trong kho cho sản phẩm biến thể có thể được dùng bởi mục BOM này" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" -msgstr "" +msgstr "Số lượng phải là giá trị nguyên dùng cho sản phẩm có thể theo dõi được" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" -msgstr "" +msgstr "Sản phẩm phụ phải được chỉ định" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" -msgstr "" +msgstr "Sảm phẩm thay thế mục BOM" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" -msgstr "" +msgstr "Sản phẩm thay thế không thể giống sản phẩm chủ đạo" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" -msgstr "" +msgstr "Hàng hóa BOM cha" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" -msgstr "" +msgstr "Sản phẩm thay thế" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" -msgstr "" +msgstr "Sản phẩm 1" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" -msgstr "" +msgstr "Sản phẩm 2" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" -msgstr "" +msgstr "Chọn sản phẩm liên quan" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" -msgstr "" +msgstr "Không thể tạo mối quan hệ giữa một sản phẩm và chính nó" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" -msgstr "" +msgstr "Đã tồn tại mối quan hệ trùng lặp" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" -msgstr "" +msgstr "Loại tiền mua hàng của hàng hóa này" -#: part/serializers.py:302 +#: part/serializers.py:346 +msgid "No parts selected" +msgstr "Chưa chọn sản phẩm" + +#: part/serializers.py:354 +msgid "Select category" +msgstr "Chọn danh mục" + +#: part/serializers.py:384 msgid "Original Part" -msgstr "" +msgstr "Sản phẩm gốc" -#: part/serializers.py:302 +#: part/serializers.py:384 msgid "Select original part to duplicate" -msgstr "" +msgstr "Chọn sản phẩm gốc để nhân bản" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy Image" -msgstr "" +msgstr "Sao chép ảnh" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy image from original part" -msgstr "" +msgstr "Sao chép hình ảnh từ sản phẩm gốc" -#: part/serializers.py:312 part/templates/part/detail.html:296 +#: part/serializers.py:394 part/templates/part/detail.html:277 msgid "Copy BOM" -msgstr "" +msgstr "Sao chép BOM" -#: part/serializers.py:312 +#: part/serializers.py:394 msgid "Copy bill of materials from original part" -msgstr "" +msgstr "Sao chép định mức nguyên vật liệu từ sản phẩm gốc" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy Parameters" msgstr "Sao chép thông số" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy parameter data from original part" -msgstr "" +msgstr "Sao chép thông tin tham số từ sản phẩm gốc" -#: part/serializers.py:327 +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "Sao chép ghi chú" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "Sao chép ghi chú từ sản phẩm gốc" + +#: part/serializers.py:414 msgid "Initial Stock Quantity" -msgstr "" +msgstr "Số liệu tồn kho ban đầu" -#: part/serializers.py:327 +#: part/serializers.py:414 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" +msgstr "Chỉ ra số lượng tồn kho ban đầu cho sản phẩm. Nếu điền là không, không thêm kho nào." -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Initial Stock Location" -msgstr "" +msgstr "Vị trí kho ban đầu" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Specify initial stock location for this Part" -msgstr "" +msgstr "Chỉ định vị trí kho ban đầu cho sản phẩm này" -#: part/serializers.py:343 +#: part/serializers.py:430 msgid "Select supplier (or leave blank to skip)" -msgstr "" +msgstr "Chọn nhà cung cấp (hoặc để trống để bỏ qua)" -#: part/serializers.py:354 +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" -msgstr "" +msgstr "Chọn nhà sản xuất (hoặc để trống để bỏ qua)" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" -msgstr "" +msgstr "Mã số nhà sản xuất" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" -msgstr "" +msgstr "Công ty đã chọn không phải là nhà cung ứng hợp lệ" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" -msgstr "" +msgstr "Công ty đã chọn không phải là nhà sản xuất hợp lệ" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" -msgstr "" +msgstr "Mã số nhà sản xuất khớp với MPN này đã tồn tại" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" -msgstr "" +msgstr "Mã số nhà cung cấp khớp với SKU này đã tồn tại" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" -msgstr "" +msgstr "Nhân bản sản phẩm" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" -msgstr "" +msgstr "Sao chép dữ liệu ban đầu từ sản phẩm khác" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" -msgstr "" +msgstr "Số liệu kho ban đầu" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" -msgstr "" +msgstr "Tạo sản phẩm với số lượng tồn kho ban đầu" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" -msgstr "" +msgstr "Thông tin nhà cung cấp" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" -msgstr "" +msgstr "Thêm thông tin nhà cung cấp ban đầu cho sản phẩm này" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "Sao chép thông số nhóm hàng" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" -msgstr "" +msgstr "Sao chép mẫu tham số từ nhóm sản phẩm được chọn" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" -msgstr "" +msgstr "Hạn chế báo cáo kiểm kê với sản phẩm riêng biệt và sản phẩm biến thể bất kỳ" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" -msgstr "" +msgstr "Hạn chế báo cáo kiểm kê với danh mục sản phẩm riêng biệt và danh mục con bất kỳ" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" -msgstr "" +msgstr "Hạn chế báo cáo kiểm kê với vị trí kho riêng biệt và vị trí con bất kỳ" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "Ngoại trừ kho bên ngoài" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "Loại trừ hàng trong kho của vị trí bên ngoài" + +#: part/serializers.py:984 msgid "Generate Report" -msgstr "" +msgstr "Tạo báo cáo" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" -msgstr "" +msgstr "Tạo tệp báo cáo chứa dữ liệu kiểm kê đã tính toán" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" -msgstr "" +msgstr "Cập nhật sản phẩm" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" -msgstr "" +msgstr "Cập nhật sản phẩm cụ thể với dữ liệu kiểm kê đã tính" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" -msgstr "" +msgstr "Chức năng kiểm kê chưa được bật" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" -msgstr "" +msgstr "Cập nhật" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" -msgstr "" +msgstr "Cập nhật giá cho sản phẩm này" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" -msgstr "" +msgstr "Chọn sản phẩm để sao chép định mức nguyên vật liệu" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" -msgstr "" +msgstr "Xóa dữ liệu đã tồn tại" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" -msgstr "" +msgstr "Xóa mục BOM đã tồn tại trước khi sao chép" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" -msgstr "" - -#: part/serializers.py:1261 -msgid "Include BOM items which are inherited from templated parts" -msgstr "" - -#: part/serializers.py:1266 -msgid "Skip Invalid Rows" -msgstr "" - -#: part/serializers.py:1267 -msgid "Enable this option to skip invalid rows" -msgstr "" - -#: part/serializers.py:1272 -msgid "Copy Substitute Parts" -msgstr "" - -#: part/serializers.py:1273 -msgid "Copy substitute parts when duplicate BOM items" -msgstr "" - -#: part/serializers.py:1313 -msgid "Clear Existing BOM" -msgstr "" - -#: part/serializers.py:1314 -msgid "Delete existing BOM items before uploading" -msgstr "" - -#: part/serializers.py:1344 -msgid "No part column specified" -msgstr "" - -#: part/serializers.py:1387 -msgid "Multiple matching parts found" -msgstr "" - -#: part/serializers.py:1390 -msgid "No matching part found" -msgstr "" - -#: part/serializers.py:1393 -msgid "Part is not designated as a component" -msgstr "" - -#: part/serializers.py:1402 -msgid "Quantity not provided" -msgstr "" +msgstr "Bao gồm thừa hưởng" #: part/serializers.py:1410 +msgid "Include BOM items which are inherited from templated parts" +msgstr "Bao gồm mục BOM được thừa hưởng từ sản phẩm mẫu" + +#: part/serializers.py:1415 +msgid "Skip Invalid Rows" +msgstr "Bỏ qua dòng không hợp lệ" + +#: part/serializers.py:1416 +msgid "Enable this option to skip invalid rows" +msgstr "Bật tùy chọn này để bỏ qua dòng không hợp lệ" + +#: part/serializers.py:1421 +msgid "Copy Substitute Parts" +msgstr "Sao chép sản phẩm thay thế" + +#: part/serializers.py:1422 +msgid "Copy substitute parts when duplicate BOM items" +msgstr "Sao chép sản phẩm thay thế khi nhân bản hàng hóa BOM" + +#: part/serializers.py:1462 +msgid "Clear Existing BOM" +msgstr "Dọn dẹp BOM đang tồn tại" + +#: part/serializers.py:1463 +msgid "Delete existing BOM items before uploading" +msgstr "Xóa mục BOM đang tồn tại trước khi tải lên" + +#: part/serializers.py:1493 +msgid "No part column specified" +msgstr "Chưa chỉ ra cột sản phẩm" + +#: part/serializers.py:1537 +msgid "Multiple matching parts found" +msgstr "Tìm thấy nhiều sản phẩm phù hợp" + +#: part/serializers.py:1540 +msgid "No matching part found" +msgstr "Không tìm thấy sản phẩm nào" + +#: part/serializers.py:1543 +msgid "Part is not designated as a component" +msgstr "Sản phẩm không được chỉ định như là một thành phần" + +#: part/serializers.py:1552 +msgid "Quantity not provided" +msgstr "Chưa cung cấp số lượng" + +#: part/serializers.py:1560 msgid "Invalid quantity" -msgstr "" +msgstr "Số lượng không hợp lệ" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" -msgstr "" +msgstr "Buộc phải nhập ít nhất một mục BOM" -#: part/tasks.py:39 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 +msgid "Total Quantity" +msgstr "Tổng số lượng" + +#: part/stocktake.py:224 +msgid "Total Cost Min" +msgstr "Tổng chi phí tối thiểu" + +#: part/stocktake.py:225 +msgid "Total Cost Max" +msgstr "Tổng chi phí tối đa" + +#: part/stocktake.py:289 +msgid "Stocktake Report Available" +msgstr "Báo cáo kiểm kê có sẵn" + +#: part/stocktake.py:290 +msgid "A new stocktake report is available for download" +msgstr "Có sẵn một báo cáo kiểm kê mới để tải về" + +#: part/tasks.py:33 msgid "Low stock notification" -msgstr "" +msgstr "Thông báo sắp hết hàng" -#: part/tasks.py:40 +#: part/tasks.py:34 #, python-brace-format msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 -msgid "Total Quantity" -msgstr "" - -#: part/tasks.py:295 -msgid "Total Cost Min" -msgstr "" - -#: part/tasks.py:296 -msgid "Total Cost Max" -msgstr "" - -#: part/tasks.py:360 -msgid "Stocktake Report Available" -msgstr "" - -#: part/tasks.py:361 -msgid "A new stocktake report is available for download" -msgstr "" +msgstr "Kho có sẵn cho {part.name} đã mất dưới mức cấu hình tối thiểu" #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." -msgstr "" +msgstr "Bạn không có quyền chỉnh sửa định mức vật liệu." #: part/templates/part/bom.html:15 msgid "The BOM this part has been changed, and must be validated" -msgstr "" +msgstr "BOM sản phẩm này đã được thay đổi và phải được xác minh" #: part/templates/part/bom.html:17 #, python-format msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s" -msgstr "" +msgstr "BOM cho %(part)s đã được kiểm tra lần cuối bởi %(checker)s vào %(check_date)s" #: part/templates/part/bom.html:21 #, python-format msgid "The BOM for %(part)s has not been validated." -msgstr "" +msgstr "BOM cho %(part)s chưa được xác minh." -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" -msgstr "" +msgstr "Thực hiện kiểm kê cho danh mục hàng hóa này" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" -msgstr "" +msgstr "Bạn đã được đăng ký nhận thông báo cho danh mục này" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" -msgstr "" +msgstr "Đăng ký nhận thông báo cho danh mục này" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" -msgstr "" - -#: part/templates/part/category.html:59 -msgid "Edit category" -msgstr "" +msgstr "Chức năng danh mục" #: part/templates/part/category.html:60 -msgid "Edit Category" -msgstr "" +msgid "Edit category" +msgstr "Sửa danh mục" -#: part/templates/part/category.html:64 -msgid "Delete category" -msgstr "" +#: part/templates/part/category.html:61 +msgid "Edit Category" +msgstr "Sửa danh mục" #: part/templates/part/category.html:65 +msgid "Delete category" +msgstr "Xóa danh mục" + +#: part/templates/part/category.html:66 msgid "Delete Category" -msgstr "" +msgstr "Xóa danh mục" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" -msgstr "" +msgstr "Danh mục sản phẩm cấp đầu" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" -msgstr "" +msgstr "Phụ mục" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" -msgstr "" +msgstr "Sản phẩm (bao gồm các phụ mục)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" -msgstr "" +msgstr "Tạo sản phẩm mới" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" -msgstr "" +msgstr "Sản phẩm mới" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "Thông số phụ tùng" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" -msgstr "" +msgstr "Thêm danh mục sản phẩm mới" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" -msgstr "" +msgstr "Danh mục mới" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" -msgstr "" +msgstr "Nhập sản phẩm" #: part/templates/part/copy_part.html:10 #, python-format msgid "Make a copy of part '%(full_name)s'." -msgstr "" +msgstr "Tạo bản sao của sản phẩm '%(full_name)s'." #: part/templates/part/copy_part.html:14 #: part/templates/part/create_part.html:11 msgid "Possible Matching Parts" -msgstr "" +msgstr "Các sản phẩm có thể khớp" #: part/templates/part/copy_part.html:15 #: part/templates/part/create_part.html:12 msgid "The new part may be a duplicate of these existing parts" -msgstr "" +msgstr "Sản phẩm mới có thể trùng với sản phẩm đã tồn tại" #: part/templates/part/create_part.html:17 #, python-format msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" -msgstr "" +msgstr "%(full_name)s - %(desc)s (%(match_per)s%% phù hợp)" #: part/templates/part/detail.html:20 msgid "Part Stock" -msgstr "" +msgstr "Kho hàng" #: part/templates/part/detail.html:44 msgid "Refresh scheduling data" -msgstr "" +msgstr "Làm mới dữ liệu đã lên lịch" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" -msgstr "" +msgstr "Làm mới" #: part/templates/part/detail.html:66 msgid "Add stocktake information" -msgstr "" +msgstr "Thêm thông tin kiểm kê" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" -msgstr "" +msgstr "Kiểm kê" #: part/templates/part/detail.html:83 msgid "Part Test Templates" -msgstr "" +msgstr "Mẫu kiểm thử sản phẩm" #: part/templates/part/detail.html:88 msgid "Add Test Template" -msgstr "" +msgstr "Thêm mẫu kiểm thử" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" -msgstr "" +msgstr "Phân bổ đơn hàng bán" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" -msgstr "" +msgstr "Ghi chú sản phẩm" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" -msgstr "" +msgstr "Biến thể sản phẩm" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" -msgstr "" +msgstr "Tạo biến thể mới" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" -msgstr "" +msgstr "Biến thể mới" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" -msgstr "" +msgstr "Thêm tham số mới" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" -msgstr "" +msgstr "Sản phẩm liên quan" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" -msgstr "" +msgstr "Thêm liên quan" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" -msgstr "" +msgstr "Hóa đơn nguyên vật liệu" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" -msgstr "" +msgstr "Chức năng xuất dữ liệu" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" -msgstr "" +msgstr "Xuất BOM" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" -msgstr "" +msgstr "Báo cáo in BOM" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "Chức năng BOM" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" -msgstr "" +msgstr "Tải lên BOM" + +#: part/templates/part/detail.html:278 +msgid "Validate BOM" +msgstr "Xác minh BOM" + +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +msgid "Add BOM Item" +msgstr "Thêm mục BOM" #: part/templates/part/detail.html:297 -msgid "Validate BOM" -msgstr "" - -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 -msgid "Add BOM Item" -msgstr "" - -#: part/templates/part/detail.html:316 msgid "Assemblies" -msgstr "" +msgstr "Lắp ráp" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" -msgstr "" +msgstr "Bản dựng sản phẩm" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" -msgstr "" +msgstr "Phân bổ đơn hàng bản dựng" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" -msgstr "" +msgstr "Nhà cung cấp sản phẩm" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" -msgstr "" +msgstr "Nhà sản xuất sản phẩm" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" -msgstr "" +msgstr "Sản phẩm liên quan" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" -msgstr "" +msgstr "Thêm sản phẩm liên quan" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" -msgstr "" +msgstr "Thêm mẫu kết quả kiểm thử" #: part/templates/part/import_wizard/ajax_part_upload.html:29 #: part/templates/part/import_wizard/part_upload.html:14 msgid "Insufficient privileges." -msgstr "" +msgstr "Không đủ quyền truy cập." #: part/templates/part/import_wizard/part_upload.html:8 msgid "Return to Parts" -msgstr "" +msgstr "Quay lại sản phẩm" #: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" -msgstr "" +msgstr "Nhập sản phẩm từ tệp tin" #: part/templates/part/import_wizard/part_upload.html:31 msgid "Requirements for part import" -msgstr "" +msgstr "Yêu cầu cho nhập liệu sản phẩm" #: part/templates/part/import_wizard/part_upload.html:33 msgid "The part import file must contain the required named columns as provided in the " -msgstr "" +msgstr "Tệp nhập liệu sản phẩm phải chứa tên cột được cung cấp trong " #: part/templates/part/import_wizard/part_upload.html:33 msgid "Part Import Template" -msgstr "" +msgstr "Mẫu nhập liệu sản phẩm" #: part/templates/part/import_wizard/part_upload.html:89 msgid "Download Part Import Template" -msgstr "" +msgstr "Tải về mẫu nhập liệu sản phẩm" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: 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 "Định dạng" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" -msgstr "" +msgstr "Chọn định dạng tệp" #: part/templates/part/part_app_base.html:12 msgid "Part List" -msgstr "" +msgstr "Danh sách sản phẩm" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" -msgstr "" +msgstr "Bạn đã đăng ký nhận thông báo về sản phẩm này" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" -msgstr "" +msgstr "Đăng ký nhận thông báo về sản phẩm này" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" -msgstr "" +msgstr "In tem nhãn" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" -msgstr "" +msgstr "Hiện thông tin giá cả" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" -msgstr "" +msgstr "Chức năng kho" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" -msgstr "" +msgstr "Đếm kho sản phẩm" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" -msgstr "" +msgstr "Chuyển kho sản phẩm" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" -msgstr "" +msgstr "Chức năng sản phẩm" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" -msgstr "" +msgstr "Nhân bản sản phẩm" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" -msgstr "" +msgstr "Sửa sản phẩm" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" -msgstr "" +msgstr "Xóa sản phẩm" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" -msgstr "" +msgstr "Sản phẩm là một mẫu (biến thể có thể được làm từ sản phẩm này)" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" -msgstr "" +msgstr "Sản phẩm có thể được lắp ráp từ sản phẩm khác" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" -msgstr "" +msgstr "Sản phẩm được dùng để lắp ráp" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" -msgstr "" +msgstr "Kho sản phẩm được theo dõi bởi số sê ri" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" -msgstr "" +msgstr "Có thể mua sản phẩm từ nhà cung cấp bên ngoài" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" -msgstr "" +msgstr "Có thể bán sản phẩm cho khách hàng" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" -msgstr "" +msgstr "Sản phẩm bị tắt" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" -msgstr "" +msgstr "Không hoạt động" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" -msgstr "" +msgstr "Sản phẩm là ảo (không phải sản phẩm vật lý)" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" -msgstr "" +msgstr "Chi tiết giá sản phẩm" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" -msgstr "" +msgstr "Phân bổ đến đơn đặt bản dựng" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" -msgstr "" +msgstr "Phân bổ đến đơn bán hàng" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" -msgstr "" +msgstr "Có thể dựng" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" -msgstr "" +msgstr "Cấp kho tối thiểu" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" -msgstr "" +msgstr "Khoảng giá" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "Số seri mới nhất" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" -msgstr "" +msgstr "Tìm kiếm cho số sê ri" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" -msgstr "" +msgstr "Mã QR sản phẩm" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" -msgstr "" +msgstr "Liên kết mã vạch đến sản phẩm" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" -msgstr "" +msgstr "sản phẩm" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" -msgstr "" +msgstr "Tính toán" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" -msgstr "" +msgstr "Xóa hình ảnh gắn kết với sản phẩm này" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" -msgstr "" +msgstr "Không tìm thấy hình ảnh phù hợp" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" -msgstr "" +msgstr "Ẩn chi tiết sản phẩm" #: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:73 #: part/templates/part/prices.html:216 templates/js/translated/pricing.js:485 msgid "Supplier Pricing" -msgstr "" +msgstr "Giá bán nhà cung cấp" #: part/templates/part/part_pricing.html:26 #: part/templates/part/part_pricing.html:52 #: part/templates/part/part_pricing.html:95 #: part/templates/part/part_pricing.html:110 msgid "Unit Cost" -msgstr "" +msgstr "Chi phí đơn vị" #: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" -msgstr "" +msgstr "Chưa có sẵn giá cả nhà cung cấp" #: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:87 #: part/templates/part/prices.html:239 msgid "BOM Pricing" -msgstr "" +msgstr "Giá cả BOM" #: part/templates/part/part_pricing.html:66 msgid "Unit Purchase Price" -msgstr "" +msgstr "Giá mua hàng" #: part/templates/part/part_pricing.html:72 msgid "Total Purchase Price" -msgstr "" +msgstr "Tổng giá mua vào" #: part/templates/part/part_pricing.html:83 msgid "No BOM pricing available" -msgstr "" +msgstr "Chưa có giá cả BOM" #: part/templates/part/part_pricing.html:92 msgid "Internal Price" -msgstr "" +msgstr "Giá nội bộ" #: part/templates/part/part_pricing.html:123 msgid "No pricing information is available for this part." -msgstr "" +msgstr "Chưa có thông tin giá cho sản phẩm này." #: part/templates/part/part_scheduling.html:14 msgid "Scheduled Quantity" -msgstr "" +msgstr "Số lượng theo lịch" #: part/templates/part/part_sidebar.html:11 msgid "Variants" -msgstr "" +msgstr "Biến thể" #: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "Kiện hàng" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" -msgstr "" +msgstr "Định giá" #: part/templates/part/part_sidebar.html:44 msgid "Scheduling" -msgstr "" +msgstr "Lập lịch" #: part/templates/part/part_sidebar.html:54 msgid "Test Templates" -msgstr "" +msgstr "Mẫu thử nghiệm" #: part/templates/part/part_thumb.html:11 msgid "Select from existing images" -msgstr "" +msgstr "Chọn hình ảnh có sẵn" #: part/templates/part/prices.html:11 msgid "Pricing Overview" -msgstr "" +msgstr "Tóm lược định giá" #: part/templates/part/prices.html:14 msgid "Refresh Part Pricing" -msgstr "" +msgstr "Làm mới giá sản phẩm" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" -msgstr "" +msgstr "Cập nhật lần cuối" #: part/templates/part/prices.html:34 part/templates/part/prices.html:116 msgid "Price Category" -msgstr "" +msgstr "Danh mục giá" #: part/templates/part/prices.html:35 part/templates/part/prices.html:117 msgid "Minimum" -msgstr "" +msgstr "Tối thiểu" #: part/templates/part/prices.html:36 part/templates/part/prices.html:118 msgid "Maximum" -msgstr "" +msgstr "Tối đa" #: part/templates/part/prices.html:48 part/templates/part/prices.html:163 msgid "Internal Pricing" -msgstr "" +msgstr "Định giá nội bộ" #: part/templates/part/prices.html:61 part/templates/part/prices.html:195 msgid "Purchase History" -msgstr "" +msgstr "Lịch sử mua hàng" #: part/templates/part/prices.html:95 part/templates/part/prices.html:263 msgid "Variant Pricing" -msgstr "" +msgstr "Định giá biến thể" #: part/templates/part/prices.html:102 msgid "Overall Pricing" -msgstr "" +msgstr "Định giá tổng thể" #: part/templates/part/prices.html:138 part/templates/part/prices.html:315 msgid "Sale History" -msgstr "" +msgstr "Lịch Sử Giao Dịch" #: part/templates/part/prices.html:146 msgid "Sale price data is not available for this part" -msgstr "" +msgstr "Chưa có dữ liệu giá giao dịch cho sản phẩm này" #: part/templates/part/prices.html:153 msgid "Price range data is not available for this part." -msgstr "" +msgstr "Dữ liệu khoảng giá không có sẵn cho sản phẩm này." #: part/templates/part/prices.html:164 part/templates/part/prices.html:196 #: part/templates/part/prices.html:217 part/templates/part/prices.html:240 #: part/templates/part/prices.html:264 part/templates/part/prices.html:287 #: part/templates/part/prices.html:316 msgid "Jump to overview" -msgstr "" +msgstr "Chuyển tới tổng quan" #: part/templates/part/prices.html:169 msgid "Add Internal Price Break" -msgstr "" +msgstr "Thêm phá giá nội bộ" #: part/templates/part/prices.html:286 msgid "Sale Pricing" -msgstr "" +msgstr "Định giá bán hàng" #: part/templates/part/prices.html:292 msgid "Add Sell Price Break" -msgstr "" +msgstr "Thêm định giá bán hàng" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" -msgstr "" +msgstr "Hết hàng" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "Hàng còn ít" #: part/templates/part/upload_bom.html:8 msgid "Return to BOM" -msgstr "" +msgstr "Quay lại BOM" #: part/templates/part/upload_bom.html:13 msgid "Upload Bill of Materials" -msgstr "" +msgstr "Tải lên hóa đơn bán hàng" #: part/templates/part/upload_bom.html:19 msgid "BOM upload requirements" -msgstr "" +msgstr "Yêu cầu tải lên BOM" #: part/templates/part/upload_bom.html:23 #: part/templates/part/upload_bom.html:90 msgid "Upload BOM File" -msgstr "" +msgstr "Tải lên tập tin BOM" #: part/templates/part/upload_bom.html:29 msgid "Submit BOM Data" -msgstr "" +msgstr "Gửi dữ liệu BOM" #: part/templates/part/upload_bom.html:37 msgid "Requirements for BOM upload" -msgstr "" +msgstr "Yêu cầu tải lên BOM" #: part/templates/part/upload_bom.html:39 msgid "The BOM file must contain the required named columns as provided in the " -msgstr "" +msgstr "Tệp tin BOM phải chứa cột được đặt tên theo quy định trong " #: part/templates/part/upload_bom.html:39 msgid "BOM Upload Template" -msgstr "" +msgstr "Mẫu tải lên BOM" #: part/templates/part/upload_bom.html:40 msgid "Each part must already exist in the database" -msgstr "" +msgstr "Mỗi sản phẩm phải tồn tại trong cơ sở dữ liệu" #: part/templates/part/variant_part.html:9 msgid "Create new part variant" -msgstr "" +msgstr "Tạo biến thể sản phẩm mới" #: part/templates/part/variant_part.html:10 msgid "Create a new variant part from this template" -msgstr "" +msgstr "Tạo sản phẩm biến thể mới từ mẫu này" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" -msgstr "" +msgstr "Không rõ cơ sở dữ liệu" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" -msgstr "" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" +msgstr "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" #: part/views.py:110 msgid "Match References" -msgstr "" +msgstr "Tham chiếu phù hợp" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" -msgstr "" +msgid "Can't import part {new_part.name} because there is no category assigned" +msgstr "Không thể nhập sản phẩm {new_part.name} bởi vì không có nhóm nào được gán" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" -msgstr "" +msgstr "Chọn ảnh sản phẩm" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" -msgstr "" +msgstr "Cập nhật ảnh sản phẩm" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" -msgstr "" +msgstr "Không tìm thấy ảnh sản phẩm" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" -msgstr "" +msgstr "Định giá sản phẩm" #: plugin/base/action/api.py:27 msgid "No action specified" -msgstr "" +msgstr "Chưa chỉ ra hành động cụ thể" #: plugin/base/action/api.py:38 msgid "No matching action found" -msgstr "" +msgstr "Không tìm thấy chức năng phù hợp" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" -msgstr "" +msgstr "Sai dữ liệu mã vạch" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" -msgstr "" +msgstr "Không tìm thấy dữ liệu mã vạch phù hợp" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" -msgstr "" +msgstr "Đã tìm thấy dữ liệu mã vạch phù hợp" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" -msgstr "" +msgstr "Mã vạch phù hợp với hàng hóa hiện có" #: plugin/base/barcodes/api.py:217 msgid "No match found for provided value" -msgstr "" +msgstr "Không tìm thấy dữ liệu phù hợp với dữ liệu được cung cấp" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "Đơn đặt mua không hợp lệ" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "Vị trí kho không hợp lệ" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "Hàng hóa này đã được nhận" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "Mã vạch nhà cung cấp không hợp lệ" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "Mã vạch nhà cung cấp không chứa mã đơn đặt" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "Phát hiện nhiều đơn đặt mua đã được đặt cho '{order_number}'" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "Không tìm thấy đơn đặt mua cho '{order_number}'" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "Không tìm thấy mục dòng chờ xử lý cho sản phẩm nhà cung cấp" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "Buộc phải nhập thông tin khác để nhận mục dòng này" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "Mục dòng đơn đặt mua đã nhận" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "Tìm thấy nhiều sản phẩm nhà cung cấp cho mã vạch" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" -msgstr "" +msgstr "In nhãn thất bại" #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" -msgstr "" +msgstr "Mã vạch InvenTree" #: plugin/builtin/barcodes/inventree_barcode.py:26 msgid "Provides native support for barcodes" -msgstr "" +msgstr "Cung cấp hỗ trợ gốc cho mã vạch" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" -msgstr "" +msgstr "Người đóng góp InvenTree" #: plugin/builtin/integration/core_notifications.py:33 msgid "InvenTree Notifications" -msgstr "" +msgstr "Thông báo InvenTree" #: plugin/builtin/integration/core_notifications.py:35 msgid "Integrated outgoing notification methods" -msgstr "" +msgstr "Phương thức thông báo ra ngoài đã tích hợp" #: plugin/builtin/integration/core_notifications.py:40 #: plugin/builtin/integration/core_notifications.py:81 msgid "Enable email notifications" -msgstr "" +msgstr "Bật thông báo qua email" #: plugin/builtin/integration/core_notifications.py:41 #: plugin/builtin/integration/core_notifications.py:82 msgid "Allow sending of emails for event notifications" -msgstr "" +msgstr "Cho phép gửi email cho thông báo sự kiện" #: plugin/builtin/integration/core_notifications.py:46 msgid "Enable slack notifications" -msgstr "" +msgstr "Bật thông báo qua Slack" #: plugin/builtin/integration/core_notifications.py:47 msgid "Allow sending of slack channel messages for event notifications" -msgstr "" +msgstr "Cho phép gửi tin nhắn qua kênh Slack cho thông báo sự kiện" #: plugin/builtin/integration/core_notifications.py:52 msgid "Slack incoming webhook url" -msgstr "" +msgstr "URL webhook đầu vào của Slack" #: plugin/builtin/integration/core_notifications.py:53 msgid "URL that is used to send messages to a slack channel" -msgstr "" +msgstr "URL dùng để gửi tin nhắn đến một kênh của Slack" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" +msgstr "Mở liên kết" + +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "Trao đổi tiền tệ InvenTree" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "Tích hợp trao đổi tiền tệ mặc định" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "Máy in nhãn InvenTree PDF" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "Cung cấp hỗ trợ gốc để in nhãn PDF" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "Chế độ gỡ lỗi" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "Bật chế độ gỡ lỗi - trả về mã HTML thuần thay vì PDF" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" msgstr "" +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "Ngang" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "Tích hợp nhà cung cấp - DigiKey" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "Hỗ trợ quét mã vạch DigiKey" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "Nhà cung cấp hành động như 'DigiKey'" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "Tích hợp nhà cung cấp - LCSC" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "Cung cấp khả năng quét mã vạch LCSC" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "Nhà cung cấp hoạt động như 'LCSC'" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "Tích hợp nhà cung cấp - Mouser" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "Cung cấp khả năng quét mã vạch Mouser" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "Nhà cung cấp hành động như 'Mouser'" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "Tích hợp nhà cung cấp - TME" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "Cung cấp khả năng quét mã vạch TME" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "Nhà cung cấp hoạt động như 'TME'" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "Quyền bị từ chối: chỉ người dùng là nhân viên mới có thể cài đặt phần mở rộng" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "Cài đặt phần mở rộng thành công" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "Cài đặt phần bổ sung đến {path}" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" +msgstr "Cài đặt phần bổ sung thất bại" + #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "Cấu hình phần bổ sung" + +#: plugin/models.py:29 msgid "Plugin Configurations" -msgstr "" +msgstr "Cấu hình phần bổ sung" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" -msgstr "" +msgstr "Khóa" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" -msgstr "" +msgstr "Khóa của phần bổ sung" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" -msgstr "" +msgstr "Tên của phần bổ sung" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" -msgstr "" +msgstr "Là phần bổ sung hoạt động" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "Đã cài đặt" + +#: plugin/models.py:138 msgid "Sample plugin" -msgstr "" +msgstr "Phần bổ sung mẫu" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" -msgstr "" +msgstr "Plugin có sẵn" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" -msgstr "" +msgstr "Phần bổ sung" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" -msgstr "" +msgstr "Phương thức" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" -msgstr "" +msgstr "Không tìm thấy tác giả" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" -msgstr "" +msgstr "Phần bổ sung '{p}' không tương thích với phiên bản InvenTree hiện tại {v}" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" -msgstr "" +msgstr "Phần bổ sung yêu cầu ít nhất phiên bản {v}" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" -msgstr "" - -#: plugin/samples/integration/sample.py:39 -msgid "Enable PO" -msgstr "" - -#: plugin/samples/integration/sample.py:40 -msgid "Enable PO functionality in InvenTree interface" -msgstr "" - -#: plugin/samples/integration/sample.py:45 -msgid "API Key" -msgstr "" - -#: plugin/samples/integration/sample.py:46 -msgid "Key required for accessing external API" -msgstr "" - -#: plugin/samples/integration/sample.py:49 -msgid "Numerical" -msgstr "" +msgstr "Phần bổ sung yêu cầu tối đa phiên bản {v}" #: plugin/samples/integration/sample.py:50 -msgid "A numerical setting" -msgstr "" +msgid "Enable PO" +msgstr "Bật PO" -#: plugin/samples/integration/sample.py:55 -msgid "Choice Setting" -msgstr "" +#: plugin/samples/integration/sample.py:51 +msgid "Enable PO functionality in InvenTree interface" +msgstr "Bật chức năng PO trong giao diện InvenTree" #: plugin/samples/integration/sample.py:56 +msgid "API Key" +msgstr "Khóa API" + +#: plugin/samples/integration/sample.py:57 +msgid "Key required for accessing external API" +msgstr "Khóa bắt buộc đê truy cập API bên ngoài" + +#: plugin/samples/integration/sample.py:61 +msgid "Numerical" +msgstr "Kiểu số" + +#: plugin/samples/integration/sample.py:62 +msgid "A numerical setting" +msgstr "Thiết lập con số" + +#: plugin/samples/integration/sample.py:67 +msgid "Choice Setting" +msgstr "Thiết lập lựa chọn" + +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" -msgstr "" +msgstr "Một thiết lập với nhiều lựa chọn" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "Phần bổ sung trao đổi tiền tệ mẫu" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "Người đóng góp InvenTree" + +#: plugin/serializers.py:87 msgid "Source URL" -msgstr "" +msgstr "URL nguồn" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" -msgstr "" +msgstr "Nguồn cấp cho gói - có thể là sổ đăng ký tùy chỉnh hoặc đường dẫn VCS" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" -msgstr "" +msgstr "Tên gói" + +#: plugin/serializers.py:94 +msgid "Name for the Plugin Package - can also contain a version indicator" +msgstr "Tên của gói bổ sung - có thể còn chứa chỉ dẫn phiên bản" #: plugin/serializers.py:97 -msgid "Name for the Plugin Package - can also contain a version indicator" -msgstr "" - -#: plugin/serializers.py:100 msgid "Confirm plugin installation" -msgstr "" +msgstr "Xác nhận cài đặt phần bổ sung" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." -msgstr "" +msgstr "Sẽ cài đặt phần bổ sung này vào thực thể hiện tại. Thực thể sẽ chuyển sang chế độ bảo trì." -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" -msgstr "" +msgstr "Cài đặt chưa được xác nhận" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" -msgstr "" +msgstr "Hoặc là phải cung cấp tên gói của URL" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" -msgstr "" +msgstr "Kích hoạt phần bổ sung" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" -msgstr "" +msgstr "Kích hoạt phần bổ sung này" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" -msgstr "" +msgstr "Chưa cung cấp đối tượng hợp lệ cho bản mẫu" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" -msgstr "" +msgstr "Tệp mẫu '{template}' đang bị lỗi hoặc không tồn tại" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" -msgstr "" +msgstr "Báo cáo kiểm tra" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "A4" + +#: report/helpers.py:14 +msgid "A3" +msgstr "A3" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "Pháp lý" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "Thư" + +#: report/models.py:171 msgid "Template name" -msgstr "" +msgstr "Tên mẫu" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" -msgstr "" +msgstr "Tệp mẫu báo cáo" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" -msgstr "" +msgstr "Mô tả tệp mẫu báo cáo" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" -msgstr "" +msgstr "Số phiên bản báo cáo (tự động tăng)" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "Khổ giấy cho báo cáo PDF" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "Tạo báo cáo theo hướng ngang" + +#: report/models.py:305 msgid "Pattern for generating report filenames" -msgstr "" +msgstr "Quy tắc sinh tên tệp báo cáo" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" -msgstr "" +msgstr "Mẫu báo cáo đang bật" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" -msgstr "" +msgstr "Truy vấn bộ lọc hàng trong kho (dùng dấu phẩy liệt kê các cặp key=value)" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" -msgstr "" +msgstr "Bao gồm các đợt kiểm tra đã lắp đặt" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" -msgstr "" +msgstr "Bao gồm kết quả kiểm tra cho hàng trong kho được cài đặt bên trong hàng hóa đã lắp ráp" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" -msgstr "" +msgstr "Dựng bộ lọc" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" -msgstr "" +msgstr "Dựng bộ lọc truy vấn (dùng dấu phẩy liệt kê các cặp key=value" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" -msgstr "" +msgstr "Bộ lọc sản phẩm" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" -msgstr "" +msgstr "Bộ lọc truy vấn sản phẩm (dùng dấu phẩy liệt kê các cặp key=value" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" -msgstr "" +msgstr "Bộ lọc truy vấn đơn đặt mua" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" -msgstr "" +msgstr "Bộ lọc truy vấn đơn hàng bán" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" -msgstr "" +msgstr "Bộ lọc truy vấn đơn hàng trả lại" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" -msgstr "" +msgstr "Mẫu trích" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" -msgstr "" +msgstr "Tệp báo cáo mẫu" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" -msgstr "" +msgstr "Mô tả tệp báo cáo mẫu" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" -msgstr "" +msgstr "Tài sản" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" -msgstr "" +msgstr "Tệp báo cáo tài sản" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" -msgstr "" +msgstr "Mô tả tệp báo cáo tài sản" + +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "bộ lọc truy vấn vị trí kho (dùng dấu phẩy liệt kê các cặp key=value)" #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" -msgstr "" +msgstr "Vật liệu cần có" #: report/templates/report/inventree_build_order_base.html:146 msgid "Required For" -msgstr "" +msgstr "Bắt buộc cho" #: report/templates/report/inventree_po_report_base.html:15 msgid "Supplier was deleted" -msgstr "" +msgstr "Nhà cung cấp đã bị xóa" #: report/templates/report/inventree_po_report_base.html:30 #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" -msgstr "" +msgstr "Đơn giá" #: report/templates/report/inventree_po_report_base.html:55 #: report/templates/report/inventree_return_order_report_base.html:48 #: report/templates/report/inventree_so_report_base.html:55 msgid "Extra Line Items" -msgstr "" +msgstr "Bảng liệt kê mở rộng" #: report/templates/report/inventree_po_report_base.html:72 #: report/templates/report/inventree_so_report_base.html:72 -#: templates/js/translated/purchase_order.js:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 msgid "Total" -msgstr "" +msgstr "Tổng cộng" #: report/templates/report/inventree_return_order_report_base.html:25 #: report/templates/report/inventree_test_report_base.html:88 -#: stock/models.py:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" -msgstr "" +msgstr "Số sê-ri" + +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "Mục vị trí kho hàng" #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" -msgstr "" +msgstr "Báo cáo kiểm thử mặt hàng" #: report/templates/report/inventree_test_report_base.html:97 msgid "Test Results" -msgstr "" +msgstr "Kết quả kiểm tra" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" -msgstr "" +msgstr "Thử nghiệm" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" -msgstr "" +msgstr "Kết quả" #: report/templates/report/inventree_test_report_base.html:130 msgid "Pass" -msgstr "" +msgstr "Đạt" #: report/templates/report/inventree_test_report_base.html:132 msgid "Fail" -msgstr "" +msgstr "Không đạt" #: report/templates/report/inventree_test_report_base.html:139 msgid "No result (required)" -msgstr "" +msgstr "Không có kết quả (bắt buộc)" #: report/templates/report/inventree_test_report_base.html:141 msgid "No result" -msgstr "" +msgstr "Không có kết quả" #: report/templates/report/inventree_test_report_base.html:154 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" -msgstr "" +msgstr "Mục đã cài đặt" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" -msgstr "" +msgstr "Sê-ri" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" -msgstr "" +msgstr "ID địa điểm" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" -msgstr "" +msgstr "Tên địa điểm" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" -msgstr "" - -#: stock/admin.py:100 -msgid "Stock Item ID" -msgstr "" - -#: stock/admin.py:107 -msgid "Status Code" -msgstr "" - -#: stock/admin.py:110 -msgid "Supplier Part ID" -msgstr "" - -#: stock/admin.py:111 -msgid "Supplier ID" -msgstr "" - -#: stock/admin.py:112 -msgid "Supplier Name" -msgstr "" - -#: stock/admin.py:113 -msgid "Customer ID" -msgstr "" - -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 -msgid "Installed In" -msgstr "" - -#: stock/admin.py:115 -msgid "Build ID" -msgstr "" - -#: stock/admin.py:117 -msgid "Sales Order ID" -msgstr "" +msgstr "Đường dẫn địa điểm" #: stock/admin.py:118 -msgid "Purchase Order ID" -msgstr "" +msgid "Stock Item ID" +msgstr "ID mặt hàng" #: stock/admin.py:125 +msgid "Status Code" +msgstr "Mã trạng thái" + +#: stock/admin.py:128 +msgid "Supplier Part ID" +msgstr "Sản phẩm nhà cung cấp" + +#: stock/admin.py:129 +msgid "Supplier ID" +msgstr "Tên nhà cung cấp" + +#: stock/admin.py:130 +msgid "Supplier Name" +msgstr "Tên nhà cung cấp" + +#: stock/admin.py:131 +msgid "Customer ID" +msgstr "ID Khách hàng" + +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 +msgid "Installed In" +msgstr "Đã cài đặt trong" + +#: stock/admin.py:133 +msgid "Build ID" +msgstr "ID bản dựng" + +#: stock/admin.py:135 +msgid "Sales Order ID" +msgstr "ID đơn hàng bán" + +#: stock/admin.py:136 +msgid "Purchase Order ID" +msgstr "ID đơn đặt mua" + +#: stock/admin.py:143 msgid "Review Needed" -msgstr "" +msgstr "Cần xem xét" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" -msgstr "" +msgstr "Xóa khi thiếu hụt" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" -msgstr "" +msgstr "Ngày hết hạn" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" -msgstr "" +msgstr "Địa điểm bên ngoài" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" -msgstr "" +msgstr "Bắt buộc nhập số lượng" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" -msgstr "" +msgstr "Phải cung cấp sản phẩm hợp lệ" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" -msgstr "" +msgstr "Sản phẩm nhà cung cấp đã đưa không tồn tại" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" -msgstr "" +msgstr "Sản phẩm nhà cung cấp có kích thước đóng gói được định nghĩa nhưng cờ use_pack_size chưa được thiết lập" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" -msgstr "" +msgstr "Số sê-ri không thê được cung cấp cho sản phẩm không thể theo dõi" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "Loại vị trí kho hàng" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "Loại vị trí kho hàng" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "Biểu tượng mặc định cho vị trí không được đặt biểu tượng (tùy chọn)" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "Kho hàng" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" -msgstr "" +msgstr "Vị trí kho hàng" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" -msgstr "" +msgstr "Chủ sở hữu" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" -msgstr "" +msgstr "Chọn chủ sở hữu" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." -msgstr "" +msgstr "Không thể đưa trực tiếp hàng trong kho vào bên trong vị trí kho hàng có cấu trúc, nhưng có thể đặt vào kho con." -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" -msgstr "" +msgstr "Bên ngoài" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" -msgstr "" +msgstr "Đây là vị trí kho bên ngoài" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "Loại vị trí" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "Loại vị trí kho hàng của địa điểm này" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" -msgstr "" +msgstr "Bạn không thể chuyển đổi vị trí kho hàng này thành cấu trúc vì đã có hàng hóa trong kho được đặt vào bên trong nó!" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" -msgstr "" +msgstr "Không thể đặt hàng trong kho vào trong địa điểm kho có cấu trúc!" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" -msgstr "" +msgstr "Không thể tạo hàng hóa trong kho cho sản phẩm ảo" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" -msgstr "" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "Loại sản phẩm ('{self.supplier_part.part}') phải là {self.part}" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" -msgstr "" +msgstr "Số lượng phải là 1 cho hàng hóa với số sê ri" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" -msgstr "" - -#: stock/models.py:633 -msgid "Item cannot belong to itself" -msgstr "" - -#: stock/models.py:639 -msgid "Item must have a build reference if is_building=True" -msgstr "" - -#: stock/models.py:653 -msgid "Build reference does not point to the same part object" -msgstr "" +msgstr "Số sê ri không thể đặt được nếu số lượng lớn hơn 1" #: stock/models.py:667 +msgid "Item cannot belong to itself" +msgstr "Hàng hóa không thể thuộc về chính nó" + +#: stock/models.py:673 +msgid "Item must have a build reference if is_building=True" +msgstr "Hàng hóa phải có 1 tham chiếu bản dựng nếu is_building=True" + +#: stock/models.py:687 +msgid "Build reference does not point to the same part object" +msgstr "Tham chiếu bản dựng không thể trỏ vào cùng một đối tượng sản phẩm" + +#: stock/models.py:701 msgid "Parent Stock Item" -msgstr "" - -#: stock/models.py:677 -msgid "Base part" -msgstr "" - -#: stock/models.py:685 -msgid "Select a matching supplier part for this stock item" -msgstr "" - -#: stock/models.py:695 -msgid "Where is this stock item located?" -msgstr "" - -#: stock/models.py:702 -msgid "Packaging this stock item is stored in" -msgstr "" +msgstr "Hàng trong kho cha" #: stock/models.py:711 +msgid "Base part" +msgstr "Sản phẩm cơ bản" + +#: stock/models.py:719 +msgid "Select a matching supplier part for this stock item" +msgstr "Chọn sản phẩm nhà cung cấp khớp với hàng hóa trong kho này" + +#: stock/models.py:729 +msgid "Where is this stock item located?" +msgstr "Hàng trong kho này được đặt ở đâu?" + +#: stock/models.py:736 stock/serializers.py:1298 +msgid "Packaging this stock item is stored in" +msgstr "Đóng gói hàng hóa này được lưu trữ lại" + +#: stock/models.py:745 msgid "Is this item installed in another item?" -msgstr "" +msgstr "Mục này đã được cài đặt trong mục khác?" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" -msgstr "" +msgstr "Số sê ri cho mục này" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" -msgstr "" +msgstr "Mã lô cho hàng trong kho này" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" -msgstr "" +msgstr "Số lượng tồn kho" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" -msgstr "" +msgstr "Bản dựng nguồn" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" -msgstr "" +msgstr "Bản dựng cho hàng hóa này" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" -msgstr "" +msgstr "Tiêu thụ bởi" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" -msgstr "" +msgstr "Đơn đặt bản dựng đã dùng hàng hóa này" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" -msgstr "" +msgstr "Đơn đặt mua nguồn" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" -msgstr "" +msgstr "Đơn đặt mua cho hàng hóa này" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" -msgstr "" - -#: stock/models.py:790 -msgid "Expiry date for stock item. Stock will be considered expired after this date" -msgstr "" - -#: stock/models.py:805 -msgid "Delete on deplete" -msgstr "" - -#: stock/models.py:805 -msgid "Delete this Stock Item when stock is depleted" -msgstr "" +msgstr "Đơn hàng bán đích" #: stock/models.py:824 +msgid "Expiry date for stock item. Stock will be considered expired after this date" +msgstr "Ngày hết hạn của hàng hóa này. Kho sẽ được nhắc tình trạng hết hạn sau ngày này" + +#: stock/models.py:839 +msgid "Delete on deplete" +msgstr "Xóa khi thiếu hụt" + +#: stock/models.py:839 +msgid "Delete this Stock Item when stock is depleted" +msgstr "Xóa hàng trong kho này khi kho hàng bị thiếu hụt" + +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" -msgstr "" +msgstr "Giá mua riêng lẻ tại thời điểm mua" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" -msgstr "" +msgstr "Đã chuyển đổi sang sản phẩm" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" -msgstr "" +msgstr "Chưa đặt sản phẩm thành có thể theo dõi" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" -msgstr "" +msgstr "Số lượng phải là số nguyên" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" -msgstr "" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "Số lượng không thể vượt quá số lượng trong kho đang có ({self.quantity})" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" -msgstr "" +msgstr "Số sêri phải là một danh sách dãy số nguyên" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" -msgstr "" +msgstr "Số lượng không khớp với số sêri" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" -msgstr "" +msgstr "Số sêri đã tồn tại" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" -msgstr "" +msgstr "Hàng trong kho đã được gán vào đơn hàng bán" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" -msgstr "" +msgstr "Hàng trong kho đã được cài đặt vào hàng hóa khác" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" -msgstr "" +msgstr "Hàng trong kho chứa hàng hóa khác" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" -msgstr "" +msgstr "Hàng trong kho đã được gắn với một khách hàng" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" -msgstr "" +msgstr "Hàng trong kho hiện đang sản xuất" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" -msgstr "" +msgstr "Không thể hợp nhất kho nối tiếp" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" -msgstr "" +msgstr "Mặt hàng trùng lặp" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" -msgstr "" +msgstr "Mặt hàng phải tham chiếu đến sản phẩm tương tự" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" -msgstr "" +msgstr "Mặt hàng phải tham chiếu đến sản phẩm nhà cung cấp tương tự" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" -msgstr "" +msgstr "Mã trạng thái kho phải phù hợp" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" -msgstr "" +msgstr "Không thể xóa mặt hàng không ở trong kho" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" -msgstr "" +msgstr "Ghi chú đầu vào" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" -msgstr "" +msgstr "Phải cung cấp giá trị cho kiểm thử này" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" -msgstr "" +msgstr "Phải tải liên đính kèm cho kiểm thử này" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" -msgstr "" +msgstr "Tên kiểm thử" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" -msgstr "" +msgstr "Kết quả kiểm thử" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" -msgstr "" +msgstr "Giá trị đầu ra kiểm thử" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" -msgstr "" +msgstr "Đính kèm kết quả kiểm thử" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" -msgstr "" +msgstr "Ghi chú kiểm thử" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" -msgstr "" +msgstr "Số sêri quá lớn" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" -msgstr "" +msgstr "Sử dụng kích thước đóng gói khi thêm: Số lượng được định nghĩa là số của gói" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" -msgstr "" +msgstr "Giá mua của mặt hàng, theo đơn vị hoặc gói" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" -msgstr "" +msgstr "Nhập số của mặt hàng cần tạo số nối tiếp" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" -msgstr "" +msgstr "Số lượng phải không vượt quá số lượng trong kho đang có ({q})" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" -msgstr "" +msgstr "Điền số sêri cho hàng hóa mới" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" -msgstr "" +msgstr "Vị trí kho đích" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" -msgstr "" +msgstr "Trường ghi chú tùy chọn" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" -msgstr "" +msgstr "Không thể gán số sêri cho sản phẩm này" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" -msgstr "" +msgstr "Chọn mặt hàng để lắp đặt" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" -msgstr "" +#: stock/serializers.py:496 +msgid "Quantity to Install" +msgstr "Số lượng để cài đặt" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" -msgstr "" +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" +msgstr "Nhập số lượng hàng hóa để cài đặt" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" -msgstr "" +msgstr "Thêm ghi chú giao dịch (tùy chọn)" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "Số lượng cần cài đặt phải ít nhất là 1" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "Mặt hàng không khả dụng" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "Sản phẩm đã chọn không có trong hóa đơn vật liệu" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "Số lượng cần lắp đặt phải không vượt quá số lượng đang có" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "Vị trí đích cho hàng hóa bị gỡ bỏ" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" -msgstr "" +msgstr "Chọn sản phẩm để chuyển đổi mặt hàng vào bên trong" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" -msgstr "" +msgstr "Sản phẩm đã chọn không phải là tùy chọn hợp lệ để chuyển đổi" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "Không thể chuyển đổi hàng hóa với sản phẩm nhà cung cấp đã gán" + +#: stock/serializers.py:670 msgid "Destination location for returned item" -msgstr "" +msgstr "Vị trí đích dành cho hàng hóa trả lại" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "Chọn mặt hàng để đổi trạng thái" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "Không có mặt hàng nào được chọn" + +#: stock/serializers.py:1006 msgid "Part must be salable" -msgstr "" +msgstr "Sản phẩm phải có thể bán được" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" -msgstr "" +msgstr "Hàng hóa được phân bổ đến một đơn hàng bán" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" -msgstr "" +msgstr "Hàng hóa được phân bổ đến một đơn đặt bản dựng" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" -msgstr "" +msgstr "Khách hàng được gán vào các mặt hàng" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" -msgstr "" +msgstr "Công ty đã chọn không phải là khách hàng" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" -msgstr "" +msgstr "Ghi chú phân bổ kho" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" -msgstr "" +msgstr "Phải cung cấp danh sách mặt hàng" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" -msgstr "" +msgstr "Ghi chú gộp kho" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" -msgstr "" +msgstr "Cho phép nhiều nhà cung không khớp" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" -msgstr "" +msgstr "Cho phép mặt hàng cùng sản phẩm nhà cung cấp khác phải được gộp" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" -msgstr "" +msgstr "Cho phép trạng thái không khớp" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" -msgstr "" +msgstr "Cho phép mặt hàng với mã trạng thái khác nhau để gộp lại" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" -msgstr "" +msgstr "Cần cung cấp ít nhất hai mặt hàng" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" -msgstr "" +msgstr "Giá trị khóa chính mặt hàng" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "Mã trạng thái mặt hàng" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" -msgstr "" +msgstr "Ghi chú giao dịch kho" #: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" -msgstr "" +msgstr "Thông tin theo dõi kho" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" -msgstr "" +msgstr "Hàng trong kho con" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" -msgstr "" +msgstr "Hàng trong kho này không có bất kỳ hàng hóa con nào" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" -msgstr "" +msgstr "Thông tin kiểm thử" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" -msgstr "" +msgstr "Báo cáo kiểm thử" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" -msgstr "" +msgstr "Xóa dữ liệu báo cáo kiểm thử" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" -msgstr "" +msgstr "Thêm dữ liệu kiểm thử" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" -msgstr "" +msgstr "Ghi chú tại kho hàng" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" -msgstr "" +msgstr "Hàng hóa đã lắp đặt" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" -msgstr "" +msgstr "Lắp đặt hàng hóa trong kho" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" -msgstr "" +msgstr "Xóa toàn bộ kết quả kiểm thử cho kho hàng này" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" -msgstr "" +msgstr "Thêm kết quả kiểm thử" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" -msgstr "" +msgstr "Xác định vị trí hàng tồn kho" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" -msgstr "" +msgstr "Quét vào điểm bán" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" -msgstr "" +msgstr "Chức năng in" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" -msgstr "" +msgstr "Chức năng điều chỉnh kho" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" -msgstr "" +msgstr "Đếm hàng" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" -msgstr "" +msgstr "Thêm hàng" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" -msgstr "" +msgstr "Xóa hàng hóa" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" -msgstr "" +msgstr "Sắp xếp hàng hóa" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" -msgstr "" +msgstr "Chuyển giao hàng" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" -msgstr "" +msgstr "Chỉ định cho khách hàng" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" -msgstr "" +msgstr "Trả lại kho" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" -msgstr "" +msgstr "Gỡ cài đặt hàng trong kho" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" -msgstr "" +msgstr "Gỡ cài đặt" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" -msgstr "" +msgstr "Lắp đặt hàng hóa trong kho" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" -msgstr "" +msgstr "Cài đặt" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" -msgstr "" +msgstr "Chuyển đổi thành biến thể" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" -msgstr "" +msgstr "Mặt hàng trùng lặp" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" -msgstr "" +msgstr "Sửa mặt hàng" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" -msgstr "" +msgstr "Xóa mặt hàng" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "Dựng" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" -msgstr "" +msgstr "Mục cha" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" -msgstr "" +msgstr "Chưa đặt nhà sản xuất" + +#: stock/templates/stock/item_base.html:251 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "Bạn không thuộc danh sách chủ sở hữu hàng hóa này. Mặt hàng này không thể sửa đổi." #: stock/templates/stock/item_base.html:252 -msgid "You are not in the list of owners of this item. This stock item cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/location.html:149 msgid "Read only" -msgstr "" +msgstr "Chỉ đọc" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" -msgstr "" +msgstr "Mặt hàng này không khả dụng" + +#: stock/templates/stock/item_base.html:271 +msgid "This stock item is in production and cannot be edited." +msgstr "Mặt hàng này đang được sản xuất và không thể sửa được." #: stock/templates/stock/item_base.html:272 -msgid "This stock item is in production and cannot be edited." -msgstr "" - -#: stock/templates/stock/item_base.html:273 msgid "Edit the stock item from the build view." -msgstr "" +msgstr "Sửa mặt hàng này từ khung nhìn bản dựng." -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" -msgstr "" +msgstr "Mặt hàng này đã được phân bổ về đơn hàng bán" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" -msgstr "" +msgstr "Mặt hàng này đã được phân bổ về đơn đặt bản dựng" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" -msgstr "" +msgstr "Mặt hàng này là tuần tự. Nó có một số sêri duy nhất và số lượng không thể điều chỉnh được" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" -msgstr "" +msgstr "trang trước" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" -msgstr "" +msgstr "Điều hướng đến số sêri trước" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" -msgstr "" +msgstr "trang tiếp theo" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" -msgstr "" +msgstr "Điều hướng đến số sêri tiếp" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" -msgstr "" +msgstr "Số lượng sẵn có" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" -msgstr "" +msgstr "Không có vị trí nào được đặt" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" -msgstr "" +msgstr "Thử nghiệm" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" -msgstr "" +msgstr "Mặt hàng không đạt toàn bộ yêu cầu thử nghiệm" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" -msgstr "" +msgstr "Mặt hàng này hết hạn vào %(item.expiry_date)s" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" -msgstr "" +msgstr "Đã hết hạn" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" -msgstr "" +msgstr "Mặt hàng này hết hạn vào %(item.expiry_date)s" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" -msgstr "" +msgstr "Ế" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" -msgstr "" +msgstr "Chưa thực hiện kiểm kê" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" -msgstr "" +msgstr "mặt hàng" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" -msgstr "" +msgstr "Sửa trạng thái kho" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" -msgstr "" +msgstr "Mã QR mặt hàng" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" -msgstr "" - -#: stock/templates/stock/item_base.html:612 -msgid "Select one of the part variants listed below." -msgstr "" - -#: stock/templates/stock/item_base.html:615 -msgid "Warning" -msgstr "" +msgstr "Liên kết mã vạch đến mặt hàng" #: stock/templates/stock/item_base.html:616 +msgid "Select one of the part variants listed below." +msgstr "Chọn một trong những biến thể sản phẩm được liệt kê bên dưới." + +#: stock/templates/stock/item_base.html:619 +msgid "Warning" +msgstr "Cánh báo" + +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" -msgstr "" +msgstr "Thao tác này không thể khôi phục lại một cách dễ dàng" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" -msgstr "" +msgstr "Chuyển đổi mặt hàng" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" -msgstr "" +msgstr "Trả lại kho" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." -msgstr "" +msgstr "Tạo hàng hóa tuần tự từ mặt hàng này." #: stock/templates/stock/item_serialize.html:7 msgid "Select quantity to serialize, and unique serial numbers." -msgstr "" +msgstr "Chọn số lượng cần tuần tự hóa và số sêri duy nhất." -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" -msgstr "" +msgstr "Thực hiện kiểm kê cho vị trí kho này" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" -msgstr "" +msgstr "Xác định vị trí kho" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" -msgstr "" +msgstr "Quét các mặt hàng vào vị trí kho này" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" -msgstr "" +msgstr "Quét vào trong mặt hàng" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" -msgstr "" +msgstr "Quét kho chứa vào trong vị trí kho này" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" -msgstr "" +msgstr "Quét vào trong bộ chứa" -#: stock/templates/stock/location.html:102 -msgid "Location actions" -msgstr "" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "In báo cáo vị trí" #: stock/templates/stock/location.html:104 -msgid "Edit location" -msgstr "" +msgid "Location actions" +msgstr "Chức năng vị trí" #: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "Sửa vị trí" + +#: stock/templates/stock/location.html:108 msgid "Delete location" -msgstr "" +msgstr "Xóa vị trí" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" -msgstr "" +msgstr "Vị trí kho cấp đầu" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" -msgstr "" +msgstr "Chủ sở hữu vị trí" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." -msgstr "" +msgstr "Bạn không thuộc danh sách chủ sở hữu của vị trí này. Vị trí kho này không thể sửa được." -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" -msgstr "" +msgstr "Kho phụ" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" -msgstr "" +msgstr "Tạo mới vị trí kho" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" -msgstr "" +msgstr "Vị trí mới" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" -msgstr "" +msgstr "vị trí kho hàng" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" -msgstr "" +msgstr "Quét kho chứa vào trong vị trí này" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" -msgstr "" +msgstr "Mã QR vị trí kho" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" -msgstr "" +msgstr "Liên kết mã vạch đến vị trí kho" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." -msgstr "" +msgstr "Đang tải..." #: stock/templates/stock/stock_sidebar.html:5 msgid "Stock Tracking" -msgstr "" +msgstr "Theo dõi tồn kho" #: stock/templates/stock/stock_sidebar.html:8 msgid "Allocations" -msgstr "" +msgstr "Phân bổ" #: stock/templates/stock/stock_sidebar.html:20 msgid "Child Items" -msgstr "" +msgstr "Mục con" #: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7 msgid "Permission Denied" -msgstr "" +msgstr "Quyền truy cập bị từ chối" #: templates/403.html:15 msgid "You do not have permission to view this page." -msgstr "" +msgstr "Bạn không có quyền xem trang này." #: templates/403_csrf.html:11 msgid "Authentication Failure" -msgstr "" +msgstr "Lỗi xác thực" #: templates/403_csrf.html:14 msgid "You have been logged out from InvenTree." -msgstr "" +msgstr "Bạn đã đăng xuất từ InvenTree." #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" -msgstr "" +msgstr "Đăng nhập" #: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" -msgstr "" +msgstr "Trang không tồn tại" #: templates/404.html:15 msgid "The requested page does not exist" -msgstr "" +msgstr "Trang được yêu cầu không tồn tại" #: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" -msgstr "" +msgstr "Lỗi nội bộ máy chủ" #: templates/500.html:15 #, python-format msgid "The %(inventree_title)s server raised an internal error" -msgstr "" +msgstr "Máy chủ %(inventree_title)s thông báo lỗi nội bộ" #: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" -msgstr "" +msgstr "Tham khảo nhật ký lỗi trong giao diện quản trị để biết thêm chi tiết" #: templates/503.html:11 templates/503.html:33 msgid "Site is in Maintenance" -msgstr "" +msgstr "Site đang được bảo trì" #: templates/503.html:39 msgid "The site is currently in maintenance and should be up again soon!" -msgstr "" +msgstr "Khu vực đang được bảo trì và sẽ mở lại sớm thôi!" #: templates/InvenTree/index.html:7 msgid "Index" -msgstr "" +msgstr "Chỉ số" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "" +msgstr "Sản phẩm đã đăng ký" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" -msgstr "" +msgstr "Danh mục đã đăng ký" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "Nguyên liệu mới nhất" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" -msgstr "" +msgstr "BOM đợi phê chuẩn" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "" +msgstr "Mới Cập Nhật" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" -msgstr "" +msgstr "Kho đã hết hàng" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" -msgstr "" +msgstr "Bắt buộc cho đơn đặt bản dựng" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" -msgstr "" +msgstr "Kho đã quá hạn" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" -msgstr "" +msgstr "Kho hàng ế" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "" +msgstr "Đơn đặt bản dựng trong tiến trình" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "" +msgstr "Đơn đặt bản dựng quá hạn" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" -msgstr "" +msgstr "Đơn đặt mua nổi bật" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" -msgstr "" +msgstr "Đơn mua quá hạn" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" -msgstr "" +msgstr "Đơn hàng bán nổi bật" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" -msgstr "" +msgstr "Đơn hàng bán quá hạn" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" -msgstr "" +msgstr "Tin tức InvenTree" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" -msgstr "" +msgstr "Tin hiện tại" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" -msgstr "" +msgstr "Nhật ký thông báo" #: templates/InvenTree/notifications/history.html:13 #: templates/InvenTree/notifications/history.html:14 #: templates/InvenTree/notifications/notifications.html:75 msgid "Delete Notifications" -msgstr "" +msgstr "Xóa thông báo" #: templates/InvenTree/notifications/inbox.html:9 msgid "Pending Notifications" -msgstr "" +msgstr "Thông báo đang chờ" #: templates/InvenTree/notifications/inbox.html:13 #: templates/InvenTree/notifications/inbox.html:14 msgid "Mark all as read" -msgstr "" +msgstr "Đánh dấu đã đọc tất cả" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" -msgstr "" +msgstr "Thông báo" #: templates/InvenTree/notifications/notifications.html:38 msgid "No unread notifications found" -msgstr "" +msgstr "Chưa có thông báo mới" #: templates/InvenTree/notifications/notifications.html:58 msgid "No notification history found" -msgstr "" +msgstr "Không tìm thấy nhật ký thông báo" #: templates/InvenTree/notifications/notifications.html:65 msgid "Delete all read notifications" -msgstr "" +msgstr "Xóa toàn bộ thông báo đã đọc" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" -msgstr "" +msgstr "Xóa thông báo" #: templates/InvenTree/notifications/sidebar.html:8 msgid "Inbox" -msgstr "" +msgstr "Hộp thư" #: templates/InvenTree/notifications/sidebar.html:10 msgid "History" -msgstr "" +msgstr "Lịch sử" #: templates/InvenTree/search.html:8 msgid "Search Results" -msgstr "" +msgstr "Kết quả tìm kiếm" #: templates/InvenTree/settings/barcode.html:8 msgid "Barcode Settings" -msgstr "" +msgstr "Thiết lập mã vạch" #: templates/InvenTree/settings/build.html:8 msgid "Build Order Settings" -msgstr "" +msgstr "Thiết lập đơn đặt bản dựng" #: templates/InvenTree/settings/category.html:7 msgid "Category Settings" -msgstr "" +msgstr "Cài đặt Danh mục" #: templates/InvenTree/settings/global.html:8 msgid "Server Settings" -msgstr "" +msgstr "Cài đặt máy chủ" #: templates/InvenTree/settings/label.html:8 #: templates/InvenTree/settings/user_labels.html:9 msgid "Label Settings" -msgstr "" +msgstr "Cài đặt nhãn" #: templates/InvenTree/settings/login.html:8 msgid "Login Settings" -msgstr "" +msgstr "Cài đặt đăng nhập" #: templates/InvenTree/settings/login.html:15 msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!" -msgstr "" +msgstr "Chưa cấu hình email gửi đi. Một số tính năng đăng nhập và đăng ký sẽ không hoạt động được!" #: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5 #: templates/socialaccount/signup.html:5 msgid "Signup" -msgstr "" +msgstr "Đăng ký" #: templates/InvenTree/settings/login.html:34 msgid "Single Sign On" -msgstr "" +msgstr "Đăng nhập một lần" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "Cài đặt" #: templates/InvenTree/settings/mixins/urls.html:5 msgid "URLs" -msgstr "" +msgstr "URL" #: templates/InvenTree/settings/mixins/urls.html:8 #, python-format msgid "The Base-URL for this plugin is %(base)s." -msgstr "" +msgstr "Base-URL cho phần bổ sung này là %(base)s." #: templates/InvenTree/settings/mixins/urls.html:23 msgid "Open in new tab" -msgstr "" +msgstr "Mở trong tab mới" #: templates/InvenTree/settings/notifications.html:9 #: templates/InvenTree/settings/user_notifications.html:9 msgid "Notification Settings" -msgstr "" +msgstr "Cài đặt thông báo" #: templates/InvenTree/settings/notifications.html:18 msgid "Slug" -msgstr "" +msgstr "Slug" #: templates/InvenTree/settings/part.html:7 msgid "Part Settings" -msgstr "" +msgstr "Cài đặt sản phẩm" #: templates/InvenTree/settings/part.html:42 msgid "Part Import" -msgstr "" +msgstr "Nhập hàng hóa" #: templates/InvenTree/settings/part.html:46 msgid "Import Part" -msgstr "" +msgstr "Nhập sản phẩm" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" -msgstr "" +msgstr "Mẫu tham số sản phẩm" #: templates/InvenTree/settings/part_stocktake.html:7 msgid "Stocktake Settings" -msgstr "" +msgstr "Thiết lập kiểm kê" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" -msgstr "" +msgstr "Báo cáo kiểm kê" + +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "Đơn vị vật lí" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "Thêm đơn vị" #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" -msgstr "" +msgstr "Thiết lập phần bổ sung" #: templates/InvenTree/settings/plugin.html:15 msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." -msgstr "" +msgstr "Đổi thiết lập bên dưới yêu cầu bạn cần khởi động máy chủ ngay lập tức. Đừng thay đổi điều này trong khi đang sử dụng phần mềm." -#: templates/InvenTree/settings/plugin.html:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" -msgstr "" +msgstr "Phần bổ sung" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" -msgstr "" +msgstr "Cài đặt phần bổ sung" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" -msgstr "" +msgstr "Phần bổ sung bên ngoài chưa được bật cho cài đặt InvenTree này" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" -msgstr "" +msgstr "Ngăn Xếp Lỗi Phần Bổ Sung" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" -msgstr "" +msgstr "Giai đoạn" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" -msgstr "" +msgstr "Tin nhắn" #: templates/InvenTree/settings/plugin_settings.html:16 msgid "Plugin information" -msgstr "" +msgstr "Thông tin phần bổ sung" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" -msgstr "" +msgstr "Phiên bản" #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" -msgstr "" +msgstr "chưa cung cấp thông tin phiên bản" #: templates/InvenTree/settings/plugin_settings.html:61 msgid "License" -msgstr "" +msgstr "Giấy phép" #: templates/InvenTree/settings/plugin_settings.html:70 msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running." -msgstr "" +msgstr "Thông tin mã được kéo về từ cập nhật git mới nhất cho phần bổ sung này. Nó có thể không phải là phiên bản hay thông tin chính thức nhưng mã thực sự hoạt động." #: templates/InvenTree/settings/plugin_settings.html:76 msgid "Package information" -msgstr "" +msgstr "Thông tin gói" #: templates/InvenTree/settings/plugin_settings.html:82 msgid "Installation method" -msgstr "" +msgstr "Phương thức cài đặt" #: templates/InvenTree/settings/plugin_settings.html:85 msgid "This plugin was installed as a package" -msgstr "" +msgstr "Phần bổ sung này đã được cài đặt dạng gói" #: templates/InvenTree/settings/plugin_settings.html:87 msgid "This plugin was found in a local server path" -msgstr "" +msgstr "Phần bổ sung này đã tồn tại trên đường dẫn máy chủ của bạn" #: templates/InvenTree/settings/plugin_settings.html:93 msgid "Installation path" -msgstr "" +msgstr "Đường dẫn cài đặt" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" -msgstr "" +msgstr "Gắn liền" #: templates/InvenTree/settings/plugin_settings.html:101 msgid "This is a builtin plugin which cannot be disabled" -msgstr "" +msgstr "Đây là phần bổ sung có sẵn nên không thể tắt được" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "Mẫu" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "Đây là phần bổ sung mẫu" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" -msgstr "" +msgstr "Người commit" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" -msgstr "" +msgstr "Ngày commit" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" -msgstr "" +msgstr "Commit Hash" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" +msgstr "Thông điệp commit" #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" -msgstr "" +msgstr "Cài đặt đơn đặt mua" #: templates/InvenTree/settings/pricing.html:7 msgid "Pricing Settings" -msgstr "" +msgstr "Cài đặt định giá" #: templates/InvenTree/settings/pricing.html:34 msgid "Exchange Rates" -msgstr "" +msgstr "Tỷ giá hối đoái" #: templates/InvenTree/settings/pricing.html:38 msgid "Update Now" -msgstr "" +msgstr "Cập nhật ngay" #: templates/InvenTree/settings/pricing.html:46 #: templates/InvenTree/settings/pricing.html:50 msgid "Last Update" -msgstr "" +msgstr "Lần cập nhật gần nhất" #: templates/InvenTree/settings/pricing.html:50 msgid "Never" -msgstr "" +msgstr "Chưa bao giờ" #: templates/InvenTree/settings/project_codes.html:8 msgid "Project Code Settings" -msgstr "" +msgstr "Cài đặt mã dự án" #: templates/InvenTree/settings/project_codes.html:21 #: templates/InvenTree/settings/sidebar.html:33 msgid "Project Codes" -msgstr "" +msgstr "Mã dự án" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" -msgstr "" +msgstr "Mã dự án mới" #: templates/InvenTree/settings/report.html:8 #: templates/InvenTree/settings/user_reporting.html:9 msgid "Report Settings" -msgstr "" +msgstr "Cài đặt báo cáo" #: templates/InvenTree/settings/returns.html:7 msgid "Return Order Settings" -msgstr "" +msgstr "Cài đặt đơn trả hàng" #: templates/InvenTree/settings/setting.html:31 msgid "No value set" -msgstr "" +msgstr "Chưa cài đặt giá trị" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" -msgstr "" +msgstr "Sửa cài đặt" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" -msgstr "" +msgstr "Sửa cài đặt phần bổ sung" #: templates/InvenTree/settings/settings_js.html:60 msgid "Edit Notification Setting" -msgstr "" +msgstr "Sửa cài đặt thông báo" #: templates/InvenTree/settings/settings_js.html:63 msgid "Edit Global Setting" @@ -8849,51 +9273,104 @@ msgstr "Chỉnh sửa cài đặt người dùng" #: templates/InvenTree/settings/settings_staff_js.html:49 msgid "Rate" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" +msgstr "Tỷ lệ" #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" -msgstr "" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "Sửa" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "Xóa" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "Sửa đơn vị tùy chỉnh" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "Xóa đơn vị tùy chỉnh" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "Đơn vị tùy chỉnh mới" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "Không tìm thấy mã dự án" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "Sửa mã dự án" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" -msgstr "" +msgstr "Xóa mã dự án" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 -msgid "Edit Template" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 -msgid "Delete Template" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:230 -msgid "Edit Category Parameter Template" -msgstr "" - -#: templates/InvenTree/settings/settings_staff_js.html:253 -msgid "Delete Category Parameter Template" -msgstr "" +msgstr "Không tìm thấy mẫu tham số danh mục" #: templates/InvenTree/settings/settings_staff_js.html:288 -msgid "Create Category Parameter Template" -msgstr "" +#: templates/js/translated/part.js:1642 +msgid "Edit Template" +msgstr "Sửa mẫu" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 +msgid "Delete Template" +msgstr "Xóa mẫu" + +#: templates/InvenTree/settings/settings_staff_js.html:306 +msgid "Edit Category Parameter Template" +msgstr "Sửa mẫu tham số danh mục" + +#: templates/InvenTree/settings/settings_staff_js.html:333 +msgid "Delete Category Parameter Template" +msgstr "Xóa mẫu tham số danh mục" + +#: templates/InvenTree/settings/settings_staff_js.html:368 +msgid "Create Category Parameter Template" +msgstr "Tạo mẫu tham số danh mục" + +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" -msgstr "" +msgstr "Tạo mẫu tham số sản phẩm" + +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "Không tìm thấy loại vị trí kho" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "Đếm vị trí" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "Sửa loại vị trí" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "Xóa loại vị trí" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "Xóa loại vị trí" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "Loại vị trí mới" #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 @@ -8902,27 +9379,27 @@ msgstr "Cài đặt người dùng" #: templates/InvenTree/settings/sidebar.html:9 msgid "Account" -msgstr "" +msgstr "Tài khoản" #: templates/InvenTree/settings/sidebar.html:11 msgid "Display" -msgstr "" +msgstr "Hiển thị" #: templates/InvenTree/settings/sidebar.html:13 msgid "Home Page" -msgstr "" +msgstr "Trang chủ" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" -msgstr "" +msgstr "Tìm kiếm" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" -msgstr "" +msgstr "Báo cáo" #: templates/InvenTree/settings/sidebar.html:24 msgid "Global Settings" @@ -8930,23 +9407,27 @@ msgstr "Cài đặt toàn cục" #: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9 msgid "Server" -msgstr "" +msgstr "Máy chủ" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" -msgstr "" +msgstr "Nhãn" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" -msgstr "" +msgstr "Danh mục" #: templates/InvenTree/settings/so.html:7 msgid "Sales Order Settings" -msgstr "" +msgstr "Thiết lập đơn hàng bán" #: templates/InvenTree/settings/stock.html:7 msgid "Stock Settings" -msgstr "" +msgstr "Cài đặt kho hàng" + +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "Loại ví trí kho" #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" @@ -8956,144 +9437,138 @@ msgstr "Cài đặt tài khoản" #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 msgid "Change Password" -msgstr "" - -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "" +msgstr "Đổi mật khẩu" #: templates/InvenTree/settings/user.html:33 msgid "Username" -msgstr "" +msgstr "Tên người dùng" #: templates/InvenTree/settings/user.html:37 msgid "First Name" -msgstr "" +msgstr "Tên" #: templates/InvenTree/settings/user.html:41 msgid "Last Name" -msgstr "" +msgstr "Họ" #: templates/InvenTree/settings/user.html:55 msgid "The following email addresses are associated with your account:" -msgstr "" +msgstr "Địa chỉ email sau đã được liên kết với tài khoản của bạn:" #: templates/InvenTree/settings/user.html:76 msgid "Verified" -msgstr "" +msgstr "Đã xác minh" #: templates/InvenTree/settings/user.html:78 msgid "Unverified" -msgstr "" +msgstr "Chưa xác minh" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" -msgstr "" +msgstr "Chính" #: templates/InvenTree/settings/user.html:86 msgid "Make Primary" -msgstr "" +msgstr "Tạo chính yếu" #: templates/InvenTree/settings/user.html:87 msgid "Re-send Verification" -msgstr "" +msgstr "Gửi lại xác minh" #: templates/InvenTree/settings/user.html:96 msgid "Warning:" -msgstr "" +msgstr "Cảnh báo:" #: templates/InvenTree/settings/user.html:97 msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc." -msgstr "" +msgstr "Bạn chưa có bất kỳ địa chỉ email nào được cài đặt. Bạn nên thêm một địa chỉ email tồn tại thật để bạn có thể nhận thông báo, đặt lại mật khẩu,..." #: templates/InvenTree/settings/user.html:105 msgid "Add Email Address" -msgstr "" +msgstr "Thêm địa chỉ email" #: templates/InvenTree/settings/user.html:110 msgid "Add Email" -msgstr "" +msgstr "Thêm email" #: templates/InvenTree/settings/user.html:120 msgid "Multifactor" -msgstr "" +msgstr "Đa nhân tố" #: templates/InvenTree/settings/user.html:125 msgid "You have these factors available:" -msgstr "" +msgstr "Bạn có các nhân tố sẵn này:" #: templates/InvenTree/settings/user.html:135 msgid "TOTP" -msgstr "" +msgstr "TOTP" #: templates/InvenTree/settings/user.html:141 msgid "Static" -msgstr "" +msgstr "Tĩnh" #: templates/InvenTree/settings/user.html:150 msgid "Multifactor authentication is not configured for your account" -msgstr "" +msgstr "Chưa cấu hình xác thực đa nhân tố cho tài khoản của bạn" #: templates/InvenTree/settings/user.html:157 msgid "Change factors" -msgstr "" +msgstr "Đổi nhân tố" #: templates/InvenTree/settings/user.html:158 msgid "Setup multifactor" -msgstr "" +msgstr "Cài đặt đa nhân tố" #: templates/InvenTree/settings/user.html:160 msgid "Remove multifactor" -msgstr "" +msgstr "Xóa đa nhân tố" #: templates/InvenTree/settings/user.html:168 msgid "Active Sessions" -msgstr "" +msgstr "Các phiên hoạt động" #: templates/InvenTree/settings/user.html:174 msgid "Log out active sessions (except this one)" -msgstr "" +msgstr "Đăng xuất phiên đang hoạt động (trừ phiên này)" #: templates/InvenTree/settings/user.html:175 msgid "Log Out Active Sessions" -msgstr "" +msgstr "Đăng xuất phiên đang hoạt động" #: templates/InvenTree/settings/user.html:184 msgid "unknown on unknown" -msgstr "" +msgstr "không rõ trên không rõ" #: templates/InvenTree/settings/user.html:185 msgid "unknown" -msgstr "" +msgstr "không rõ" #: templates/InvenTree/settings/user.html:189 msgid "IP Address" -msgstr "" +msgstr "Địa chỉ IP" #: templates/InvenTree/settings/user.html:190 msgid "Device" -msgstr "" +msgstr "Thiết bị" #: templates/InvenTree/settings/user.html:191 msgid "Last Activity" -msgstr "" +msgstr "Hoạt động gần đây" #: templates/InvenTree/settings/user.html:204 #, python-format msgid "%(time)s ago (this session)" -msgstr "" +msgstr "%(time)s trước (phiên này)" #: templates/InvenTree/settings/user.html:206 #, python-format msgid "%(time)s ago" -msgstr "" +msgstr "%(time)s trước" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" -msgstr "" +msgstr "Bạn có thực sự muốn xóa các địa chỉ email được chọn?" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" @@ -9105,11 +9580,11 @@ msgstr "Thiết lập giao diện" #: templates/InvenTree/settings/user_display.html:39 msgid "Select theme" -msgstr "" +msgstr "Chọn giao diện" #: templates/InvenTree/settings/user_display.html:50 msgid "Set Theme" -msgstr "" +msgstr "Đặt giao diện" #: templates/InvenTree/settings/user_display.html:58 msgid "Language Settings" @@ -9117,48 +9592,48 @@ msgstr "Thiết lập ngôn ngữ" #: templates/InvenTree/settings/user_display.html:67 msgid "Select language" -msgstr "" +msgstr "Chọn ngôn ngữ" #: templates/InvenTree/settings/user_display.html:83 #, python-format msgid "%(lang_translated)s%% translated" -msgstr "" +msgstr "%(lang_translated)s%% đã dịch" #: templates/InvenTree/settings/user_display.html:85 msgid "No translations available" -msgstr "" +msgstr "Chưa có bản dịch" #: templates/InvenTree/settings/user_display.html:92 msgid "Set Language" -msgstr "" +msgstr "Đặt ngôn ngữ" #: templates/InvenTree/settings/user_display.html:95 msgid "Some languages are not complete" -msgstr "" +msgstr "Một số ngôn ngữ chưa hoàn thiện" #: templates/InvenTree/settings/user_display.html:97 msgid "Show only sufficient" -msgstr "" +msgstr "Chỉ hiện phần thiếu" #: templates/InvenTree/settings/user_display.html:99 msgid "and hidden." -msgstr "" +msgstr "và bị ẩn." #: templates/InvenTree/settings/user_display.html:99 msgid "Show them too" -msgstr "" +msgstr "Cũng hiện chúng" #: templates/InvenTree/settings/user_display.html:106 msgid "Help the translation efforts!" -msgstr "" +msgstr "Giúp đỡ nguồn lực dịch thuật!" #: templates/InvenTree/settings/user_display.html:107 msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." -msgstr "" +msgstr "Dịch ngôn ngữ bạn địa của ứng dụng web được cộng đồng đóng góp qua crowdin. Mọi đóng góp đều được chào đón và khuyến khích." #: templates/InvenTree/settings/user_display.html:108 msgid "InvenTree Translation Project" -msgstr "" +msgstr "Dự án dịch InvenTree" #: templates/InvenTree/settings/user_homepage.html:9 msgid "Home Page Settings" @@ -9170,126 +9645,130 @@ msgstr "Cài đặt tìm kiếm" #: templates/InvenTree/settings/user_sso.html:9 msgid "Single Sign On Accounts" -msgstr "" +msgstr "Tài khoản đăng nhập một lần" #: templates/InvenTree/settings/user_sso.html:16 msgid "You can sign in to your account using any of the following third party accounts:" -msgstr "" +msgstr "Bạn có thể đăng nhập vào tài khoản của bạn bằng cách sử dụng bất kỳ tài khoản bên thứ ba:" #: templates/InvenTree/settings/user_sso.html:52 msgid "There are no social network accounts connected to this account." -msgstr "" +msgstr "Không có tài khoản mạng xã hội nào được kết nối đến tài khoản này." #: templates/InvenTree/settings/user_sso.html:58 msgid "Add SSO Account" -msgstr "" +msgstr "Thêm tài khoản SSO" #: templates/InvenTree/settings/user_sso.html:67 msgid "Single Sign On is not enabled for this server" -msgstr "" +msgstr "Máy chủ này chưa bật chức năng đăng nhập một lần" #: templates/about.html:9 msgid "InvenTree Version" -msgstr "" +msgstr "Phiên bản InvenTree" #: templates/about.html:14 msgid "Development Version" -msgstr "" +msgstr "Phiên bản phát triển" #: templates/about.html:17 msgid "Up to Date" -msgstr "" +msgstr "Mới nhất" #: templates/about.html:19 msgid "Update Available" -msgstr "" +msgstr "Có bản cập nhật mới" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "Commit Branch" + +#: templates/about.html:49 msgid "InvenTree Documentation" -msgstr "" +msgstr "Tài liệu InvenTree" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" -msgstr "" +msgstr "Phiên bản API" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" -msgstr "" +msgstr "Phiên bản Python" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" -msgstr "" +msgstr "Phiên bản Django" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" -msgstr "" +msgstr "Xem mã trên Github" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" -msgstr "" +msgstr "Đóng góp" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" -msgstr "" - -#: templates/about.html:77 -msgid "Submit Bug Report" -msgstr "" - -#: templates/about.html:84 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 -msgid "copy to clipboard" -msgstr "" +msgstr "Ứng dụng di động" #: templates/about.html:84 +msgid "Submit Bug Report" +msgstr "Gửi báo cáo lỗi" + +#: templates/about.html:91 templates/clip.html:4 +#: templates/js/translated/helpers.js:585 +msgid "copy to clipboard" +msgstr "sao chép đến bảng tạm" + +#: templates/about.html:91 msgid "copy version information" -msgstr "" +msgstr "sao chép thông tin phiên bản" #: templates/account/base.html:66 templates/navbar.html:17 msgid "InvenTree logo" -msgstr "" +msgstr "Logo InvenTree" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:9 msgid "Confirm Email Address" -msgstr "" +msgstr "Xác nhận địa chỉ email" #: templates/account/email_confirm.html:15 #, python-format msgid "Please confirm that %(email)s is an email address for user %(user_display)s." -msgstr "" +msgstr "Xin hãy xác nhận rằng %(email)s là địa chỉ email cho người dùng %(user_display)s." -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" -msgstr "" +msgstr "Xác nhận" #: templates/account/email_confirm.html:29 #, python-format msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request." -msgstr "" +msgstr "Liên kết xác nhận email đã hết hạn hoặc không hợp lệ. Xin hãy tạo yêu cầu xác nhận email mới." #: templates/account/login.html:6 templates/account/login.html:17 #: templates/account/login.html:38 templates/socialaccount/login.html:5 msgid "Sign In" -msgstr "" +msgstr "Đăng nhập" #: templates/account/login.html:21 msgid "Not a member?" -msgstr "" +msgstr "Chưa có tài khoản?" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 #: templates/socialaccount/signup.html:20 msgid "Sign Up" -msgstr "" +msgstr "Đăng ký" #: templates/account/login.html:45 msgid "Forgot Password?" -msgstr "" +msgstr "Quân mật khẩu?" #: templates/account/login.html:53 msgid "or log in with" -msgstr "" +msgstr "hoặc đăng nhập bằng" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:20 @@ -9303,161 +9782,161 @@ msgstr "Bạn có chắc bạn muốn đăng xuất không?" #: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 #: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 msgid "Return to Site" -msgstr "" +msgstr "Quay lại site" #: templates/account/password_reset.html:5 #: templates/account/password_reset.html:12 msgid "Password Reset" -msgstr "" +msgstr "Khôi phục mật khẩu" #: templates/account/password_reset.html:18 msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." -msgstr "" +msgstr "Quên mật khẩu của bạn? Nhập địa chỉ email của bạn bên dưới, và chúng tôi sẽ gửi cho bạn một email cho phép bạn khởi tại lại nó." #: templates/account/password_reset.html:23 msgid "Reset My Password" -msgstr "" +msgstr "Đặt lại mật khẩu của tôi" #: templates/account/password_reset.html:27 templates/account/signup.html:37 msgid "This function is currently disabled. Please contact an administrator." -msgstr "" +msgstr "Chức năng này đã bị cấm. Xin hãy liên hệ với một người quản trị." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" -msgstr "" +msgstr "Sai mã thông báo" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." -msgstr "" +msgstr "Liên kết tạo lại mật khẩu không hợp lệ, có thể nó đã được sử dụng rồi. Xin hãy gửi yêu cầu tạo lại mật khẩu mới." #: templates/account/password_reset_from_key.html:18 msgid "Change password" -msgstr "" +msgstr "Đổi mật khẩu" #: templates/account/password_reset_from_key.html:22 msgid "Your password is now changed." -msgstr "" +msgstr "Mật khẩu của bạn đã được thay đổi." #: templates/account/signup.html:13 #, python-format msgid "Already have an account? Then please sign in." -msgstr "" +msgstr "Bạn đã có một tài khoản? Xin hãy đăng nhập." #: templates/account/signup.html:28 msgid "Use a SSO-provider for signup" -msgstr "" +msgstr "Sử dụng một nhà cung cấp SSO để đăng ký" #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" -msgstr "" +msgstr "Đã đóng đăng ký" #: templates/account/signup_closed.html:10 msgid "Sign up is currently closed." -msgstr "" +msgstr "Hiện đang đóng chức năng đăng ký." #: templates/account/signup_closed.html:15 #: templates/socialaccount/authentication_error.html:19 #: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 msgid "Return to login page" -msgstr "" +msgstr "Quay lại trang đăng nhập" #: templates/admin_button.html:8 msgid "View in administration panel" -msgstr "" +msgstr "Xem trong bảng quản trị" #: templates/allauth_2fa/authenticate.html:5 msgid "Two-Factor Authentication" -msgstr "" +msgstr "Xác thực hai yếu tố" #: templates/allauth_2fa/authenticate.html:13 msgid "Authenticate" -msgstr "" +msgstr "Xác thực" #: templates/allauth_2fa/backup_tokens.html:6 msgid "Two-Factor Authentication Backup Tokens" -msgstr "" +msgstr "Mã thông báo (token) dự phòng của xác thực hai yếu tố" #: templates/allauth_2fa/backup_tokens.html:17 msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones." -msgstr "" +msgstr "Mã thông báo (token) dự phòng đã được tạo nhưng không được hiển thị vì lý do bảo mật. Ấn nút bên dưới để tạo những cái mới." #: templates/allauth_2fa/backup_tokens.html:20 msgid "No backup tokens are available. Press the button below to generate some." -msgstr "" +msgstr "Mã thông báo (token) dự phòng chưa có sẵn. Ấn nút bên dưới để tạo một vài mã." #: templates/allauth_2fa/backup_tokens.html:28 msgid "Generate Tokens" -msgstr "" +msgstr "Tạo mã thông báo" #: templates/allauth_2fa/remove.html:6 msgid "Disable Two-Factor Authentication" -msgstr "" +msgstr "Vô hiệu hóa xác thực 2 yếu tố" #: templates/allauth_2fa/remove.html:9 msgid "Are you sure?" -msgstr "" +msgstr "Bạn chắc chứ?" #: templates/allauth_2fa/remove.html:17 msgid "Disable 2FA" -msgstr "" +msgstr "Vô hiệu 2FA" #: templates/allauth_2fa/setup.html:6 msgid "Setup Two-Factor Authentication" -msgstr "" +msgstr "Cài đặt xác thực hai bước" #: templates/allauth_2fa/setup.html:10 msgid "Step 1" -msgstr "" +msgstr "Bước 1" #: templates/allauth_2fa/setup.html:14 msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." -msgstr "" +msgstr "Quét mã QR bên dưới với bộ sinh mã thông báo mà bạn chọn (cho thực thể Google Authentication)." #: templates/allauth_2fa/setup.html:23 msgid "Step 2" -msgstr "" +msgstr "Bước 2" #: templates/allauth_2fa/setup.html:27 msgid "Input a token generated by the app:" -msgstr "" +msgstr "Điền một mã thông báo đã sinh bởi ứng dụng:" #: templates/allauth_2fa/setup.html:37 msgid "Verify" -msgstr "" +msgstr "Xác minh" #: templates/attachment_button.html:4 templates/js/translated/attachment.js:70 msgid "Add Link" -msgstr "" +msgstr "Thêm liên kết" #: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 msgid "Add Attachment" -msgstr "" - -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" +msgstr "Thêm đính kèm" #: templates/barcode_data.html:5 msgid "Barcode Identifier" -msgstr "" +msgstr "Nhận dạng mã vạch" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" -msgstr "" +msgstr "Yêu cầu khởi động máy chủ" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" -msgstr "" +msgstr "Đã thay đổi tùy chọn cấu hình nên cần phải khởi động lại máy chủ" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" -msgstr "" +msgstr "Liên lạc với quản trị hệ thống của bạn để biết thêm thông tin" + +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "Di trú cơ sở dữ liệu đang chờ xử lý" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "Có di trú cơ sở dữ liệu đang chờ xử lý cần bạn lưu ý" #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 @@ -9467,2976 +9946,3140 @@ msgstr "" #: templates/email/purchase_order_received.html:9 #: templates/email/return_order_received.html:9 msgid "Click on the following link to view this order" -msgstr "" +msgstr "Nhấp chuột vào liên kết dưới đây để xem đơn đặt này" #: templates/email/build_order_required_stock.html:7 msgid "Stock is required for the following build order" -msgstr "" +msgstr "Kho là bắt buộc cho đơn đặt bản dựng sau đây" #: templates/email/build_order_required_stock.html:8 #, python-format msgid "Build order %(build)s - building %(quantity)s x %(part)s" -msgstr "" +msgstr "Đơn đặt bản dựng %(build)s - đang dựng %(quantity)s x %(part)s" #: templates/email/build_order_required_stock.html:10 msgid "Click on the following link to view this build order" -msgstr "" +msgstr "Nhấp vào liên kết dưới đây để xem đơn đặt bản dựng này" #: templates/email/build_order_required_stock.html:14 msgid "The following parts are low on required stock" -msgstr "" +msgstr "Sản phẩm sau còn ít hàng trong kho yêu cầu" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" -msgstr "" +msgstr "Số lượng bắt buộc" #: templates/email/build_order_required_stock.html:38 #: templates/email/low_stock_notification.html:30 msgid "You are receiving this email because you are subscribed to notifications for this part " -msgstr "" +msgstr "Bạn nhận được email này vì bạn đã đăng ký nhận thông báo cho sản phẩm này " #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" -msgstr "" +msgstr "Nhấp chuột vào liên kết dưới đây để xem sản phẩm này" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" -msgstr "" +msgstr "Số lượng tối thiểu" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" -msgstr "" +msgstr "Không phản hồi" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" -msgstr "" +msgstr "Máy chủ InvenTree không phản hồi" #: templates/js/translated/api.js:232 msgid "Error 400: Bad request" -msgstr "" +msgstr "Lỗi 400: Yêu cầu không hợp lệ" #: templates/js/translated/api.js:233 msgid "API request returned error code 400" -msgstr "" +msgstr "Yêu cầu API đã trả về mã lỗi 400" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" -msgstr "" +msgstr "Lỗi 401: Chưa được xác thực" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" -msgstr "" +msgstr "Chưa cung cấp chi tiết thông tin xác thực" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" -msgstr "" +msgstr "Lỗi 403: Quyền bị từ chối" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "" +msgstr "Bạn không có đủ quyền để truy cập chức năng này" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" -msgstr "" +msgstr "Lỗi 404: Không tìm thấy tài nguyên" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" -msgstr "" +msgstr "Không tìm thấy tài nguyên được yêu cầu có trên máy chủ" #: templates/js/translated/api.js:252 msgid "Error 405: Method Not Allowed" -msgstr "" +msgstr "Lỗi 405: Phương thức không được phép" #: templates/js/translated/api.js:253 msgid "HTTP method not allowed at URL" -msgstr "" +msgstr "Không được phép dùng giao thức HTTP trên URL" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "" +msgstr "Lỗi 408: Hết thời gian" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" -msgstr "" +msgstr "Kết nối hết thời gian trong khi dữ liệu được yêu cầu từ máy chủ" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" -msgstr "" +msgid "Error 503: Service Unavailable" +msgstr "Lỗi 503: Dịch vụ không có sẵn" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "Máy chủ hiện đang không có sẵn" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "Mã lỗi không thể bẫy được" + +#: templates/js/translated/api.js:266 msgid "Error code" -msgstr "" +msgstr "Mã lỗi" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" -msgstr "" +msgstr "Đã xóa toàn bộ tệp đính kèm đã chọn" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "Xóa đính kèm" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "Xóa đính kèm" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "Chức năng đính kèm" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" -msgstr "" +msgstr "Không tìm thấy tệp đính kèm" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "" - -#: templates/js/translated/attachment.js:326 -msgid "Upload Date" -msgstr "" +msgstr "Sửa tệp đính kèm" #: templates/js/translated/attachment.js:346 -msgid "Edit attachment" -msgstr "" +msgid "Upload Date" +msgstr "Ngày tải lên" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:366 +msgid "Edit attachment" +msgstr "Sửa đính kèm" + +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" -msgstr "" +msgstr "Xóa đính kèm" #: templates/js/translated/barcode.js:43 msgid "Scan barcode data here using barcode scanner" -msgstr "" +msgstr "Quét dữ liệu mã vạch ở đây sử dụng máy quét mã vạch" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "" +msgstr "Nhập dữ liệu mã vạch" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" -msgstr "" +msgstr "Quét mã vạch sử dụng webcam" #: templates/js/translated/barcode.js:138 msgid "Enter optional notes for stock transfer" -msgstr "" +msgstr "Nhập ghi chú tùy chọn cho chuyển kho" #: templates/js/translated/barcode.js:139 msgid "Enter notes" -msgstr "" +msgstr "Nhập ghi chú" #: templates/js/translated/barcode.js:188 msgid "Server error" -msgstr "" +msgstr "Lỗi mãy chủ" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" -msgstr "" +msgstr "Phản hồi không xác định từ máy chủ" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" -msgstr "" +msgstr "Phản hồi máy chủ không hợp lệ" #: templates/js/translated/barcode.js:372 msgid "Scan barcode data" -msgstr "" +msgstr "Quét dữ liệu mã vạch" #: templates/js/translated/barcode.js:420 templates/navbar.html:114 msgid "Scan Barcode" -msgstr "" +msgstr "Quét mã vạch" #: templates/js/translated/barcode.js:440 msgid "No URL in response" -msgstr "" +msgstr "Thiếu URL trong dữ liệu trả lời" #: templates/js/translated/barcode.js:481 msgid "This will remove the link to the associated barcode" -msgstr "" +msgstr "Điều này sẽ gỡ liên kết đến mã vạch đã được liên kết" #: templates/js/translated/barcode.js:487 msgid "Unlink" -msgstr "" +msgstr "Hủy liên kết" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" -msgstr "" +msgstr "Xóa mặt hàng" #: templates/js/translated/barcode.js:593 msgid "Scan Stock Items Into Location" -msgstr "" +msgstr "Quét mặt hàng vào trong vị trí" #: templates/js/translated/barcode.js:595 msgid "Scan stock item barcode to check in to this location" -msgstr "" +msgstr "Quét mã vạch mặt hàng để nhập vào vị trí này" #: templates/js/translated/barcode.js:598 #: templates/js/translated/barcode.js:795 msgid "Check In" -msgstr "" +msgstr "Đăng ký vào" #: templates/js/translated/barcode.js:630 msgid "No barcode provided" -msgstr "" +msgstr "Không cung cấp mã vạch" #: templates/js/translated/barcode.js:670 msgid "Stock Item already scanned" -msgstr "" +msgstr "Đã quét mặt hàng" #: templates/js/translated/barcode.js:674 msgid "Stock Item already in this location" -msgstr "" +msgstr "Đã quét mặt hàng vào vị trí này" #: templates/js/translated/barcode.js:681 msgid "Added stock item" -msgstr "" +msgstr "Đã thêm mặt hàng" #: templates/js/translated/barcode.js:690 msgid "Barcode does not match valid stock item" -msgstr "" +msgstr "Mã vạch không khớp với mặt hàng hợp lệ" #: templates/js/translated/barcode.js:709 msgid "Scan Stock Container Into Location" -msgstr "" +msgstr "Quét bộ chứa kho vào trong vị trí" #: templates/js/translated/barcode.js:711 msgid "Scan stock container barcode to check in to this location" -msgstr "" +msgstr "Quét mã vạch bộ chứa kho để nhập vào vị trí này" #: templates/js/translated/barcode.js:745 msgid "Barcode does not match valid stock location" -msgstr "" +msgstr "Mã vạch không khớp với vị trí kho hợp lệ" #: templates/js/translated/barcode.js:789 msgid "Check Into Location" -msgstr "" +msgstr "Kiểm tra vào vị trí" #: templates/js/translated/barcode.js:858 #: templates/js/translated/barcode.js:867 msgid "Barcode does not match a valid location" -msgstr "" +msgstr "Mã vạch không khớp với vị trí hợp lệ" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" -msgstr "" +msgstr "Tạo mục BOM" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" -msgstr "" +msgstr "Hiển thị dữ liệu dòng" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "" +msgstr "Dữ liệu dòng" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" -msgstr "" +msgstr "Đóng" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" -msgstr "" - -#: templates/js/translated/bom.js:350 -msgid "Multi Level BOM" -msgstr "" +msgstr "Tải mẫu BOM xuống" #: templates/js/translated/bom.js:351 -msgid "Include BOM data for subassemblies" -msgstr "" +msgid "Multi Level BOM" +msgstr "BOM đa cấp độ" -#: templates/js/translated/bom.js:356 -msgid "Levels" -msgstr "" +#: templates/js/translated/bom.js:352 +msgid "Include BOM data for subassemblies" +msgstr "Bao gồm dữ liệuBOM cho phụ kiện nhỏ" #: templates/js/translated/bom.js:357 -msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "" +msgid "Levels" +msgstr "Cấp độ" -#: templates/js/translated/bom.js:364 -msgid "Include Alternative Parts" -msgstr "" +#: templates/js/translated/bom.js:358 +msgid "Select maximum number of BOM levels to export (0 = all levels)" +msgstr "Chọn số tối đa của cấp độ BOM để xuất (0 = mọi cấp)" #: templates/js/translated/bom.js:365 -msgid "Include alternative parts in exported BOM" -msgstr "" +msgid "Include Alternative Parts" +msgstr "Bao gồm sản phẩm khác" -#: templates/js/translated/bom.js:370 -msgid "Include Parameter Data" -msgstr "" +#: templates/js/translated/bom.js:366 +msgid "Include alternative parts in exported BOM" +msgstr "Bao gồm sản phẩm khác trong BOM đã xuất" #: templates/js/translated/bom.js:371 -msgid "Include part parameter data in exported BOM" -msgstr "" +msgid "Include Parameter Data" +msgstr "Bao gồm dữ liệu tham số" -#: templates/js/translated/bom.js:376 -msgid "Include Stock Data" -msgstr "" +#: templates/js/translated/bom.js:372 +msgid "Include part parameter data in exported BOM" +msgstr "Bao gồm dữ liệu tham số sản phẩm trong BOM được xuất ra" #: templates/js/translated/bom.js:377 -msgid "Include part stock data in exported BOM" -msgstr "" +msgid "Include Stock Data" +msgstr "Bao gồm dữ liệu tồn kho" -#: templates/js/translated/bom.js:382 -msgid "Include Manufacturer Data" -msgstr "" +#: templates/js/translated/bom.js:378 +msgid "Include part stock data in exported BOM" +msgstr "Bao gồm dữ liệu tồn kho sản phẩm trong BOM xuất ra" #: templates/js/translated/bom.js:383 -msgid "Include part manufacturer data in exported BOM" -msgstr "" +msgid "Include Manufacturer Data" +msgstr "Bao gồm dữ liệu nhà sản xuất" -#: templates/js/translated/bom.js:388 -msgid "Include Supplier Data" -msgstr "" +#: templates/js/translated/bom.js:384 +msgid "Include part manufacturer data in exported BOM" +msgstr "Bao gồm dữ liệu nhà sản xuất sản phẩm trong BOM được xuất ra" #: templates/js/translated/bom.js:389 -msgid "Include part supplier data in exported BOM" -msgstr "" +msgid "Include Supplier Data" +msgstr "Bao gồm thông tin nhà cung cấp" -#: templates/js/translated/bom.js:394 -msgid "Include Pricing Data" -msgstr "" +#: templates/js/translated/bom.js:390 +msgid "Include part supplier data in exported BOM" +msgstr "Bao gồm dữ liệu sản phẩm nhà cung cấp trong BOM xuất ra" #: templates/js/translated/bom.js:395 +msgid "Include Pricing Data" +msgstr "Bao gồm thông tin giá" + +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" -msgstr "" +msgstr "Bao gồm dữ liệu định giá sản phẩm trong BOM xuất ra" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" -msgstr "" +msgstr "Xóa sản phẩm thay thế" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" -msgstr "" +msgstr "Chọn và thêm một sản phẩm thay thế mới sử dụng đầu vào bên dưới" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" -msgstr "" +msgstr "Bạn có muốn xóa liên kết sản phẩm thay thế này?" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" -msgstr "" - -#: templates/js/translated/bom.js:700 -msgid "Add Substitute" -msgstr "" +msgstr "Xóa sản phẩm thay thế" #: templates/js/translated/bom.js:701 +msgid "Add Substitute" +msgstr "Thêm thay thế" + +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" -msgstr "" +msgstr "Sửa phần thay thế mục BOM" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" -msgstr "" +msgstr "Sẽ xóa toàn bộ mục BOM" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" -msgstr "" +msgstr "Xóa mục BOM đã chọn?" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "Xóa mặt hàng" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" -msgstr "" +msgstr "Nạp BOM cho bộ phận lắp ghép" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" -msgstr "" +msgstr "Bộ phận lắp ghép có sẵn" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" -msgstr "" +msgstr "Kho biến thể được phép" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" -msgstr "" +msgstr "Sản phẩm thay thế" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" -msgstr "" +msgstr "Định giá BOM đã hoàn thành" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" -msgstr "" +msgstr "Định giá BOM chưa hoàn thành" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" -msgstr "" +msgstr "Chưa có thông tin định giá" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" -msgstr "" +msgstr "Không có sẵn kho" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" -msgstr "" +msgstr "Bao gồm biến thể và kho sản phẩm thay thế" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" -msgstr "" +msgstr "Bao gồm kho biến thể" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" -msgstr "" +msgstr "Bao gồm kho thay thế" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" -msgstr "" +msgstr "Vật tư tiêu hao" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" -msgstr "" +msgstr "Phê chuẩn mục BOM" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" -msgstr "" +msgstr "Dòng này đã được phê chuẩn" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" -msgstr "" +msgstr "Sửa sản phẩm thay thế" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" -msgstr "" +msgstr "Sửa mục BOM" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" -msgstr "" +msgstr "Xóa mục BOM" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" -msgstr "" +msgstr "Xem BOM" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" -msgstr "" +msgstr "Không tìm thấy mục BOM nào" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" -msgstr "" +msgstr "Sản phẩm bắt buộc" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" -msgstr "" +msgstr "Được kế thừa từ BOM cha" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" -msgstr "" +msgstr "Sửa đơn đặt bản dựng" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" -msgstr "" +msgstr "Tạo đơn đặt bản dựng" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" -msgstr "" +msgstr "Sửa đơn đặt bản dựng" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" -msgstr "" +msgstr "Bạn có chắc chắn muốn hủy bản dựng này?" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" -msgstr "" +msgstr "Mặt hàng đã được phân bổ vào đơn đặt bản dựng này" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" -msgstr "" +msgstr "Có đầu ra chưa hoàn thiện vẫn còn cho đơn đặt bản dựng này" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" -msgstr "" +msgstr "Đơn đặt bản dựng đã sẵn sàn được hoàn thiện" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" -msgstr "" +msgstr "Không thể hoàn thiện đơn đặt bản dựng vì đầu ra chưa hoàn thành" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" -msgstr "" +msgstr "Đơn đặt bản dựng chưa hoàn thành" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" -msgstr "" +msgstr "Hoàn thành đơn đặt bản dựng" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" -msgstr "" +msgstr "Số sêri có sẵn tiếp theo" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "Số seri mới nhất" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" -msgstr "" +msgstr "Hóa đơn vật liệu chứa sản phẩm có thể theo dõi được" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" -msgstr "" +msgstr "Dựng đầu ra phải được tạo một cách độc lập" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" -msgstr "" +msgstr "Sản phẩm được theo dõi có thể có số sêri được chỉ định" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "" +msgstr "Điền số sêri để tạo nhiều đầu ra bản dựng đơn lẻ" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" -msgstr "" +msgstr "Tạo đầu ra bản dựng" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" -msgstr "" - -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" -msgstr "" +msgstr "Chỉ định mặt hàng cho đầu ra bản dựng này" #: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" +msgstr "Phân bổ kho từ đầu ra bản dựng" + +#: templates/js/translated/build.js:436 msgid "Complete build output" -msgstr "" +msgstr "Hoàn thiện đầu ra bản dựng" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" -msgstr "" +msgstr "Loại bỏ đầu ra bản dựng" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" -msgstr "" +msgstr "Xóa đầu ra bản dựng" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" -msgstr "" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" +msgstr "Bạn có chắc chắn muốn phân bổ mặt hàng đã chọn từ bản dựng này?" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" -msgstr "" - -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 -msgid "Select Build Outputs" -msgstr "" - -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 -msgid "At least one build output must be selected" -msgstr "" - -#: templates/js/translated/build.js:581 -msgid "Selected build outputs will be marked as complete" -msgstr "" - -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 -msgid "Output" -msgstr "" - -#: templates/js/translated/build.js:609 -msgid "Complete Build Outputs" -msgstr "" - -#: templates/js/translated/build.js:706 -msgid "Selected build outputs will be marked as scrapped" -msgstr "" - -#: templates/js/translated/build.js:708 -msgid "Scrapped output are marked as rejected" -msgstr "" - -#: templates/js/translated/build.js:709 -msgid "Allocated stock items will no longer be available" -msgstr "" - -#: templates/js/translated/build.js:710 -msgid "The completion status of the build order will not be adjusted" -msgstr "" - -#: templates/js/translated/build.js:737 -msgid "Scrap Build Outputs" -msgstr "" - -#: templates/js/translated/build.js:827 -msgid "Selected build outputs will be deleted" -msgstr "" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" +msgstr "Phân bổ mặt hàng" +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 #: templates/js/translated/build.js:829 -msgid "Build output data will be permanently deleted" -msgstr "" +msgid "Select Build Outputs" +msgstr "Chọn đầu ra bản dựng" +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 #: templates/js/translated/build.js:830 +msgid "At least one build output must be selected" +msgstr "Ít nhất một đầu ra bản dựng phải được chọn" + +#: templates/js/translated/build.js:590 +msgid "Selected build outputs will be marked as complete" +msgstr "Đầu ra bản dựng được chọn sẽ được đánh dấu là hoàn thành" + +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 +msgid "Output" +msgstr "Đầu ra" + +#: templates/js/translated/build.js:622 +msgid "Complete Build Outputs" +msgstr "Hoàn thành đầu ra bản dựng" + +#: templates/js/translated/build.js:719 +msgid "Selected build outputs will be marked as scrapped" +msgstr "Đầu ra bản dựng đx chọn sẽ được đánh dấu là bị loại bỏ" + +#: templates/js/translated/build.js:721 +msgid "Scrapped output are marked as rejected" +msgstr "Đầu ra bị loại bỏ được đánh dấu là bị từ chối" + +#: templates/js/translated/build.js:722 +msgid "Allocated stock items will no longer be available" +msgstr "Mặt hàng được chỉ định không còn hàng nữa" + +#: templates/js/translated/build.js:723 +msgid "The completion status of the build order will not be adjusted" +msgstr "Trạng thái hoàn thành của đơn đặt bản dựng sẽ không được điều chỉnh" + +#: templates/js/translated/build.js:754 +msgid "Scrap Build Outputs" +msgstr "Loại bỏ đầu ra bản dựng" + +#: templates/js/translated/build.js:844 +msgid "Selected build outputs will be deleted" +msgstr "Sẽ xóa đầu ra bản dựng được chọn" + +#: templates/js/translated/build.js:846 +msgid "Build output data will be permanently deleted" +msgstr "Sẽ xóa vĩnh viễn dữ liệu đầu ra bản dựng" + +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" -msgstr "" +msgstr "Sẽ trả về kho mặt hàng được chỉ định" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" -msgstr "" +msgstr "Xóa đầu ra bản dựng" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" -msgstr "" +msgstr "No build order allocations found" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "Số lượng đã phân bổ" + +#: templates/js/translated/build.js:995 msgid "Location not specified" -msgstr "" +msgstr "Vị trí chưa được chỉ định" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "Hoàn thiện đầu ra" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "Loại bỏ đầu ra" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "Xóa đầu ra" + +#: templates/js/translated/build.js:1107 msgid "build output" -msgstr "" +msgstr "đầu ra bản dựng" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" -msgstr "" +msgstr "đầu ra bản dựng" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "Chức năng đầu ra bản dựng" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" -msgstr "" +msgstr "Không tìm thấy đầu ra bản dựng hoạt động" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" -msgstr "" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" +msgstr "Dòng đã phân bổ" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" -msgstr "" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" +msgstr "Kiểm thử bắt buộc" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" -msgstr "" +msgstr "Chọn sản phẩm" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" -msgstr "" +msgstr "Bạn phải chọn ít nhất một sản phẩm để phân bổ" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" -msgstr "" +msgstr "Xác định số lượng phân bổ kho" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" -msgstr "" +msgstr "Toàn bộ sản phẩm đã phân bổ" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" -msgstr "" +msgstr "Đã phân bổ tất cả sản phẩm đã chọn đầy đủ" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" -msgstr "" +msgstr "Chọn vị trí nguồn (để trống để lấy từ tất cả vị trí)" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" -msgstr "" +msgstr "Phân bổ mặt hàng đến đơn đặt bản dựng" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" -msgstr "" +msgstr "Không có vị trí kho trùng khớp" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" -msgstr "" +msgstr "Mặt hàng không phù hợp" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" -msgstr "" +msgstr "Phân kho tự động" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "" +msgstr "Mặt hàng sẽ được tự động phân bổ đến đơn đặt bản dựng này, theo chỉ dẫn đã được cung cấp" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" -msgstr "" +msgstr "Nếu một vị trí đã được chỉ định, kho sẽ chỉ phân bổ được từ vị trí đó" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" -msgstr "" +msgstr "Nếu kho được xem xét nhắc có thể thay đổi, nó sẽ tự động được phân bổ từ vị trí đầu tiên nó tìm thấy" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" -msgstr "" +msgstr "Nếu kho thay thế được phép, nó sẽ được dùng nơi kho của sản phẩm chính không thể tìm thấy được" -#: templates/js/translated/build.js:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" -msgstr "" +msgstr "Phân kho" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" -msgstr "" +msgstr "Không có bản dựng nào phù hợp truy vấn" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" -msgstr "" +msgstr "Chọn" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" -msgstr "" +msgstr "Đơn đặt bản dựng quá hạn" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" -msgstr "" +msgstr "Tiến trình" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" -msgstr "" +msgstr "Không có thông tin người dùng" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" -msgstr "" +msgstr "nhóm" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" -msgstr "" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" +msgstr "Sửa phân bổ kho" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "Xóa phân bổ kho" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "Sửa phân bổ" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "Xóa phân bổ" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "lộ giới" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "lộ giới" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "Không tìm thấy lộ giới" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "Sản phẩm theo dõi được" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "Số lượng đơn vị" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "Kho không đủ hạn mức khả dụng" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "Kho đủ hạn mức khả dụng" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "Vật tư tiêu hao" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "Mặt hàng đã theo dõi" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "Xây kho" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "Kho đặt hàng" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "Phân kho" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "Xóa phân bổ kho" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "" +msgstr "Thêm nhà sản xuất" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "" +msgstr "Sản phẩm nhà sản xuất" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "" +msgstr "Sửa sản phẩm nhà sản xuất" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "" +msgstr "Thêm nhà cung cấp" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" -msgstr "" +msgstr "Thêm sản phẩm nhà cung cấp" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" -msgstr "" +msgstr "Sẽ xóa toàn bộ sản phẩm nhà cung cấp đã chọn" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" -msgstr "" +msgstr "Xóa sản phẩm nhà cung cấp" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" -msgstr "" +msgstr "Thêm công ty mới" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" -msgstr "" +msgstr "Sản phẩm đã cung cấp" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "" +msgstr "Sản phẩm đã sản xuất" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" -msgstr "" +msgstr "Không tìm thấy thông tin công ty" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" -msgstr "" +msgstr "Tạo liên lạc mới" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" -msgstr "" +msgstr "Chỉnh sửa liên hệ" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" -msgstr "" - -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 -msgid "Role" -msgstr "" +msgstr "Tất cả liên hệ được chọn sẽ bị xóa" #: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 +msgid "Role" +msgstr "Vai trò" + +#: templates/js/translated/company.js:676 msgid "Delete Contacts" -msgstr "" +msgstr "Xoá liên hệ" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" -msgstr "" +msgstr "Không tìm thấy liên hệ" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" -msgstr "" +msgstr "Số điện thoại" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" -msgstr "" +msgstr "Địa chỉ email" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" -msgstr "" +msgstr "Xoá liên hệ" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "Tạo địa chỉ mới" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "Sửa địa chỉ" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "Tất cả địa chỉ đã được chọn sẽ bị xoá" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "Xoá địa chỉ" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "Không tìm thấy địa chỉ" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "Thành phố bưu chính" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "Bang/Tỉnh" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "Ghi chú chuyển phát nhanh" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "Lưu ý nội bộ" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "Xóa địa chỉ" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" -msgstr "" +msgstr "Sẽ xóa toàn bộ sản phẩm nhà sản xuất đã chọn" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" -msgstr "" +msgstr "Xóa sản phẩm của nhà sản xuất" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "Tất cả những thống số được chọn sẽ bị xoá" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "Xóa các thông số" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "Đặt hàng sản phẩm" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "Xóa sản phẩm của nhà sản xuất" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "Chức năng sản phẩm của nhà sản xuất" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" -msgstr "" +msgstr "Không tìm thấy nhà sản xuất" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" -msgstr "" +msgstr "Sản phẩm mẫu" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" -msgstr "" +msgstr "Sản phẩm đã lắp ráp" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "Không có thông số được tìm thấy" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" -msgstr "" +msgstr "Sửa tham số" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" -msgstr "" +msgstr "Xóa tham số" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" -msgstr "" +msgstr "Sửa tham số" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" -msgstr "" +msgstr "Xóa tham số" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "Xóa sản phẩm nhà cung cấp" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" -msgstr "" +msgstr "Không tìm thấy sản phẩm nhà cung cấp" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" -msgstr "" +msgstr "Đơn vị cơ sở" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" -msgstr "" +msgstr "Sẵn sàng" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" -msgstr "" +msgstr "Sửa sản phẩm nhà cung cấp" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" -msgstr "" +msgstr "Xóa sản phẩm nhà cung cấp" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" -msgstr "" +msgstr "Xóa phá giá" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" -msgstr "" +msgstr "Sửa phá giá" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" -msgstr "" +msgstr "Không tìm thấy thông tin phá giá" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "" +msgstr "Lần cập nhật trước" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" -msgstr "" +msgstr "Sửa phá giá" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" -msgstr "" +msgstr "Xóa phá giá" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" -msgstr "" +msgstr "đúng" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" -msgstr "" +msgstr "sai" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "" +msgstr "Chọn bộ lọc" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" -msgstr "" +msgstr "In nhãn" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" -msgstr "" +msgstr "In báo cáo" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" -msgstr "" - -#: templates/js/translated/filters.js:351 -msgid "Reload table data" -msgstr "" - -#: templates/js/translated/filters.js:360 -msgid "Add new filter" -msgstr "" - -#: templates/js/translated/filters.js:368 -msgid "Clear all filters" -msgstr "" +msgstr "Tải về dữ liệu bảng" #: templates/js/translated/filters.js:460 +msgid "Reload table data" +msgstr "Nạp lại dữ liệu bảng" + +#: templates/js/translated/filters.js:469 +msgid "Add new filter" +msgstr "Thêm bộ lọc mới" + +#: templates/js/translated/filters.js:477 +msgid "Clear all filters" +msgstr "Xóa tất cả bộ lọc" + +#: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "" +msgstr "Tạo bộ lọc" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" -msgstr "" +msgstr "Chức năng bị cấm" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" -msgstr "" +msgstr "Hoạt động tạo là không được phép" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" -msgstr "" +msgstr "Hoạt động cập nhật là không được phép" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" -msgstr "" +msgstr "Hoạt động xóa là không được phép" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" -msgstr "" +msgstr "Hoạt động xem là không được phép" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" -msgstr "" +msgstr "Giữ biểu mẫu này mở" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" -msgstr "" +msgstr "Nhập vào số hợp lệ" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" -msgstr "" +msgstr "Lỗi biểu mẫu tồn tại" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" -msgstr "" +msgstr "Không tìm thấy kết quả" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" -msgstr "" +msgstr "Đang tìm kiếm" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" -msgstr "" +msgstr "Dọn dẹp đầu vào" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" -msgstr "" +msgstr "Cột tệp tin" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" -msgstr "" +msgstr "Tên trường" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" -msgstr "" +msgstr "Chọn cột" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "" +msgstr "CÓ" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "" +msgstr "KHÔNG" #: templates/js/translated/helpers.js:93 msgid "True" -msgstr "" +msgstr "Đúng" #: templates/js/translated/helpers.js:94 msgid "False" -msgstr "" +msgstr "Sai" -#: templates/js/translated/label.js:58 -msgid "Select Printer" -msgstr "" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" +msgstr "Không bắt buộc sản phẩm cho bản dựng" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" -msgstr "" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "Kho hàng đã phân bổ" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" -msgstr "" +msgstr "Chọn hàng hóa" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" -msgstr "" +msgstr "Chưa chọn hàng hóa để in" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "" +msgstr "Nhãn không tồn tại" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" -msgstr "" +msgstr "Không tìm thấy mẫu nhãn phù hợp với hàng hóa đã chọn" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "đã chọn" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "Tùy chọn in ấn" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "In nhãn" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "In nhãn" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "In" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "Chọn mẫu nhãn" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "Chọn phần bổ sung" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" -msgstr "" +msgstr "Nhãn đã gửi đến máy in" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "" +msgstr "Hủy" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" -msgstr "" +msgstr "Gửi" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" -msgstr "" +msgstr "Tiêu đề biểu mẫu" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." -msgstr "" +msgstr "Đang đợi máy chủ..." -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" -msgstr "" +msgstr "Hiện thông tin lỗi" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" -msgstr "" +msgstr "Chấp nhận" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" -msgstr "" +msgstr "Đang tải dữ liệu" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" -msgstr "" +msgstr "Phản hồi không hợp lệ từ máy chủ" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" -msgstr "" +msgstr "Dữ liệu biểu mẫu thất lạc từ phản hồi máy chủ" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" -msgstr "" +msgstr "Lỗi đăng tải dữ liệu biểu mẫu" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" -msgstr "" +msgstr "Dữ liệu biểu mẫu trả về sai từ phản hồi JSON" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" -msgstr "" +msgstr "Lỗi 400: Yêu cầu không hợp lệ" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" -msgstr "" +msgstr "Máy chủ trả về mã lỗi 400" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" -msgstr "" +msgstr "Dữ liệu yêu cầu biểu mẫu lỗi" #: templates/js/translated/news.js:33 msgid "No news found" -msgstr "" +msgstr "Không tìm thấy tin tức" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" -msgstr "" +msgstr "ID" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" -msgstr "" +msgstr "Tuổi" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" -msgstr "" +msgstr "Thông báo" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" -msgstr "" +msgstr "Đánh dấu chưa đọc" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" -msgstr "" +msgstr "Đánh dấu đã đọc" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" -msgstr "" +msgstr "Không có thông báo chưa đọc" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" -msgstr "" +msgstr "Sẽ tải thông báo ở đây" #: templates/js/translated/order.js:89 msgid "Add Extra Line Item" -msgstr "" +msgstr "Thêm dòng mở rộng" #: templates/js/translated/order.js:126 msgid "Export Order" -msgstr "" +msgstr "Xuất đơn đặt" #: templates/js/translated/order.js:241 msgid "Duplicate Line" -msgstr "" +msgstr "Dùng trùng lặp" #: templates/js/translated/order.js:255 msgid "Edit Line" -msgstr "" +msgstr "Sửa dòng" #: templates/js/translated/order.js:268 msgid "Delete Line" -msgstr "" +msgstr "Xoá dòng" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" -msgstr "" +msgstr "Không tìm thấy mục dòng nào" #: templates/js/translated/order.js:369 msgid "Duplicate line" -msgstr "" +msgstr "Dòng trùng lặp" #: templates/js/translated/order.js:370 msgid "Edit line" -msgstr "" +msgstr "Sửa dòng" #: templates/js/translated/order.js:374 msgid "Delete line" -msgstr "" +msgstr "Xóa dòng" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" -msgstr "" +msgstr "Thuộc tính sản phẩm" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "" +msgstr "Tùy chọn tạo sản phẩm" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "" +msgstr "Tùy chọn nhân bản sản phẩm" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "" +msgstr "Thêm danh mục sản phẩm" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" -msgstr "" +msgstr "Danh mục cha" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" -msgstr "" +msgstr "Biểu tượng (tùy chọn) - Xuất toàn bộ biểu tượng sẵn có trên" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" -msgstr "" +msgstr "Tạo nhóm sản phẩm" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" -msgstr "" +msgstr "Tạo danh mục mới sau cái này" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" -msgstr "" +msgstr "Danh mục sản phẩm đã được tạo" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" -msgstr "" +msgstr "Sửa danh mục sản phẩm" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" -msgstr "" +msgstr "Bạn có thực sự muốn xóa danh mục sản phẩm không?" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" -msgstr "" +msgstr "Chuyển tới danh mục cha" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" -msgstr "" +msgstr "Xóa danh mục sản phẩm" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" -msgstr "" +msgstr "Chức năng cho sản phẩm trong danh mục này" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" -msgstr "" +msgstr "Chức năng cho danh mục con" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" -msgstr "" +msgstr "Tạo sản phẩm" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" -msgstr "" +msgstr "Tạo sản phẩm khác sau cái này" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" -msgstr "" +msgstr "Sản phẩm đã được tạo thành công" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" -msgstr "" +msgstr "Sửa sản phẩm" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" -msgstr "" +msgstr "Sản phẩm đã được sửa" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" -msgstr "" - -#: templates/js/translated/part.js:509 -msgid "Active Part" -msgstr "" - -#: templates/js/translated/part.js:510 -msgid "Part cannot be deleted as it is currently active" -msgstr "" - -#: templates/js/translated/part.js:524 -msgid "Deleting this part cannot be reversed" -msgstr "" - -#: templates/js/translated/part.js:526 -msgid "Any stock items for this part will be deleted" -msgstr "" - -#: templates/js/translated/part.js:527 -msgid "This part will be removed from any Bills of Material" -msgstr "" +msgstr "Tạo biến thể sản phẩm" #: templates/js/translated/part.js:528 +msgid "Active Part" +msgstr "Sản phẩm kích hoạt" + +#: templates/js/translated/part.js:529 +msgid "Part cannot be deleted as it is currently active" +msgstr "Không thể xóa sản phẩm vì nó đang hoạt động" + +#: templates/js/translated/part.js:543 +msgid "Deleting this part cannot be reversed" +msgstr "Không thể khôi phục việc xóa sản phẩm này" + +#: templates/js/translated/part.js:545 +msgid "Any stock items for this part will be deleted" +msgstr "Sẽ xóa bất kỳ mặt hàng nào của sản phẩm này" + +#: templates/js/translated/part.js:546 +msgid "This part will be removed from any Bills of Material" +msgstr "Sẽ xóa sản phẩm này khỏi hóa đơn vật liệu" + +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" -msgstr "" +msgstr "Sẽ xóa toàn bộ thông tin nhà sản xuất và nhà cung cấp cho sản phẩm này" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" -msgstr "" +msgstr "Xóa sản phẩm" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" -msgstr "" +msgstr "Bạn đã đăng ký nhận thông báo cho hàng hóa này" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" -msgstr "" - -#: templates/js/translated/part.js:578 -msgid "Subscribe to notifications for this item" -msgstr "" - -#: templates/js/translated/part.js:580 -msgid "You have unsubscribed to notifications for this item" -msgstr "" +msgstr "Bạn đã đăng ký nhận thông báo cho hàng hóa này" #: templates/js/translated/part.js:597 +msgid "Subscribe to notifications for this item" +msgstr "Đăng ký nhận thông báo cho hàng hóa này" + +#: templates/js/translated/part.js:599 +msgid "You have unsubscribed to notifications for this item" +msgstr "Bạn đã hủy đăng ký nhận thông báo cho hàng hóa này" + +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" -msgstr "" +msgstr "Phê chuẩn BOM sẽ đánh dấu từng hạng mục là hợp lệ" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" -msgstr "" +msgstr "Phê chuẩn hóa đơn vật liệu" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" -msgstr "" +msgstr "Hóa đơn vật liệu đã phê chuẩn" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" -msgstr "" +msgstr "Sao chép hóa đơn vật liệu" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" -msgstr "" +msgstr "Còn ít hàng" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" -msgstr "" +msgstr "Không có sẵn kho" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" -msgstr "" +msgstr "Nhu cầu" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" -msgstr "" +msgstr "Đơn vị" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" -msgstr "" +msgstr "Sản phẩm ảo" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" -msgstr "" +msgstr "Sản phẩm đã đăng ký" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" -msgstr "" +msgstr "Sản phẩm dùng để bán" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." -msgstr "" +msgstr "Lập lịch tạo báo cáo kiểm kê mới." -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." -msgstr "" +msgstr "Một khi đã hoàn thiện, báo cáo kiểm kê sẽ có thể tải về." -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" -msgstr "" +msgstr "Tạo báo cáo kiểm kê" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" -msgstr "" +msgstr "Báo cáo kiểm kê đã lên lịch" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" -msgstr "" +msgstr "Không có sẵn thông tin kiểm kê" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" -msgstr "" +msgstr "Sửa mục kiểm kê" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" -msgstr "" +msgstr "Xóa mục kiểm kê" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" -msgstr "" +msgstr "Không tìm thấy biến thể" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" -msgstr "" +msgstr "Không tìm thấy mẫu tham số sản phẩm" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" -msgstr "" +msgstr "Sửa mẫu tham số sản phẩm" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "Những thông số thuộc mẫu này cũng sẽ bị xóa" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" -msgstr "" +msgstr "Xóa mẫu tham số sản phẩm" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" -msgstr "" +msgstr "Không tìm thấy đơn đặt mua" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" -msgstr "" +msgstr "Hạng mục này quá hạn" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" -msgstr "" +msgstr "Nhận hạng mục" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" -msgstr "" +msgstr "Xóa mối quan hệ sản phẩm" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" -msgstr "" +msgstr "Xóa mối quan hệ sản phẩm" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" -msgstr "" +msgstr "Không tìm thấy sản phẩm" -#: templates/js/translated/part.js:2192 -msgid "parts" -msgstr "" - -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" -msgstr "" +msgstr "Phân nhóm sản phẩm cho sản phẩm đã chọn" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" -msgstr "" +msgstr "Đặt nhóm sản phẩm" -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" -msgstr "" +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "Phân nhóm" -#: templates/js/translated/part.js:2495 -msgid "Category is required" -msgstr "" +#: templates/js/translated/part.js:2283 +msgid "parts" +msgstr "sản phẩm" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "Không có danh mục" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "Hiển thị dạng danh sách" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "Hiển thị dạng lưới" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" -msgstr "" +msgstr "Không có phụ mục" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "" +msgstr "Hiển thị dạng cây" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" -msgstr "" +msgstr "Tải danh mục con" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" -msgstr "" +msgstr "Danh mục đã đăng ký" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" -msgstr "" +msgstr "Không có mẫu kiểm thử phù hợp với truy vấn" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" -msgstr "" +msgstr "Sửa kết quả kiểm thử" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" -msgstr "" +msgstr "Xóa kết quả kiểm thử" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" -msgstr "" +msgstr "Kiểm thử này đã được định nghĩa cho sản phẩm cha" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" -msgstr "" +msgstr "Sửa mấ kết quả kiếm thử" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" -msgstr "" +msgstr "Xóa mẫu kết quả kiểm thử" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" -msgstr "" +msgstr "Chưa xác định ngày" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" -msgstr "" +msgstr "Ngày đã xác định đã trôi qua" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" -msgstr "" +msgstr "Đầu cơ" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" -msgstr "" +msgstr "Không có sẵn thông tin lập lịch cho sản phẩm này" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" -msgstr "" +msgstr "Lỗi gọi thông tin lập lịch cho sản phẩm này" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" -msgstr "" +msgstr "Số lượng kho đã lập lịch" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" -msgstr "" +msgstr "Số lượng tối đa" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" -msgstr "" +msgstr "Cấp kho tối thiểu" #: templates/js/translated/plugin.js:45 msgid "No plugins found" -msgstr "" +msgstr "Không tìm thấy phần bổ sung nào" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "Phần bổ sung không còn được cài đặt" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" -msgstr "" +msgstr "Phần bổ sung đã hoạt động" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" -msgstr "" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" +msgstr "Phần bổ sung này đã được cài đặt nhưng không hoạt động" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" -msgstr "" +msgstr "Tắt phần bổ sung" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" -msgstr "" +msgstr "Bật phần bổ sung" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" -msgstr "" +msgstr "Phần bổ sung đã được cài đặt" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" -msgstr "" +msgstr "Bạn có muốn bật phần bổ sung này?" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" -msgstr "" +msgstr "Bạn có muốn phần bổ sung này?" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" -msgstr "" +msgstr "Bật" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" -msgstr "" +msgstr "Tắt" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" -msgstr "" +msgstr "Đã cập nhật phần bổ sung" #: templates/js/translated/pricing.js:159 msgid "Error fetching currency data" -msgstr "" +msgstr "Lỗi khi tải thông tin tiền tệ" #: templates/js/translated/pricing.js:321 msgid "No BOM data available" -msgstr "" +msgstr "Không có sẵn thông tin BOM" #: templates/js/translated/pricing.js:463 msgid "No supplier pricing data available" -msgstr "" +msgstr "Không có sẵn thông tin định giá nhà cung cấp" #: templates/js/translated/pricing.js:572 msgid "No price break data available" -msgstr "" +msgstr "Không có sẵn dữ liệu phá giá" #: templates/js/translated/pricing.js:755 msgid "No purchase history data available" -msgstr "" +msgstr "Không có sẵn dữ liệu lịch sử mua hàng" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" -msgstr "" +msgstr "Lịch sử giá mua hàng" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" -msgstr "" +msgstr "Không có sẵn lịch sử bán hàng" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" -msgstr "" +msgstr "Lịch sử giá bán" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" -msgstr "" +msgstr "Không có sẵn dữ liệu biến thể" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" -msgstr "" +msgstr "Sản phẩm biến thể" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" -msgstr "" +msgstr "Chọn đơn đặt mua để nhân bản" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" -msgstr "" +msgstr "Nhân bản hạng mục" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" -msgstr "" +msgstr "Nhân bản toàn bộ hạng mục từ đơn đặt đã chọn" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" -msgstr "" +msgstr "Nhân bản dòng mở rộng" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" -msgstr "" +msgstr "Nhân bản hạng mục mở rộng từ đơn đặt đã chọn" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" -msgstr "" +msgstr "Chỉnh sửa đơn đặt mua" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" -msgstr "" +msgstr "Tùy chọn nhân bản" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" -msgstr "" - -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 -msgid "Mark this order as complete?" -msgstr "" - -#: templates/js/translated/purchase_order.js:459 -msgid "All line items have been received" -msgstr "" +msgstr "Hoàn thành đơn đặt mua" #: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 +msgid "Mark this order as complete?" +msgstr "Đánh dấu đơn đặt đã hoàn thành?" + +#: templates/js/translated/purchase_order.js:470 +msgid "All line items have been received" +msgstr "Tất cả mục dòng đã nhận được" + +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." -msgstr "" +msgstr "Đơn đặt này có mục dòng chưa được đánh dấu là đã nhận được." -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." -msgstr "" - -#: templates/js/translated/purchase_order.js:488 -msgid "Cancel Purchase Order" -msgstr "" - -#: templates/js/translated/purchase_order.js:493 -msgid "Are you sure you wish to cancel this purchase order?" -msgstr "" +msgstr "Hoàn thành đơn đặt này nghĩa là đơn đặt và mục dòng sẽ không thể sửa được nữa." #: templates/js/translated/purchase_order.js:499 +msgid "Cancel Purchase Order" +msgstr "Hủy đơn đặt mua" + +#: templates/js/translated/purchase_order.js:504 +msgid "Are you sure you wish to cancel this purchase order?" +msgstr "Bạn có muốn hủy đơn đặt mua này?" + +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" -msgstr "" +msgstr "Không thể hủy đơn đặt mua này" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." -msgstr "" +msgstr "Sau khi đặt đơn này, sẽ không thể sửa mục dòng được nữa." -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" -msgstr "" +msgstr "Phát hành đơn đặt mua" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" -msgstr "" +msgstr "Phải chọn ít nhất 1 sản phẩm có thể mua được" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" -msgstr "" +msgstr "Số lượng cần đặt" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" -msgstr "" +msgstr "Sản phẩm nhà cung cấp mới" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" -msgstr "" +msgstr "Đơn đặt mua mới" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" -msgstr "" +msgstr "Thêm vào đơn đặt mua" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" -msgstr "" +msgstr "Không thấy sản phẩm nhà cung cấp trùng khớp" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" -msgstr "" +msgstr "Không thấy đơn đặt mua trùng khớp" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" -msgstr "" +msgstr "Chọn mục dòng" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" -msgstr "" +msgstr "Phải chọn ít nhất một mục dòng" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" -msgstr "" +msgstr "Số lượng đã nhận" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" -msgstr "" +msgstr "Số lượng cần nhận" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" -msgstr "" - -#: templates/js/translated/purchase_order.js:1175 -msgid "Add barcode" -msgstr "" - -#: templates/js/translated/purchase_order.js:1176 -msgid "Remove barcode" -msgstr "" - -#: templates/js/translated/purchase_order.js:1179 -msgid "Specify location" -msgstr "" - -#: templates/js/translated/purchase_order.js:1187 -msgid "Add batch code" -msgstr "" +msgstr "Trạng thái kho" #: templates/js/translated/purchase_order.js:1198 +msgid "Add barcode" +msgstr "Thêm mã vạch" + +#: templates/js/translated/purchase_order.js:1199 +msgid "Remove barcode" +msgstr "Xóa mã vạch" + +#: templates/js/translated/purchase_order.js:1202 +msgid "Specify location" +msgstr "Chỉ định địa điểm" + +#: templates/js/translated/purchase_order.js:1210 +msgid "Add batch code" +msgstr "Thêm hàng loạt mã" + +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" -msgstr "" +msgstr "Thêm số sêri" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" -msgstr "" +msgstr "Sêri" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" -msgstr "" - -#: templates/js/translated/purchase_order.js:1277 -msgid "Quantity to Receive" -msgstr "" - -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 -msgid "Confirm receipt of items" -msgstr "" +msgstr "Mã đơn đặt" #: templates/js/translated/purchase_order.js:1300 +msgid "Quantity to Receive" +msgstr "Số lượng cần nhận" + +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 +msgid "Confirm receipt of items" +msgstr "Xác nhận đơn nhận hàng hóa" + +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" -msgstr "" +msgstr "Nhận hàng hóa đặt mua" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" -msgstr "" +msgstr "Quét mã vạch hàng hóa" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" -msgstr "" +msgstr "Quét mã vạch trên hàng hóa đầu vào (phải không khớp với bất kỳ hàng hóa nào đang tồn tại)" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" -msgstr "" +msgstr "Dữ liệu mã vạch không hợp lệ" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" -msgstr "" +msgstr "Đơn đặt đã quá hạn" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" -msgstr "" +msgstr "Hàng hóa" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" -msgstr "" +msgstr "Đã xóa toàn bộ mục dòng được chọn" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" -msgstr "" +msgstr "Xóa mục dòng đã chọn?" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" -msgstr "" +msgstr "Nhân bản mục dòng" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 -msgid "Edit Line Item" -msgstr "" - -#: templates/js/translated/purchase_order.js:1910 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 #: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/sales_order.js:2080 +msgid "Edit Line Item" +msgstr "Sửa mục dòng" + +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" -msgstr "" +msgstr "Xóa mục dòng" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" -msgstr "" +msgstr "Nhân bản mục dòng" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" -msgstr "" +msgstr "Sửa mục dòng" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" -msgstr "" +msgstr "Xóa mục dòng" #: templates/js/translated/report.js:63 msgid "items selected" -msgstr "" +msgstr "hàng hóa đã chọn" #: templates/js/translated/report.js:71 msgid "Select Report Template" -msgstr "" +msgstr "Chọn mẫu báo cáo" #: templates/js/translated/report.js:86 msgid "Select Test Report Template" -msgstr "" +msgstr "Chọn mẫu báo cáo kiểm thử" #: templates/js/translated/report.js:140 msgid "No Reports Found" -msgstr "" +msgstr "Không tìm thấy báo cáo" #: templates/js/translated/report.js:141 msgid "No report templates found which match the selected items" -msgstr "" +msgstr "Không tìm thấy mẫu báo cáo phù hợp với hàng hóa đã chọn" #: templates/js/translated/return_order.js:60 #: templates/js/translated/sales_order.js:86 msgid "Add Customer" -msgstr "" +msgstr "Thêm khách hàng" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" -msgstr "" +msgstr "Tạo đơn hàng trả lại" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" -msgstr "" +msgstr "Sửa đơn hàng trả lại" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" -msgstr "" +msgstr "Phát hành đơn hàng trả lại" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" -msgstr "" +msgstr "Bạn có muốn hủy đơn hàng trả lại này?" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" -msgstr "" +msgstr "Hủy đơn hàng trả lại" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" -msgstr "" +msgstr "Hoàn thành đơn hàng trả lại" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" -msgstr "" +msgstr "Không tìm thấy đơn hàng trả lại" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" -msgstr "" +msgstr "Sai khách hàng" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" -msgstr "" +msgstr "Nhận hàng hóa trả lại" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" -msgstr "" +msgstr "Không thấy hàng hóa phù hợp" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" -msgstr "" +msgstr "Đánh dấu hàng hóa đã được nhận" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" -msgstr "" +msgstr "Tạo đơn hàng bán" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" -msgstr "" +msgstr "Sửa đơn hàng bán" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" -msgstr "" +msgstr "Chưa phân bổ mặt hàng vào chuyển hàng này" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" -msgstr "" +msgstr "Mặt hàng dưới đây sẽ được vận chuyển" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" -msgstr "" +msgstr "Hoàn thành chuyến hàng" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" -msgstr "" +msgstr "Xác nhận chuyến hàng" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" -msgstr "" +msgstr "Không tìm thấy chuyển hàng chờ duyệt" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" -msgstr "" +msgstr "Không có mặt hàng được phân bổ vào chuyến hàng đang chờ xử lý" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" -msgstr "" +msgstr "Hoàn thiện chuyến hàng" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" -msgstr "" +msgstr "Bỏ qua" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." -msgstr "" +msgstr "Đơn hàng này có hạng mục chưa được hoàn thiện." -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" -msgstr "" +msgstr "Phát hành đơn hàng bán này?" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" -msgstr "" +msgstr "Phát hành đơn hàng bán" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" -msgstr "" +msgstr "Hủy đơn hàng bán" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." -msgstr "" +msgstr "Hủy bỏ đơn hàng này nghĩa là đơn hàng không thể sửa được nữa." -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" -msgstr "" +msgstr "Tạo chuyến hàng mới" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" -msgstr "" +msgstr "Không tìm thấy đơn hàng bán" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" -msgstr "" +msgstr "Sửa chuyến hàng" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" -msgstr "" +msgstr "Hoàn thành chuyến hàng" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" -msgstr "" +msgstr "Xóa chuyến hàng" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" -msgstr "" +msgstr "Sửa chuyến hàng" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" -msgstr "" +msgstr "Xóa chuyến hàng" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" -msgstr "" +msgstr "Không tìm thấy chuyển hàng phù hợp" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" -msgstr "" +msgstr "Tham chiếu chuyến hàng" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" -msgstr "" +msgstr "Chưa giao hàng" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" -msgstr "" +msgstr "Đang theo dõi" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" -msgstr "" +msgstr "Hoá đơn" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" -msgstr "" +msgstr "Thêm chuyến hàng" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" -msgstr "" +msgstr "Xác nhận phân bổ kho" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" -msgstr "" +msgstr "Phân bổ mặt hàng vào đơn hàng bán" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" -msgstr "" +msgstr "Phân bổ đơn hàng bán không tồn tại" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" -msgstr "" +msgstr "Sửa phân bổ kho" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" -msgstr "" +msgstr "Xác nhận hoạt động xóa" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" -msgstr "" +msgstr "Xóa phân bổ kho" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" -msgstr "" +msgstr "Đã vận chuyển đến khách hàng" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" -msgstr "" +msgstr "Vị trí kho không được chỉ định" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" -msgstr "" +msgstr "Phân bổ số sêri" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" -msgstr "" +msgstr "Kho mua" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" -msgstr "" +msgstr "Tính giá" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" -msgstr "" +msgstr "Không thể xóa hàng hóa đã được vận chuyển" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" -msgstr "" +msgstr "Không thể xóa hàng hóa đã được phân bổ" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" -msgstr "" +msgstr "Phân bổ số sêri" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" -msgstr "" +msgstr "Cập nhật đơn giá" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" -msgstr "" +msgstr "Không có kết quả" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" -msgstr "" +msgstr "Nhập truy vấn tìm kiếm" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" -msgstr "" +msgstr "kết quả" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" -msgstr "" +msgstr "kết quả" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" -msgstr "" +msgstr "Thu nhỏ kết quả" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" -msgstr "" +msgstr "Xóa kết quả" #: templates/js/translated/stock.js:98 msgid "Serialize Stock Item" -msgstr "" +msgstr "Sắp xếp hàng hóa trong kho" #: templates/js/translated/stock.js:129 msgid "Confirm Stock Serialization" -msgstr "" +msgstr "Xác nhận trình tự kho" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "Biểu tượng mặc định cho vị trí không được thiết lập biểu tượng (tùy chọn) - Xem toàn bộ biểu tượng trên" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" -msgstr "" +msgstr "Vị trí kho cha" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "Thêm loại địa điểm" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" -msgstr "" +msgstr "Sửa vị trí kho" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" -msgstr "" +msgstr "Vị trí kho mới" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" -msgstr "" +msgstr "Tạo vị trí khác sau cái này" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" -msgstr "" +msgstr "Vị trí kho đã được tạo" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" -msgstr "" +msgstr "Bạn có muốn xóa vị trí kho này?" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" -msgstr "" +msgstr "Di chuyển đến vị trí kho cha" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" -msgstr "" +msgstr "Xóa vị trí kho" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" -msgstr "" +msgstr "Chức năng cho mặt hàng trong vị trí kho này" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" -msgstr "" +msgstr "Chức năng cho vị trí con" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" -msgstr "" +msgstr "Không thể trình tự hóa sản phẩm này" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" -msgstr "" +msgstr "Thêm số lượng đã có theo gói thay vì mặt hàng đơn lẻ" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" -msgstr "" +msgstr "Nhập số lượng ban đầu cho mặt hàng này" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" -msgstr "" +msgstr "Nhập số sêri cho kho mới (hoặc bỏ trống)" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" -msgstr "" +msgstr "Mặt hàng đã được nhân bản" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" -msgstr "" +msgstr "Nhân bản mặt hàng" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" -msgstr "" +msgstr "Bạn có muốn xóa mặt hàng này?" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" -msgstr "" +msgstr "Xóa mặt hàng" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" -msgstr "" +msgstr "Sửa mặt hàng" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" -msgstr "" +msgstr "Tạo mặt hàng khác sau cái này" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" -msgstr "" +msgstr "Thêm mới mặt hàng" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" -msgstr "" +msgstr "Nhiều mặt hàng đã tạo" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" -msgstr "" +msgstr "Tìm số sêri" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "" +msgstr "Điền số sêri" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "" +msgstr "Điền một số sêri" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" -msgstr "" +msgstr "Số sêri không trùng khớp" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" -msgstr "" +msgstr "Tìm thấy nhiều hơn một kết quả phù hợp" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" -msgstr "" +msgstr "Xác nhận phân kho" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" -msgstr "" +msgstr "Phân kho đến khách hàng" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" -msgstr "" +msgstr "Cảnh báo: Hoạt động gộp không thể phục hồi" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" -msgstr "" +msgstr "Một số thông tin sẽ mất khi gộp mặt hàng" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" -msgstr "" +msgstr "Sẽ xóa lịch sử giao dịch kho cho việc gộp hàng hóa" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" -msgstr "" +msgstr "Sẽ xóa thông tin sản phẩm nhà cung cấp khi gộp hàng hóa" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" -msgstr "" +msgstr "Xác nhận gộp mặt hàng" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" -msgstr "" +msgstr "Gộp mặt hàng" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" -msgstr "" +msgstr "Chuyển kho" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" -msgstr "" +msgstr "Di chuyển" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" -msgstr "" +msgstr "Đếm hàng" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" -msgstr "" +msgstr "Đếm" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" -msgstr "" +msgstr "Xóa hàng hóa" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" -msgstr "" +msgstr "Lấy" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "" +msgstr "Thêm kho" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" -msgstr "" +msgstr "Thêm" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "" +msgstr "Xóa kho" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" -msgstr "" +msgstr "Không thể điều chỉnh số lượng cho kho tuần tự" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" -msgstr "" +msgstr "Chỉ ra số lượng kho" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" -msgstr "" +msgstr "Chọn mặt hàng" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" -msgstr "" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "Chọn ít nhất một mặt hàng có sẵn" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" -msgstr "" +msgstr "Xác nhận điều chỉnh kho" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" -msgstr "" +msgstr "QUA" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" -msgstr "" +msgstr "HỎNG" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" -msgstr "" +msgstr "KHÔNG KẾT QUẢ" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" -msgstr "" +msgstr "Qua kiểm thử" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" -msgstr "" +msgstr "Thêm kết quả kiểm thử" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" -msgstr "" +msgstr "Không tìm thấy kết quả kiểm thử" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" -msgstr "" +msgstr "Ngày kiểm thử" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" -msgstr "" +msgstr "Sửa kết quả kiểm thử" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" -msgstr "" +msgstr "Xóa kết quả kiểm thử" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" -msgstr "" +msgstr "Đang sản xuất" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" -msgstr "" +msgstr "Đã cài đặt trong mặt hàng" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" -msgstr "" +msgstr "Được chỉ định đơn hàng bán" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" -msgstr "" +msgstr "Chưa đặt vị trí kho" -#: templates/js/translated/stock.js:1746 -msgid "stock items" -msgstr "" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "Đổi vị trí kho" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" -msgstr "" - -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" -msgstr "" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "Gộp kho" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "Xóa kho" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "mặt hàng" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "Quét đến vị trí" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "Chức năng kho" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "Tải mặt hàng đã cài đặt" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "Mặt hàng đang được sản xuất" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "Mặt hàng đã được chỉ định vào đơn hàng bán" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "Mặt hàng được chỉ định cho khách hàng" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "Mặt hàng tuần tự đã được phân bổ" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "Mặt hàng đã được phân bổ toàn phần" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "Mặt hàng đã được phân bổ từng phần" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" -msgstr "" +msgstr "Mặt hàng đã được cài đặt trong hàng hóa khác" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" -msgstr "" +msgstr "Mặt hàng đã bị lấy đi bởi đơn đặt bản dựng" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" -msgstr "" +msgstr "Mặt hàng đã hết hạn" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" -msgstr "" +msgstr "Mặt hàng sắp hết hạn" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" -msgstr "" +msgstr "Mặt hàng đã bị từ chối" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" -msgstr "" +msgstr "Mặt hàng đã mất" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" -msgstr "" +msgstr "Mặt hàng đã bị phá hủy" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" -msgstr "" +msgstr "Cạn kiệt" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" -msgstr "" +msgstr "Sản phẩm nhà cung cấp chưa được chỉ định" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" -msgstr "" +msgstr "Giá trị kho" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" -msgstr "" +msgstr "Không tìm thấy mặt hàng theo truy vấn tìm kiếm" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" -msgstr "" +msgstr "vị trí kho hàng" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" -msgstr "" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" +msgstr "Tải vị trí phụ" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "" +msgstr "Chi tiết" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" -msgstr "" +msgstr "Không thay đổi" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" -msgstr "" +msgstr "Thông tin sản phẩm không có sẵn" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" -msgstr "" +msgstr "Vị trí không còn tồn tại" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" -msgstr "" +msgstr "Đơn đặt bản dựng không tồn tại" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" -msgstr "" +msgstr "Đơn đặt mua không còn tồn tại" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" -msgstr "" +msgstr "Đơn hàng bán không còn tồn tại" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" -msgstr "" +msgstr "Đơn hàng trả lại không còn tồn tại" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" -msgstr "" +msgstr "Khách hàng không còn tồn tại" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" -msgstr "" +msgstr "Mặt hàng không còn tồn tại nữa" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" -msgstr "" +msgstr "Đã thêm" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" -msgstr "" +msgstr "Đã xóa" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" -msgstr "" +msgstr "Chưa có hàng hóa được cài đặt" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" -msgstr "" +msgstr "Gỡ bỏ mặt hàng" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" -msgstr "" +msgstr "Chọn mặt hàng để gỡ bỏ" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" -msgstr "" +msgstr "Cài đặt mặt hàng khác vào trong hàng hóa này" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" -msgstr "" +msgstr "Chỉ có thể cài đặt hàng hóa nếu chúng phù hợp điều kiện sau" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" -msgstr "" +msgstr "Liên kết mặt hàng đến một sản phẩm là BOM cho mặt hàng này" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" -msgstr "" +msgstr "Mặt hàng hiện có trong kho" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" -msgstr "" +msgstr "Mặt hàng hiện chưa được cài đặt trong hàng hóa khác" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" -msgstr "" +msgstr "Mặt hàng được theo dõi bởi hoặc là mã lô hoặc là số sêri" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" -msgstr "" +msgstr "Chọn sản phẩm để cài đặt" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "Chọn một hoặc nhiều hơn mặt hàng" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "Mặt hàng đã chọn" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "Đổi trạng thái kho" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" -msgstr "" +msgstr "Có mã dự án" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 -msgid "Order status" -msgstr "" - -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 -msgid "Outstanding" -msgstr "" - -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 -msgid "Assigned to me" -msgstr "" - -#: templates/js/translated/table_filters.js:128 -msgid "Trackable Part" -msgstr "" - -#: templates/js/translated/table_filters.js:132 -msgid "Assembled Part" -msgstr "" - -#: templates/js/translated/table_filters.js:136 -msgid "Has Available Stock" -msgstr "" - -#: templates/js/translated/table_filters.js:152 -msgid "Allow Variant Stock" -msgstr "" - -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 -msgid "Has Pricing" -msgstr "" - -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 -msgid "Include sublocations" -msgstr "" - -#: templates/js/translated/table_filters.js:205 -msgid "Include locations" -msgstr "" - -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 -msgid "Include subcategories" -msgstr "" - -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 -msgid "Subscribed" -msgstr "" - -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 -msgid "Is Serialized" -msgstr "" - -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 -msgid "Serial number GTE" -msgstr "" - -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 -msgid "Serial number greater than or equal to" -msgstr "" - -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 -msgid "Serial number LTE" -msgstr "" - -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 -msgid "Serial number less than or equal to" -msgstr "" - -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 -msgid "Serial number" -msgstr "" - -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 -msgid "Batch code" -msgstr "" - -#: templates/js/translated/table_filters.js:271 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 #: templates/js/translated/table_filters.js:613 -msgid "Active parts" -msgstr "" +#: templates/js/translated/table_filters.js:654 +msgid "Order status" +msgstr "Trạng thái đơn" -#: templates/js/translated/table_filters.js:272 -msgid "Show stock for active parts" -msgstr "" +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 +msgid "Outstanding" +msgstr "Nổi bật" -#: templates/js/translated/table_filters.js:277 -msgid "Part is an assembly" -msgstr "" +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 +msgid "Assigned to me" +msgstr "Được phân công cho tôi" -#: templates/js/translated/table_filters.js:281 -msgid "Is allocated" -msgstr "" +#: templates/js/translated/table_filters.js:158 +msgid "Trackable Part" +msgstr "Sản phẩm theo dõi được" -#: templates/js/translated/table_filters.js:282 -msgid "Item has been allocated" -msgstr "" +#: templates/js/translated/table_filters.js:162 +msgid "Assembled Part" +msgstr "Sản phẩm đã lắp ráp" + +#: templates/js/translated/table_filters.js:166 +msgid "Has Available Stock" +msgstr "Số hàng tồn" + +#: templates/js/translated/table_filters.js:182 +msgid "Allow Variant Stock" +msgstr "Cho phép hàng tồn biển thể" + +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 +msgid "Has Pricing" +msgstr "Có định giá" + +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 +msgid "Include sublocations" +msgstr "Bao gồm vị trí phụ" + +#: templates/js/translated/table_filters.js:235 +msgid "Include locations" +msgstr "Bao gồm vị trí phụ" + +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "Có loại vị trí" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 +msgid "Include subcategories" +msgstr "Bao gồm danh mục con" #: templates/js/translated/table_filters.js:287 -msgid "Stock is available for use" -msgstr "" +#: templates/js/translated/table_filters.js:755 +msgid "Subscribed" +msgstr "Đã đăng ký" -#: templates/js/translated/table_filters.js:292 -msgid "Include stock in sublocations" -msgstr "" +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 +msgid "Is Serialized" +msgstr "Được tuần tự hóa" -#: templates/js/translated/table_filters.js:297 -msgid "Show stock items which are depleted" -msgstr "" +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 +msgid "Serial number GTE" +msgstr "Số sêri GTE" #: templates/js/translated/table_filters.js:302 -msgid "Show items which are in stock" -msgstr "" +#: templates/js/translated/table_filters.js:388 +msgid "Serial number greater than or equal to" +msgstr "Số sêri lớn hơn hoặc bằng" + +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 +msgid "Serial number LTE" +msgstr "Số sêri LTE" #: templates/js/translated/table_filters.js:306 -msgid "In Production" -msgstr "" +#: templates/js/translated/table_filters.js:392 +msgid "Serial number less than or equal to" +msgstr "Số sêri nhỏ hơn hoặc bằng" -#: templates/js/translated/table_filters.js:307 -msgid "Show items which are in production" -msgstr "" +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 +msgid "Serial number" +msgstr "Số sê-ri" -#: templates/js/translated/table_filters.js:311 -msgid "Include Variants" -msgstr "" +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 +msgid "Batch code" +msgstr "Mã lô hàng" -#: templates/js/translated/table_filters.js:312 -msgid "Include stock items for variant parts" -msgstr "" +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 +msgid "Active parts" +msgstr "Sản phẩm hoạt động" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" +#: templates/js/translated/table_filters.js:326 +msgid "Show stock for active parts" +msgstr "Hiển thị kho cho sản phẩm hoạt động" -#: templates/js/translated/table_filters.js:317 -msgid "Show stock items which are installed in another item" -msgstr "" +#: templates/js/translated/table_filters.js:331 +msgid "Part is an assembly" +msgstr "Sản phẩm là một phần lắp lắp" -#: templates/js/translated/table_filters.js:322 -msgid "Show items which have been assigned to a customer" -msgstr "" +#: templates/js/translated/table_filters.js:335 +msgid "Is allocated" +msgstr "Đã được phân bổ" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 -msgid "Stock status" -msgstr "" +#: templates/js/translated/table_filters.js:336 +msgid "Item has been allocated" +msgstr "Hàng hóa đã được phân bổ" + +#: templates/js/translated/table_filters.js:341 +msgid "Stock is available for use" +msgstr "Kho có sẵn để sử dụng" #: templates/js/translated/table_filters.js:346 -msgid "Has batch code" -msgstr "" +msgid "Include stock in sublocations" +msgstr "Bao gồm kho trong vị trí phụ" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" +#: templates/js/translated/table_filters.js:351 +msgid "Show stock items which are depleted" +msgstr "Hiển thị mặt hàng đã bị xóa" -#: templates/js/translated/table_filters.js:355 -msgid "Stock item is tracked by either batch code or serial number" -msgstr "" +#: templates/js/translated/table_filters.js:356 +msgid "Show items which are in stock" +msgstr "Hiện hàng hóa còn trong kho" #: templates/js/translated/table_filters.js:360 -msgid "Has purchase price" -msgstr "" +msgid "In Production" +msgstr "Đang sản xuất" #: templates/js/translated/table_filters.js:361 -msgid "Show stock items which have a purchase price set" -msgstr "" +msgid "Show items which are in production" +msgstr "Hiện hàng hóa đang được sản xuất" #: templates/js/translated/table_filters.js:365 +msgid "Include Variants" +msgstr "Bao gồm các biến thể" + +#: templates/js/translated/table_filters.js:366 +msgid "Include stock items for variant parts" +msgstr "Bao gồm mặt hàng cho sản phẩm biến thể" + +#: templates/js/translated/table_filters.js:371 +msgid "Show stock items which are installed in another item" +msgstr "Hiển thị mặt hàng được cài đặt trong hàng hóa khác" + +#: templates/js/translated/table_filters.js:376 +msgid "Show items which have been assigned to a customer" +msgstr "Hiển thị hàng hóa đã được chỉ định cho 1 khách hàng" + +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 +msgid "Stock status" +msgstr "Tình trạng kho hàng" + +#: templates/js/translated/table_filters.js:400 +msgid "Has batch code" +msgstr "Có mã lô" + +#: templates/js/translated/table_filters.js:409 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "Theo dõi mặt hàng hoặc là theo mã lô hoặc là theo số sêri" + +#: templates/js/translated/table_filters.js:414 +msgid "Has purchase price" +msgstr "Có giá mua" + +#: templates/js/translated/table_filters.js:415 +msgid "Show stock items which have a purchase price set" +msgstr "Hiển thị mặt hàng có giá mua được đặt" + +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" -msgstr "" +msgstr "Ngày hết hạn trước đó" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" -msgstr "" +msgstr "Ngày hết hạn sau đó" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" -msgstr "" +msgstr "Hiển thị mặt hàng đã hết hạn" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" -msgstr "" +msgstr "Hiển thị mặt hàng sắp hết hạn" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" -msgstr "" +msgstr "Đã qua kiểm thử" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" -msgstr "" +msgstr "Bao gồm hàng hóa đã được cài đặt" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" -msgstr "" +msgstr "Trạng thái bản dựng" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" -msgstr "" +msgstr "Bao gồm sản phẩm trong danh mục con" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" -msgstr "" +msgstr "Hiển thị sản phẩm hoạt động" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" -msgstr "" +msgstr "Kho có sẵn" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" -msgstr "" +msgstr "Có đơn vị" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" -msgstr "" +msgstr "Sản phẩm có đơn vị được định nghĩa" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" -msgstr "" +msgstr "Có IPN" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" -msgstr "" +msgstr "Sản phẩm có số sản phẩm nội bộ" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" -msgstr "" +msgstr "Trong kho" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" -msgstr "" +msgstr "Có thể mua" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" -msgstr "" +msgstr "Có mục kiểm kê" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" -msgstr "" +msgstr "Có lựa chọn" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "" +msgstr "Hiện khung lịch" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "" +msgstr "Hiển thị danh sách" #: templates/js/translated/tables.js:112 msgid "Display tree view" -msgstr "" +msgstr "Hiển thị dạng cây" #: templates/js/translated/tables.js:130 msgid "Expand all rows" -msgstr "" +msgstr "Mở rộng tất cả dòng" #: templates/js/translated/tables.js:136 msgid "Collapse all rows" -msgstr "" +msgstr "Thu gọn tất cả dòng" #: templates/js/translated/tables.js:186 msgid "Export Table Data" -msgstr "" +msgstr "Xuất dữ liệu bảng" #: templates/js/translated/tables.js:190 msgid "Select File Format" -msgstr "" +msgstr "Chọn định dạng tệp" + +#: templates/js/translated/tables.js:529 +msgid "Loading data" +msgstr "Đang nạp dữ liệu" + +#: templates/js/translated/tables.js:532 +msgid "rows per page" +msgstr "dòng trên trang" + +#: templates/js/translated/tables.js:537 +msgid "Showing all rows" +msgstr "Hiển thị toàn bộ dòng" + +#: templates/js/translated/tables.js:539 +msgid "Showing" +msgstr "Đang hiển thị" + +#: templates/js/translated/tables.js:539 +msgid "to" +msgstr "đến" + +#: templates/js/translated/tables.js:539 +msgid "of" +msgstr "của" + +#: templates/js/translated/tables.js:539 +msgid "rows" +msgstr "dòng" + +#: templates/js/translated/tables.js:546 +msgid "No matching results" +msgstr "Không tìm thấy kết quả phù hợp" + +#: templates/js/translated/tables.js:549 +msgid "Hide/Show pagination" +msgstr "Ẩn/hiện phân trang" + +#: templates/js/translated/tables.js:555 +msgid "Toggle" +msgstr "Đảo chiều" + +#: templates/js/translated/tables.js:558 +msgid "Columns" +msgstr "Cột" #: templates/js/translated/tables.js:561 -msgid "Loading data" -msgstr "" - -#: templates/js/translated/tables.js:564 -msgid "rows per page" -msgstr "" - -#: templates/js/translated/tables.js:569 -msgid "Showing all rows" -msgstr "" - -#: templates/js/translated/tables.js:571 -msgid "Showing" -msgstr "" - -#: templates/js/translated/tables.js:571 -msgid "to" -msgstr "" - -#: templates/js/translated/tables.js:571 -msgid "of" -msgstr "" - -#: templates/js/translated/tables.js:571 -msgid "rows" -msgstr "" - -#: templates/js/translated/tables.js:578 -msgid "No matching results" -msgstr "" - -#: templates/js/translated/tables.js:581 -msgid "Hide/Show pagination" -msgstr "" - -#: templates/js/translated/tables.js:587 -msgid "Toggle" -msgstr "" - -#: templates/js/translated/tables.js:590 -msgid "Columns" -msgstr "" - -#: templates/js/translated/tables.js:593 msgid "All" -msgstr "" +msgstr "Tất cả" #: templates/navbar.html:45 msgid "Buy" @@ -12448,279 +13091,275 @@ msgstr "Bán" #: templates/navbar.html:121 msgid "Show Notifications" -msgstr "" +msgstr "Hiển thị thông báo" #: templates/navbar.html:124 msgid "New Notifications" -msgstr "" +msgstr "Thông báo mới" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "Quản trị" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "Đăng xuất" #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" -msgstr "" +msgstr "Lưu lại" #: templates/notifications.html:9 msgid "Show all notifications and history" -msgstr "" +msgstr "Hiện toàn bộ thông báo và lịch sử" #: templates/qr_code.html:11 msgid "QR data not provided" -msgstr "" +msgstr "Chưa cung cấp dữ liệu QR" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." -msgstr "" +msgstr "Bạn đã đăng xuất thành công." -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" -msgstr "" +msgstr "Đăng nhập lại" #: templates/search.html:9 msgid "Show full search results" -msgstr "" +msgstr "Hiện kết quả tìm đầy đủ" #: templates/search.html:12 msgid "Clear search" -msgstr "" +msgstr "Xóa tìm kiếm" #: templates/search.html:15 msgid "Close search menu" -msgstr "" +msgstr "Đóng trình đơn tìm kiếm" #: templates/socialaccount/authentication_error.html:5 msgid "Social Network Login Failure" -msgstr "" +msgstr "Đăng nhập mạng xã hội thất bại" #: templates/socialaccount/authentication_error.html:8 msgid "Account Login Failure" -msgstr "" +msgstr "Đăng nhập tài khoản thất bại" #: templates/socialaccount/authentication_error.html:11 msgid "An error occurred while attempting to login via your social network account." -msgstr "" +msgstr "Có lỗi trong khi cố gắng đăng nhập thông qua tài khoản mạng xã hội của bạn." #: templates/socialaccount/authentication_error.html:13 msgid "Contact your system administrator for further information." -msgstr "" +msgstr "Liên lạc với quản trị hệ thống của bạn để biết thêm thông tin." #: templates/socialaccount/login.html:13 #, python-format msgid "Connect %(provider)s" -msgstr "" +msgstr "Kết nối %(provider)s" #: templates/socialaccount/login.html:15 #, python-format msgid "You are about to connect a new third party account from %(provider)s." -msgstr "" +msgstr "Bạn chuẩn bị kết nối đến tài khoản của bên thứ ba từ %(provider)s." #: templates/socialaccount/login.html:17 #, python-format msgid "Sign In Via %(provider)s" -msgstr "" +msgstr "Đăng nhập qua%(provider)s" #: templates/socialaccount/login.html:19 #, python-format msgid "You are about to sign in using a third party account from %(provider)s." -msgstr "" +msgstr "Bạn chuẩn bị đăng nhập qua tài khoản của bên thứ ba từ %(provider)s." #: templates/socialaccount/login.html:24 msgid "Continue" -msgstr "" +msgstr "Tiếp tục" #: templates/socialaccount/login.html:29 msgid "Invalid SSO Provider" -msgstr "" +msgstr "Nhà cung cấp SSO không hợp lệ" #: templates/socialaccount/login.html:31 msgid "The selected SSO provider is invalid, or has not been correctly configured" -msgstr "" +msgstr "Nhà cung cấp SSO đã chọn không hợp lệ hoặc đã không được cấu hình chính xác" #: templates/socialaccount/signup.html:10 #, python-format msgid "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s.
As a final step, please complete the following form:" -msgstr "" +msgstr "Bạn chuân bị sử dụng tài khoản %(provider_name)s của bạn để đăng nhập%(site_name)s
Vì là bước cuối cùng, xin hãy hoàn thiện biểu mẫu dưới đây:" #: templates/socialaccount/snippets/provider_list.html:26 msgid "Provider has not been configured" -msgstr "" +msgstr "Nhà cung cấp chưa được cấu hình" #: templates/socialaccount/snippets/provider_list.html:35 msgid "No SSO providers have been configured" -msgstr "" +msgstr "Chưa cấu hình nhà cung cấp SSO" #: templates/stats.html:13 msgid "Instance Name" -msgstr "" +msgstr "Tên thực thể" #: templates/stats.html:18 msgid "Database" -msgstr "" +msgstr "Cơ sở dữ liệu" #: templates/stats.html:26 msgid "Server is running in debug mode" -msgstr "" +msgstr "Máy chủ đang hoạt động dưới chế độ gỡ lỗi" #: templates/stats.html:33 msgid "Docker Mode" -msgstr "" +msgstr "Chế độ Docker" #: templates/stats.html:34 msgid "Server is deployed using docker" -msgstr "" +msgstr "Máy chủ được triển khai bởi docker" #: templates/stats.html:39 msgid "Plugin Support" -msgstr "" +msgstr "Hỗ trợ phần bổ sung" #: templates/stats.html:43 msgid "Plugin support enabled" -msgstr "" +msgstr "Hỗ trợ phần bổ sung đã bật" #: templates/stats.html:45 msgid "Plugin support disabled" -msgstr "" +msgstr "Hỗ trợ phần bổ sung đã tắt" #: templates/stats.html:52 msgid "Server status" -msgstr "" +msgstr "Tình trạng máy chủ" #: templates/stats.html:55 msgid "Healthy" -msgstr "" +msgstr "Sức khỏe" #: templates/stats.html:57 msgid "Issues detected" -msgstr "" +msgstr "Đã phát hiện vấn đề" #: templates/stats.html:64 msgid "Background Worker" -msgstr "" +msgstr "Nhân công chạy ngầm" #: templates/stats.html:67 msgid "Background worker not running" -msgstr "" +msgstr "Nhân công chạy ngầm không hoạt động" #: templates/stats.html:75 msgid "Email Settings" -msgstr "" +msgstr "Thiết lập email" #: templates/stats.html:78 msgid "Email settings not configured" -msgstr "" - -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" +msgstr "Chưa cấu hình thiết lập email" #: templates/yesnolabel.html:4 msgid "Yes" -msgstr "" +msgstr "Có" #: templates/yesnolabel.html:6 msgid "No" -msgstr "" +msgstr "Không" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" -msgstr "" +msgstr "Người dùng" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" -msgstr "" - -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" -msgstr "" - -#: users/admin.py:222 -msgid "Personal info" -msgstr "" - -#: users/admin.py:223 -msgid "Permissions" -msgstr "" +msgstr "Chọn người dùng được chỉ định cho nhóm này" #: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "Người dùng sau là thành viên của nhiều nhóm" + +#: users/admin.py:253 +msgid "Personal info" +msgstr "Thông tin cá nhân" + +#: users/admin.py:254 +msgid "Permissions" +msgstr "Quyền" + +#: users/admin.py:257 msgid "Important dates" -msgstr "" +msgstr "Ngày quan trọng" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "Mã thông báo đã bị thu hồi" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "Mã thông báo đã hết hạn" + +#: users/models.py:53 +msgid "API Token" +msgstr "Mã thông báo API" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "Mã thông báo API" + +#: users/models.py:92 +msgid "Token Name" +msgstr "Tên mã thông báo" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "Tên tùy chỉnh mã thông báo" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "Ngày hết hạn mã thông báo" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "Xem lần cuối" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "Lần cuối mã thông báo được sử dụng" + +#: users/models.py:111 +msgid "Revoked" +msgstr "Đã thu hồi" + +#: users/models.py:376 msgid "Permission set" -msgstr "" +msgstr "Quyền hạn đã đặt" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" -msgstr "" +msgstr "Nhóm" -#: users/models.py:241 +#: users/models.py:387 msgid "View" -msgstr "" +msgstr "Xem" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" -msgstr "" +msgstr "Quyền để xem mục" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" -msgstr "" +msgstr "Quyền để thêm mục" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" -msgstr "" +msgstr "Đổi" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" -msgstr "" +msgstr "Quyển để sửa mục" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" -msgstr "" +msgstr "Quyền để xóa mục" diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po index 9ef6042e6c..e0d8d74e84 100644 --- a/InvenTree/locale/zh/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh/LC_MESSAGES/django.po @@ -2,638 +2,675 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-09 00:32+0000\n" -"PO-Revision-Date: 2023-06-09 10:27\n" +"POT-Creation-Date: 2023-11-09 03:01+0000\n" +"PO-Revision-Date: 2023-11-10 20:55\n" "Last-Translator: \n" -"Language-Team: Chinese Simplified\n" -"Language: zh_CN\n" +"Language-Team: Chinese Traditional\n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Crowdin-Project: inventree\n" "X-Crowdin-Project-ID: 452300\n" -"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-Language: zh-TW\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" -msgstr "未找到 API 端点" +msgstr "找不到 API 端點" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" -msgstr "用户无权查看该模型" +msgstr "使用者沒有檢視此模型的權限" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 msgid "No value provided" +msgstr "未提供值" + +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:84 -msgid "Provided value is not a valid number" +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" msgstr "" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "" - -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" -msgstr "在管理面板中可以找到错误详细信息" +msgstr "詳細的錯誤訊息可以在管理介面中瀏覽" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" -msgstr "输入日期" +msgstr "輸入日期" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1089 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3005 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2160 stock/models.py:2268 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" -msgstr "备注" +msgstr "備註" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" -msgstr "值 '{name}' 没有以模式格式显示" +msgstr "值「{name}」並沒有在格式內出現" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " -msgstr "提供的值与所需模式不匹配: " +msgstr "提供的值不符合要求的格式: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" -msgstr "输入密码" +msgstr "輸入密碼" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" -msgstr "输入新密码" +msgstr "輸入新的密碼" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" -msgstr "确认密码" +msgstr "確認密碼" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" -msgstr "确认新密码" +msgstr "確認新密碼" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" -msgstr "旧密码" +msgstr "舊密碼" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" -msgstr "Email (再次)" +msgstr "再次輸入Email" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" -msgstr "Email 地址确认" +msgstr "Email地址確認" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." -msgstr "您必须输入相同的 Email 。" +msgstr "您必須輸入相同的Email" -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." -msgstr "所提供的主要电子邮件地址无效。" +msgstr "所提供的主要Email無效。" -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." -msgstr "提供的电子邮件域未被核准。" +msgstr "所提供的Email網域尚未被核准。" -#: InvenTree/helpers.py:462 order/models.py:442 order/models.py:611 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "註冊功能已停用。" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" -msgstr "提供的数量无效" +msgstr "提供的數量無效" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" -msgstr "空序列号字符串" +msgstr "序號為空白" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" -msgstr "重复的序列号" +msgstr "重複的序號" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 #, python-brace-format -msgid "Invalid group range: {g}" -msgstr "无效的组范围: {g}" - -#: InvenTree/helpers.py:562 -#, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" -msgstr "组 {g} 超出了允许的数量 ({q})" - -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 -#, python-brace-format -msgid "Invalid group sequence: {g}" -msgstr "无效的组序列: {g}" - -#: InvenTree/helpers.py:618 -msgid "No serial numbers found" -msgstr "未找到序列号" - -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" -msgstr "唯一序列号 ({s}) 必须匹配数量 ({q})" - -#: InvenTree/helpers.py:751 -msgid "Remove HTML tags from this value" -msgstr "从这个值中删除 HTML 标签" - -#: InvenTree/helpers_model.py:133 -msgid "Connection error" -msgstr "连接错误" - -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 -msgid "Server responded with invalid status code" -msgstr "服务器响应状态码无效" - -#: InvenTree/helpers_model.py:139 -msgid "Exception occurred" -msgstr "发生异常" - -#: InvenTree/helpers_model.py:147 -msgid "Server responded with invalid Content-Length value" -msgstr "服务器响应的内容长度值无效" - -#: InvenTree/helpers_model.py:150 -msgid "Image size is too large" -msgstr "图片尺寸过大" - -#: InvenTree/helpers_model.py:162 -msgid "Image download exceeded maximum size" -msgstr "图像下载超过最大尺寸" - -#: InvenTree/helpers_model.py:167 -msgid "Remote server returned empty response" -msgstr "远程服务器返回了空响应" - -#: InvenTree/helpers_model.py:175 -msgid "Supplied URL is not a valid image file" -msgstr "提供的 URL 不是一个有效的图片文件" - -#: InvenTree/models.py:82 -msgid "Metadata must be a python dict object" +msgid "Invalid group range: {group}" msgstr "" +#: InvenTree/helpers.py:552 +#, python-brace-format +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 +#, python-brace-format +msgid "Invalid group sequence: {group}" +msgstr "" + +#: InvenTree/helpers.py:608 +msgid "No serial numbers found" +msgstr "找不到序號" + +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:740 +msgid "Remove HTML tags from this value" +msgstr "從這個值中移除HTML標籤" + +#: InvenTree/helpers_model.py:123 +msgid "Connection error" +msgstr "連線錯誤" + +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 +msgid "Server responded with invalid status code" +msgstr "伺服器回應了無效的狀態碼" + +#: InvenTree/helpers_model.py:129 +msgid "Exception occurred" +msgstr "發生異常" + +#: InvenTree/helpers_model.py:137 +msgid "Server responded with invalid Content-Length value" +msgstr "伺服器回應了不正確的Content-Length值。" + +#: InvenTree/helpers_model.py:140 +msgid "Image size is too large" +msgstr "圖片尺寸過大" + +#: InvenTree/helpers_model.py:152 +msgid "Image download exceeded maximum size" +msgstr "圖片超過最大可下載的尺寸" + +#: InvenTree/helpers_model.py:157 +msgid "Remote server returned empty response" +msgstr "遠端伺服器回傳了空白回應" + +#: InvenTree/helpers_model.py:165 +msgid "Supplied URL is not a valid image file" +msgstr "提供的URL不是有效的圖片檔案" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "[{site.name}] 登入 App" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "Email" + +#: InvenTree/models.py:81 +msgid "Metadata must be a python dict object" +msgstr "Metadata必須是一個Python Dictionary物件" + +#: InvenTree/models.py:85 +msgid "Plugin Metadata" +msgstr "外掛程式Metadata" + #: InvenTree/models.py:86 -msgid "Plugin Metadata" -msgstr "" - -#: InvenTree/models.py:87 msgid "JSON metadata field, for use by external plugins" -msgstr "" +msgstr "外掛程式使用的JSON Metadata欄位" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" -msgstr "格式不正确" +msgstr "格式錯誤" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" -msgstr "指定了未知格式密钥" +msgstr "指定了不明的格式鍵值" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" -msgstr "缺少必需的格式密钥" +msgstr "缺少必須的格式鍵值" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" -msgstr "引用字段不能为空" +msgstr "參考欄位不能空白" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" -msgstr "引用必须匹配所需的图案" +msgstr "參考欄位並須符合格式" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" -msgstr "参考编号过大" +msgstr "參考編號過大" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" -msgstr "缺少文件" +msgstr "缺少檔案" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" -msgstr "缺少外部链接" +msgstr "缺少外部連結" -#: InvenTree/models.py:486 stock/models.py:2262 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "附件" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" -msgstr "选择附件" +msgstr "選擇附件" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:236 -#: order/models.py:1093 order/models.py:1453 part/admin.py:39 -#: part/models.py:901 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" -msgstr "链接" +msgstr "連結" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:902 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" -msgstr "链接到外部 URL" +msgstr "外部URL連結" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" -msgstr "注释" +msgstr "註解" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" -msgstr "文件注释" +msgstr "檔案註解" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3013 -#: part/models.py:3101 part/models.py:3180 part/models.py:3200 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" -msgstr "用户" +msgstr "使用者" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" -msgstr "上传日期" +msgstr "上傳日期" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" -msgstr "文件名不能为空!" +msgstr "檔名不得空白" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" -msgstr "非法的附件目录" +msgstr "無效的附件目錄" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" -msgstr "文件名包含非法字符 '{c}'" +msgstr "檔名內有不允許的字元 '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" -msgstr "缺少文件名扩展" +msgstr "檔案名稱缺少副檔名" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" -msgstr "使用此文件名的附件已存在" +msgstr "已有同檔案名稱的附件" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" -msgstr "重命名文件出错" +msgstr "重新命名時發生錯誤" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" -msgstr "同一个主体下不能有相同名字" +msgstr "同一個上層元件下不能有重複的名字" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" -msgstr "选择无效" +msgstr "無效的選項" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:847 -#: part/models.py:3400 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" -msgstr "名称" +msgstr "名稱" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:232 order/models.py:1117 part/admin.py:194 part/admin.py:276 -#: part/models.py:869 part/models.py:3416 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" -msgstr "描述信息" +msgstr "描述" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" -msgstr "描述 (可选)" +msgstr "描述(選填)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" -msgstr "上级项" +msgstr "上層元素" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" -msgstr "路径" +msgstr "路徑" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 msgid "Markdown notes (optional)" -msgstr "" +msgstr "Markdown 註記(選填)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" -msgstr "条码数据" +msgstr "條碼資料" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" -msgstr "第三方条形码数据" +msgstr "第三方條碼資料" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" -msgstr "条码哈希" +msgstr "條碼雜湊值" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" -msgstr "条码数据的唯一哈希" +msgstr "條碼資料的唯一雜湊值" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" -msgstr "发现现有条码" +msgstr "發現現有條碼" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" -msgstr "服务器错误" +msgstr "伺服器錯誤" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." -msgstr "服务器记录了一个错误。" +msgstr "伺服器紀錄了一個錯誤。" -#: InvenTree/serializers.py:60 part/models.py:3897 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" -msgstr "必须是有效数字" +msgstr "必須是有效的數字" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2852 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" -msgstr "货币" +msgstr "貨幣" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" -msgstr "从可用选项中选择货币" +msgstr "從可用選項中選擇貨幣" #: InvenTree/serializers.py:364 msgid "Filename" -msgstr "文件名" +msgstr "檔案名稱" #: InvenTree/serializers.py:401 msgid "Invalid value" -msgstr "无效值" +msgstr "無效的值" #: InvenTree/serializers.py:423 msgid "Data File" -msgstr "数据文件" +msgstr "資料檔" #: InvenTree/serializers.py:424 msgid "Select data file for upload" -msgstr "选择要上传的文件" +msgstr "選擇要上傳的資料檔案" #: InvenTree/serializers.py:445 msgid "Unsupported file type" -msgstr "不支持的文件类型" +msgstr "不支援的檔案類型" #: InvenTree/serializers.py:451 msgid "File is too large" -msgstr "文件过大" +msgstr "檔案大小過大" #: InvenTree/serializers.py:472 msgid "No columns found in file" -msgstr "在文件中没有找到列" +msgstr "檔案中找不到欄位" #: InvenTree/serializers.py:475 msgid "No data rows found in file" -msgstr "在文件中没有找到数据行" +msgstr "檔案中找不到資料列" #: InvenTree/serializers.py:598 msgid "No data rows provided" -msgstr "没有提供数据行" +msgstr "沒有提供資料列" #: InvenTree/serializers.py:601 msgid "No data columns supplied" -msgstr "没有提供数据列" +msgstr "沒有提供資料欄位" #: InvenTree/serializers.py:678 #, python-brace-format msgid "Missing required column: '{name}'" -msgstr "缺少必需的列:'{name}'" +msgstr "找不到必須的欄位: 「{name}」" #: InvenTree/serializers.py:687 #, python-brace-format msgid "Duplicate column: '{col}'" -msgstr "复制列: '{col}'" +msgstr "重複的欄位:「{col}」" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" -msgstr "远程图像文件的 URL" +msgstr "遠端圖片的URL" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" -msgstr "未启用从远程 URL下载图像" +msgstr "尚未啟用從遠端URL下載圖片" -#: InvenTree/settings.py:714 -msgid "Czech" -msgstr "捷克语" - -#: InvenTree/settings.py:715 -msgid "Danish" -msgstr "丹麦语" - -#: InvenTree/settings.py:716 -msgid "German" -msgstr "德语" - -#: InvenTree/settings.py:717 -msgid "Greek" -msgstr "希腊语" - -#: InvenTree/settings.py:718 -msgid "English" -msgstr "英语" - -#: InvenTree/settings.py:719 -msgid "Spanish" -msgstr "西班牙语" - -#: InvenTree/settings.py:720 -msgid "Spanish (Mexican)" -msgstr "西班牙语(墨西哥)" - -#: InvenTree/settings.py:721 -msgid "Farsi / Persian" -msgstr "波斯语" - -#: InvenTree/settings.py:722 -msgid "Finnish" +#: InvenTree/settings.py:819 +msgid "Bulgarian" msgstr "" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:820 +msgid "Czech" +msgstr "捷克文" + +#: InvenTree/settings.py:821 +msgid "Danish" +msgstr "丹麥文" + +#: InvenTree/settings.py:822 +msgid "German" +msgstr "德文" + +#: InvenTree/settings.py:823 +msgid "Greek" +msgstr "希臘文" + +#: InvenTree/settings.py:824 +msgid "English" +msgstr "英文" + +#: InvenTree/settings.py:825 +msgid "Spanish" +msgstr "西班牙文" + +#: InvenTree/settings.py:826 +msgid "Spanish (Mexican)" +msgstr "西班牙文(墨西哥)" + +#: InvenTree/settings.py:827 +msgid "Farsi / Persian" +msgstr "波斯語" + +#: InvenTree/settings.py:828 +msgid "Finnish" +msgstr "芬蘭文" + +#: InvenTree/settings.py:829 msgid "French" -msgstr "法语" +msgstr "法文" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:830 msgid "Hebrew" -msgstr "希伯来语" +msgstr "希伯來文" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" -msgstr "匈牙利语" +msgstr "匈牙利文" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:833 msgid "Italian" -msgstr "意大利语" +msgstr "義大利文" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:834 msgid "Japanese" -msgstr "日语" +msgstr "日文" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:835 msgid "Korean" -msgstr "韩语" +msgstr "韓文" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:836 msgid "Dutch" -msgstr "荷兰语" +msgstr "荷蘭文" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:837 msgid "Norwegian" -msgstr "挪威语" +msgstr "挪威文" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:838 msgid "Polish" -msgstr "波兰语" +msgstr "波蘭文" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:839 msgid "Portuguese" -msgstr "葡萄牙语" +msgstr "葡萄牙文" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" -msgstr "葡萄牙语 (巴西)" +msgstr "葡萄牙文(巴西)" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:841 msgid "Russian" -msgstr "俄语" +msgstr "俄文" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:842 msgid "Slovenian" -msgstr "斯洛文尼亚" +msgstr "斯洛維尼亞文" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:843 msgid "Swedish" -msgstr "瑞典语" +msgstr "瑞典文" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:844 msgid "Thai" -msgstr "泰语" +msgstr "泰文" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:845 msgid "Turkish" -msgstr "土耳其语" +msgstr "土耳其文" -#: InvenTree/settings.py:739 +#: InvenTree/settings.py:846 msgid "Vietnamese" -msgstr "越南语" +msgstr "越南文" -#: InvenTree/settings.py:740 -msgid "Chinese" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" msgstr "中文(简体)" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "中文(繁體)" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" -msgstr "后台工作人员检查失败" +msgstr "背景工作程式檢查失敗" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" -msgstr "未配置电子邮件后端" +msgstr "Email後端尚未設定" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" -msgstr "InventTree系统健康检查失败" +msgstr "InvenTree系統健康檢查失敗" #: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 #: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 #: InvenTree/status_codes.py:188 generic/states/tests.py:16 -#: templates/js/translated/table_filters.js:511 +#: templates/js/translated/table_filters.js:594 msgid "Pending" -msgstr "待定" +msgstr "待處理" #: InvenTree/status_codes.py:13 generic/states/tests.py:17 msgid "Placed" -msgstr "已添加" +msgstr "已下單" #: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 #: InvenTree/status_codes.py:172 generic/states/tests.py:18 -#: order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" -msgstr "完成" +msgstr "已完成" #: InvenTree/status_codes.py:15 InvenTree/status_codes.py:43 #: InvenTree/status_codes.py:150 InvenTree/status_codes.py:173 @@ -643,7 +680,7 @@ msgstr "已取消" #: InvenTree/status_codes.py:16 InvenTree/status_codes.py:44 #: InvenTree/status_codes.py:71 msgid "Lost" -msgstr "丢失" +msgstr "已遺失" #: InvenTree/status_codes.py:17 InvenTree/status_codes.py:45 #: InvenTree/status_codes.py:73 @@ -652,14 +689,14 @@ msgstr "已退回" #: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 msgid "In Progress" -msgstr "" +msgstr "進行中" -#: InvenTree/status_codes.py:42 order/models.py:1332 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" -msgstr "已发货" +msgstr "已出貨" #: InvenTree/status_codes.py:66 msgid "OK" @@ -667,265 +704,311 @@ msgstr "OK" #: InvenTree/status_codes.py:67 msgid "Attention needed" -msgstr "需要关注" +msgstr "需要注意" #: InvenTree/status_codes.py:68 msgid "Damaged" -msgstr "破损" +msgstr "已破損" #: InvenTree/status_codes.py:69 msgid "Destroyed" -msgstr "已销毁" +msgstr "已損毀" #: InvenTree/status_codes.py:70 msgid "Rejected" -msgstr "已拒绝" +msgstr "已拒絕" #: InvenTree/status_codes.py:72 msgid "Quarantined" -msgstr "隔离" +msgstr "已隔離" #: InvenTree/status_codes.py:91 msgid "Legacy stock tracking entry" -msgstr "旧库存跟踪条目" +msgstr "舊庫存追蹤項目" -#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" -msgstr "库存项已创建" +msgstr "已建立庫存項目" #: InvenTree/status_codes.py:96 msgid "Edited stock item" -msgstr "已编辑库存项" +msgstr "編輯庫存項目" #: InvenTree/status_codes.py:97 msgid "Assigned serial number" -msgstr "已分配序列号" +msgstr "已指派的序號" #: InvenTree/status_codes.py:100 msgid "Stock counted" -msgstr "库存计数" +msgstr "已清點" #: InvenTree/status_codes.py:101 msgid "Stock manually added" -msgstr "已手动添加库存" +msgstr "已手動加入庫存" #: InvenTree/status_codes.py:102 msgid "Stock manually removed" -msgstr "库存手动删除" +msgstr "已手動移除庫存" #: InvenTree/status_codes.py:105 msgid "Location changed" -msgstr "仓储地点已更改" +msgstr "倉儲地點已變更" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "" +msgstr "庫存已更新" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" -msgstr "安装到组装中" +msgstr "已安裝到組件" #: InvenTree/status_codes.py:110 msgid "Removed from assembly" -msgstr "已从组装中删除" +msgstr "已從組件移除" #: InvenTree/status_codes.py:112 msgid "Installed component item" -msgstr "已安装组件项" +msgstr "已安裝的組件項目" #: InvenTree/status_codes.py:113 msgid "Removed component item" -msgstr "已删除组件项" +msgstr "已移除的組件項目" #: InvenTree/status_codes.py:116 msgid "Split from parent item" -msgstr "从父项拆分" +msgstr "從上層元素分拆" #: InvenTree/status_codes.py:117 msgid "Split child item" -msgstr "拆分子项" +msgstr "分拆下層元素" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" -msgstr "合并的库存项目" +msgstr "已合併的庫存項目" #: InvenTree/status_codes.py:123 msgid "Converted to variant" -msgstr "转换为变量" +msgstr "已轉換成變體" #: InvenTree/status_codes.py:126 msgid "Build order output created" -msgstr "已创建生产订单输出" +msgstr "工單產出已建立" #: InvenTree/status_codes.py:127 msgid "Build order output completed" -msgstr "生产订单输出已完成" +msgstr "工單產出已完成" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "" +msgstr "工單產出已拒絕" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" -msgstr "被生产订单消耗" +msgstr "被工單消耗的" #: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" -msgstr "" +msgstr "按銷售訂單出貨" #: InvenTree/status_codes.py:135 msgid "Received against Purchase Order" -msgstr "" +msgstr "按採購訂單接收" #: InvenTree/status_codes.py:138 msgid "Returned against Return Order" -msgstr "" +msgstr "按退貨訂單退回" -#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:321 +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" -msgstr "发送给客户" +msgstr "寄送給客戶" #: InvenTree/status_codes.py:142 msgid "Returned from customer" -msgstr "从客户退货" +msgstr "從客戶端退回" #: InvenTree/status_codes.py:149 msgid "Production" -msgstr "生产中" +msgstr "生產" #: InvenTree/status_codes.py:191 msgid "Return" -msgstr "" +msgstr "退回" #: InvenTree/status_codes.py:194 msgid "Repair" -msgstr "" +msgstr "維修" #: InvenTree/status_codes.py:197 msgid "Replace" -msgstr "" +msgstr "替換" #: InvenTree/status_codes.py:200 msgid "Refund" -msgstr "" +msgstr "退款" #: InvenTree/status_codes.py:203 msgid "Reject" -msgstr "" +msgstr "拒絕" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" msgstr "" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" -msgstr "不是有效的货币代码" +msgstr "無效的貨幣代碼" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" -msgstr "备损值不能为负数" +msgstr "損失值不能為負" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" -msgstr "备损不能超过 100%" +msgstr "損失率不能超過100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" -msgstr "无效的备损值" +msgstr "無效的損失值" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" -msgstr "编辑用户信息" +msgstr "編輯使用者資訊" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" -msgstr "设置密码" +msgstr "設定密碼" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" -msgstr "密码字段必须相匹配。" +msgstr "密碼必須相符" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" -msgstr "密码错误" +msgstr "密碼錯誤" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" -msgstr "系统信息" +msgstr "系統資訊" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" -msgstr "关于 InventTree" +msgstr "關於InvenTree" -#: build/api.py:222 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" -msgstr "在删除前必须取消生产" +msgstr "工單必須被取消才能被刪除" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "耗材" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "非必須項目" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "已分配" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "可用數量" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" -msgstr "生产订单" +msgstr "生產工單" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" -msgstr "生产订单" +msgstr "生產工單" -#: build/models.py:111 +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 msgid "Invalid choice for parent build" -msgstr "上级生产选项无效" +msgstr "無效的上層生產工單選擇" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" -msgstr "相关生产订单" +msgstr "生產工單代號" -#: build/models.py:156 order/models.py:359 order/models.py:765 -#: order/models.py:1087 order/models.py:1724 part/admin.py:278 -#: part/models.py:3798 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" -msgstr "引用" +msgstr "參考代號" -#: build/models.py:167 +#: build/models.py:178 msgid "Brief description of the build (optional)" -msgstr "" +msgstr "關於生產工單的簡單說明(選填)" -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" -msgstr "上级生产" +msgstr "上層生產工單" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" -msgstr "此次生产匹配的订单" +msgstr "這張生產工單對應的上層生產工單" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1195 order/models.py:1311 order/models.py:1312 -#: part/models.py:391 part/models.py:2865 part/models.py:2979 -#: part/models.py:3119 part/models.py:3138 part/models.py:3157 -#: part/models.py:3178 part/models.py:3270 part/models.py:3555 -#: part/models.py:3663 part/models.py:3763 part/models.py:4077 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -934,780 +1017,795 @@ msgstr "此次生产匹配的订单" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" -msgstr "商品" +msgstr "零件" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" -msgstr "选择要生产的商品" +msgstr "選擇要生產的零件" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" -msgstr "相关销售订单" +msgstr "銷售訂單代號" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" -msgstr "此次生产匹配的销售订单" +msgstr "這張生產工單對應的銷售訂單" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" -msgstr "来源地点" +msgstr "來源倉儲地點" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" -msgstr "此次生产从哪个仓储位置获取库存(留空即可从任何仓储位置取出)" - -#: build/models.py:212 -msgid "Destination Location" -msgstr "目标地点" - -#: build/models.py:216 -msgid "Select location where the completed items will be stored" -msgstr "选择已完成项目仓储地点" - -#: build/models.py:220 -msgid "Build Quantity" -msgstr "生产数量" +msgstr "選擇領取料件的倉儲地點(留白表示可以從任何地點領取)" #: build/models.py:223 -msgid "Number of stock items to build" -msgstr "要生产的项目数量" +msgid "Destination Location" +msgstr "目標倉儲地點" #: build/models.py:227 +msgid "Select location where the completed items will be stored" +msgstr "選擇要存放成品的倉儲地點" + +#: build/models.py:231 +msgid "Build Quantity" +msgstr "生產數量" + +#: build/models.py:234 +msgid "Number of stock items to build" +msgstr "要生產的庫存品數量" + +#: build/models.py:238 msgid "Completed items" -msgstr "已完成项目" +msgstr "已完成項目" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" -msgstr "已完成的库存项目数量" +msgstr "已經完成的庫存品數量" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" -msgstr "生产状态" +msgstr "生產狀態" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" -msgstr "生产状态代码" +msgstr "生產狀態代碼" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:506 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" -msgstr "批量代码" +msgstr "批量代碼" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" -msgstr "此生产产出的批量代码" +msgstr "本批次成品的生產批號" -#: build/models.py:253 order/models.py:244 part/models.py:1038 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" -msgstr "创建日期" +msgstr "建立日期" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" -msgstr "预计完成日期" +msgstr "目標完成日期" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." -msgstr "生产完成的目标日期。生产将在此日期之后逾期。" +msgstr "生產的預計完成日期。若超過此日期則工單會逾期。" -#: build/models.py:261 order/models.py:409 order/models.py:1767 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" -msgstr "完成日期:" +msgstr "完成日期" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" -msgstr "完成人" +msgstr "完成者" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" -msgstr "发布者" +msgstr "發布者" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" -msgstr "发布此生产订单的用户" +msgstr "發布此生產工單的使用者" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:258 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1042 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" -msgstr "责任人" +msgstr "負責人" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" -msgstr "构建此订单的用户或组" +msgstr "負責此生產工單的使用者或群組" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" -msgstr "外部链接" +msgstr "外部連結" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" -msgstr "创建优先级" +msgstr "製造優先度" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" -msgstr "此构建订单的优先级" +msgstr "此生產工單的優先程度" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "專案代碼" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "此生產工單隸屬的專案代碼" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" -msgstr "生产订单 {build} 已完成" +msgstr "生產工單 {build} 已經完成" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" -msgstr "生产订单已完成" +msgstr "一張生產工單已經完成" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" -msgstr "未指定生产产出" +msgstr "尚未指定生產品項" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" -msgstr "生产产出已完成" +msgstr "生產成品已經完成" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" -msgstr "生产产出与订单不匹配" +msgstr "生產品項與生產工單不符" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:440 order/serializers.py:379 -#: order/serializers.py:501 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1387 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" -msgstr "数量必须大于0" +msgstr "數量必須大於零" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 msgid "Quantity cannot be greater than the output quantity" +msgstr "數量不能大於工單生產數量" + +#: build/models.py:1266 +msgid "Build object" msgstr "" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "生产项必须指定生产产出,因为主部件已经被标记为可追踪的" - -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})" - -#: build/models.py:1291 order/models.py:1601 -msgid "Stock item is over-allocated" -msgstr "库存物品分配过度!" - -#: build/models.py:1297 order/models.py:1604 -msgid "Allocation quantity must be greater than zero" -msgstr "分配数量必须大于0" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "序列化库存的数量必须是 1" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "在BOM中找不到选定的库存项" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "生产" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "生产以分配部件" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1059 -#: order/serializers.py:1080 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "库存项" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "源库存项" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1073 order/models.py:1645 order/serializers.py:1233 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2992 part/models.py:3779 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 -msgid "Quantity" -msgstr "数量" - -#: build/models.py:1469 -msgid "Stock quantity to allocate to build" -msgstr "分配到生产的数量" - -#: build/models.py:1477 -msgid "Install into" -msgstr "安装到" - -#: build/models.py:1478 -msgid "Destination stock item" -msgstr "目标库存项" - -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 -msgid "Build Output" -msgstr "生产产出" - -#: build/serializers.py:160 -msgid "Build output does not match the parent build" -msgstr "生产产出与对应生产不匹配" - -#: build/serializers.py:164 -msgid "Output part does not match BuildOrder part" -msgstr "产出部件与生产订单部件不匹配" - -#: build/serializers.py:168 -msgid "This build output has already been completed" -msgstr "此生产产出已经完成" - -#: build/serializers.py:179 -msgid "This build output is not fully allocated" -msgstr "生产产出未被完成分配" - -#: build/serializers.py:199 build/serializers.py:237 -msgid "Enter quantity for build output" -msgstr "输入生产产出数量" - -#: build/serializers.py:258 -msgid "Integer quantity required for trackable parts" -msgstr "对于可追踪的部件,需要整数型数值" - -#: build/serializers.py:261 -msgid "Integer quantity required, as the bill of materials contains trackable parts" -msgstr "需要整数型数值,因为BOM包含可追踪的部件" - -#: build/serializers.py:276 order/serializers.py:514 order/serializers.py:1237 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 -msgid "Serial Numbers" -msgstr "序列号" - -#: build/serializers.py:277 -msgid "Enter serial numbers for build outputs" -msgstr "输入生产产出的序列号" - -#: build/serializers.py:290 -msgid "Auto Allocate Serial Numbers" -msgstr "自动分配序列号" - -#: build/serializers.py:291 -msgid "Automatically allocate required items with matching serial numbers" -msgstr "自动为所需项分配对应的序列号" - -#: build/serializers.py:326 stock/api.py:670 -msgid "The following serial numbers already exist or are invalid" -msgstr "以下序列号已存在或无效" - -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 -msgid "A list of build outputs must be provided" -msgstr "必须提供生产产出列表" - -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:487 -#: order/serializers.py:606 order/serializers.py:1588 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 -#: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 #: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 -msgid "Location" -msgstr "地点" +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 +msgid "Quantity" +msgstr "數量" -#: build/serializers.py:416 -msgid "Stock location for scrapped outputs" +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "生產工單所需數量" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "分配的數量({q})不能超過可用的庫存數量({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "庫存品項超額分配" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "分配的數量必須大於零" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "有序號的品項數量必須為1" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "選擇的庫存品項和BOM的項目不符" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "庫存品項" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "來源庫存項目" + +#: build/models.py:1539 +msgid "Stock quantity to allocate to build" +msgstr "要分配的庫存數量" + +#: build/models.py:1547 +msgid "Install into" +msgstr "安裝到" + +#: build/models.py:1548 +msgid "Destination stock item" +msgstr "目的庫存品項" + +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 +msgid "Build Output" +msgstr "產出" + +#: build/serializers.py:167 +msgid "Build output does not match the parent build" +msgstr "產出與上層生產工單不符" + +#: build/serializers.py:171 +msgid "Output part does not match BuildOrder part" +msgstr "產出零件與生產工單不符" + +#: build/serializers.py:175 +msgid "This build output has already been completed" +msgstr "此筆產出已完成" + +#: build/serializers.py:186 +msgid "This build output is not fully allocated" +msgstr "此筆產出的分配尚未完成" + +#: build/serializers.py:206 build/serializers.py:243 +msgid "Enter quantity for build output" +msgstr "輸入產出數量" + +#: build/serializers.py:264 +msgid "Integer quantity required for trackable parts" +msgstr "可追蹤的零件數量必須為整數" + +#: build/serializers.py:267 +msgid "Integer quantity required, as the bill of materials contains trackable parts" +msgstr "因為BOM包含可追蹤的零件,所以數量必須為整數" + +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 +msgid "Serial Numbers" +msgstr "序號" + +#: build/serializers.py:283 +msgid "Enter serial numbers for build outputs" +msgstr "輸入產出的序號" + +#: build/serializers.py:296 +msgid "Auto Allocate Serial Numbers" +msgstr "自動分配序號" + +#: build/serializers.py:297 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "自動為需要項目分配對應的序號" + +#: build/serializers.py:332 stock/api.py:788 +msgid "The following serial numbers already exist or are invalid" +msgstr "序號已存在或無效" + +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +msgid "A list of build outputs must be provided" +msgstr "必須提供產出清單" + +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 +#: templates/js/translated/barcode.js:530 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 +msgid "Location" +msgstr "地點" + #: build/serializers.py:422 -msgid "Discard Allocations" -msgstr "" +msgid "Stock location for scrapped outputs" +msgstr "報廢的庫存位置" -#: build/serializers.py:423 +#: build/serializers.py:428 +msgid "Discard Allocations" +msgstr "放棄分配" + +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 msgid "Reason for scrapping build output(s)" msgstr "" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" -msgstr "已完成生产产出的仓储地点" +msgstr "" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:791 -#: order/models.py:1750 order/serializers.py:524 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" -msgstr "状态" +msgstr "狀態" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" -msgstr "接受不完整的分配" +msgstr "" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" -msgstr "如果库存尚未完成分配,完成产出" +msgstr "" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" -msgstr "移除已分配的库存" +msgstr "" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" -msgstr "减去已经分配至此生产的库存" +msgstr "" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" -msgstr "移除未完成的产出" +msgstr "" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" -msgstr "删除所有未完成的生产产出" +msgstr "" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" -msgstr "接受此构建订单所消耗的内容" +msgstr "" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" -msgstr "在完成此构建订单前取消分配" +msgstr "" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" -msgstr "超出分配的库存" +msgstr "" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" -msgstr "你想如何处理分配给构建订单的额外库存物品" +msgstr "" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" -msgstr "一些库存项已被过度分配" +msgstr "" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" -msgstr "接受未分配的" +msgstr "接受未分配" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" -msgstr "接受库存项未被完成分配至此生产订单" +msgstr "" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" -msgstr "所需库存尚未完全分配" +msgstr "" -#: build/serializers.py:664 order/serializers.py:261 order/serializers.py:1127 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" -msgstr "接受未完成" +msgstr "接受不完整" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" -msgstr "接受所需的生产产出未完成" +msgstr "" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" -msgstr "所需生产数量尚未完成" +msgstr "" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" -msgstr "生产订单有未完成的产出" +msgstr "" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3686 -#: part/models.py:4069 -msgid "BOM Item" -msgstr "BOM项" +#: build/serializers.py:718 +msgid "Build Line" +msgstr "" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" -msgstr "生产产出" +msgstr "" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" -msgstr "生产产出必须指向相同的生产" +msgstr "" -#: build/serializers.py:782 +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" -msgstr "bom_item.part 必须与生产订单指向相同的部件" +msgstr "" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" -msgstr "项目必须在库存中" +msgstr "商品必須有庫存" -#: build/serializers.py:846 order/serializers.py:1117 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" -msgstr "可用量 ({q}) 超出了限制" +msgstr "" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" -msgstr "对于被追踪的部件的分配,必须指定生产产出" +msgstr "" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" -msgstr "对于未被追踪的部件,无法指定生产产出" +msgstr "" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "此库存项已被分配至此生产产出" - -#: build/serializers.py:887 order/serializers.py:1401 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" -msgstr "必须提供分配的项" +msgstr "" #: build/serializers.py:943 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" -msgstr "部件来源的仓储地点(留空则可来源于任何仓储地点)" +msgstr "" #: build/serializers.py:951 msgid "Exclude Location" -msgstr "排除地点" +msgstr "排除位置" #: build/serializers.py:952 msgid "Exclude stock items from this selected location" -msgstr "从该选定的仓储地点排除库存项" +msgstr "" #: build/serializers.py:957 msgid "Interchangeable Stock" -msgstr "可互换的库存" +msgstr "可互換庫存" #: build/serializers.py:958 msgid "Stock items in multiple locations can be used interchangeably" -msgstr "多处地点的库存项可以互换使用" +msgstr "" #: build/serializers.py:963 msgid "Substitute Stock" -msgstr "可替换的库存" +msgstr "" #: build/serializers.py:964 msgid "Allow allocation of substitute parts" -msgstr "允许分配可替换的部件" +msgstr "" #: build/serializers.py:969 msgid "Optional Items" -msgstr "可选项目" +msgstr "" #: build/serializers.py:970 msgid "Allocate optional BOM items to build order" -msgstr "分配可选的BOM项目来建立订单" +msgstr "" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" -msgstr "生产订单所需的库存" +msgstr "" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" -msgstr "超时构建顺序" +msgstr "" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" -msgstr "生成订单 {bo} 现在已过期" +msgstr "" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" msgstr "" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" -msgstr "显示二维码" +msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" -msgstr "解绑条形码" +msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" -msgstr "绑定条码" +msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" -msgstr "打印操作" +msgstr "" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" -msgstr "打印构建订单报告" +msgstr "" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" -msgstr "生产操作" +msgstr "" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" -msgstr "编辑生产" +msgstr "" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" -msgstr "取消生产" +msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" -msgstr "重复构件" +msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" -msgstr "删除生产" +msgstr "" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" -msgstr "生产完成" +msgstr "" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" -msgstr "构建描述" +msgstr "" #: build/templates/build/build_base.html:117 msgid "No build outputs have been created for this build order" -msgstr "针对此生产订单,尚未创建生产产出" +msgstr "" #: build/templates/build/build_base.html:124 msgid "Build Order is ready to mark as completed" -msgstr "构建订单已准备好标记为已完成" +msgstr "" #: build/templates/build/build_base.html:129 msgid "Build Order cannot be completed as outstanding outputs remain" -msgstr "创建订单无法完成,因为未完成的输出" +msgstr "" #: build/templates/build/build_base.html:134 msgid "Required build quantity has not yet been completed" -msgstr "所需生产数量尚未完成" +msgstr "" #: build/templates/build/build_base.html:139 msgid "Stock has not been fully allocated to this Build Order" -msgstr "库存尚未被完全分配到此构建订单" +msgstr "" #: build/templates/build/build_base.html:160 -#: build/templates/build/detail.html:138 order/models.py:240 -#: order/models.py:1099 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" -msgstr "预计日期" +msgstr "" #: build/templates/build/build_base.html:165 #, python-format msgid "This build was due on %(target)s" -msgstr "此次生产的截止日期为 %(target)s" +msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "逾期" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "已完成" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1454 order/models.py:1304 -#: order/models.py:1403 order/models.py:1551 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" -msgstr "销售订单" +msgstr "" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" -msgstr "发布者" +msgstr "" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" -msgstr "优先级" +msgstr "優先等級" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "删除生产订单" +msgstr "" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" @@ -1719,208 +1817,163 @@ msgstr "" #: build/templates/build/detail.html:15 msgid "Build Details" -msgstr "生产详情" +msgstr "" #: build/templates/build/detail.html:38 msgid "Stock Source" -msgstr "库存来源" +msgstr "" #: build/templates/build/detail.html:43 msgid "Stock can be taken from any available location." -msgstr "库存可以从任何可用的地点获得。" +msgstr "" -#: build/templates/build/detail.html:49 order/models.py:1222 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" -msgstr "目的地" +msgstr "" #: build/templates/build/detail.html:56 msgid "Destination location not specified" -msgstr "目标位置未指定" +msgstr "" #: build/templates/build/detail.html:73 msgid "Allocated Parts" -msgstr "已分配的部件" +msgstr "" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" -msgstr "批量" +msgstr "" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" -msgstr "已创建" +msgstr "" #: build/templates/build/detail.html:144 msgid "No target date set" -msgstr "无预计日期" +msgstr "" + +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" #: build/templates/build/detail.html:153 msgid "Build not complete" -msgstr "生产未完成" +msgstr "" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" -msgstr "子生产订单" +msgstr "" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" -msgstr "为生产分配库存" +msgstr "" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" -msgstr "未分配库存" +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "未分配库存" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" -msgstr "自动分配存货进行生成" +msgstr "" + +#: build/templates/build/detail.html:185 +msgid "Auto Allocate" +msgstr "自動分配" #: build/templates/build/detail.html:187 -msgid "Auto Allocate" -msgstr "自动分配" - -#: build/templates/build/detail.html:189 msgid "Manually allocate stock to build" -msgstr "手动分配存货进行生成" +msgstr "手動分配庫存進行生產" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" -msgstr "分配库存" +msgstr "分配庫存" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" -msgstr "订单所需部件" +msgstr "" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" -msgstr "订购商品" - -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "未跟踪的库存已完全分配给此生产订单" +msgstr "" #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "未跟踪的库存尚未完全分配给此生产订单" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "分配选定项目" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "此构建订单没有任何关联的 BOM 项目" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" -msgstr "未完成的生产产出" +msgstr "" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" -msgstr "创建新构建输出" +msgstr "" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" -msgstr "新建构建输出" - -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "输出操作" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "完成选定的构建输出" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "已完成输出" - -#: build/templates/build/detail.html:265 -msgid "Scrap selected build outputs" msgstr "" -#: build/templates/build/detail.html:266 -msgid "Scrap outputs" -msgstr "" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "删除选中的构建输出" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "删除输出" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" -msgstr "已完成构建输出" +msgstr "" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "附件" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" -msgstr "生产备注" +msgstr "" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" -msgstr "分配完成" +msgstr "" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" -msgstr "所有未跟踪的库存项目都已分配" +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" -msgstr "新建生产订单" +msgstr "" #: build/templates/build/sidebar.html:5 msgid "Build Order Details" -msgstr "生产订单详情" +msgstr "" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" -msgstr "未完成输出" - -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "已完成输出" +msgstr "" #: common/files.py:63 #, python-brace-format @@ -1929,1525 +1982,1574 @@ msgstr "" #: common/files.py:65 msgid "Error reading file (invalid encoding)" -msgstr "读取文件时发生错误 (无效编码)" +msgstr "" #: common/files.py:70 msgid "Error reading file (invalid format)" -msgstr "读取文件时发生错误 (无效编码)" +msgstr "" #: common/files.py:72 msgid "Error reading file (incorrect dimension)" -msgstr "读取文件时出错(不正确的尺寸)" +msgstr "" #: common/files.py:74 msgid "Error reading file (data could be corrupted)" -msgstr "读取文件时出错(数据可能已损坏)" +msgstr "" #: common/forms.py:13 msgid "File" -msgstr "文件" +msgstr "檔案" #: common/forms.py:14 msgid "Select file to upload" -msgstr "选择要上传的文件" +msgstr "選擇要上傳的檔案" #: common/forms.py:28 msgid "{name.title()} File" -msgstr "{name.title()} 文件" +msgstr "" #: common/forms.py:29 #, python-brace-format msgid "Select {name} file to upload" -msgstr "选择 {name} 文件上传" - -#: common/models.py:68 -msgid "Updated" -msgstr "已更新" - -#: common/models.py:69 -msgid "Timestamp of last update" -msgstr "最后一次更新时间" - -#: common/models.py:104 order/admin.py:17 order/models.py:234 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -msgid "Project Code" msgstr "" -#: common/models.py:105 +#: common/models.py:71 +msgid "Updated" +msgstr "" + +#: common/models.py:72 +msgid "Timestamp of last update" +msgstr "" + +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 msgid "Project description" msgstr "" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" -msgstr "设置键值(必须是唯一的 - 大小写不敏感)" +msgstr "" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" -msgstr "设定值" +msgstr "" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" -msgstr "选择的值不是一个有效的选项" +msgstr "" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" -msgstr "值必须是布尔量" +msgstr "" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" -msgstr "值必须为整数" +msgstr "" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" -msgstr "关键字必须是唯一的" - -#: common/models.py:844 -msgid "No group" -msgstr "无群组" - -#: common/models.py:869 -msgid "An empty domain is not allowed." -msgstr "不允许空域。" - -#: common/models.py:871 -#, python-brace-format -msgid "Invalid domain name: {domain}" -msgstr "无效的域名: {domain}" - -#: common/models.py:928 -msgid "Restart required" -msgstr "需要重启" - -#: common/models.py:929 -msgid "A setting has been changed which requires a server restart" -msgstr "设置已更改,需要服务器重启" - -#: common/models.py:936 -msgid "Server Instance Name" -msgstr "服务器实例名称" - -#: common/models.py:938 -msgid "String descriptor for the server instance" -msgstr "服务器实例的字符串描述" - -#: common/models.py:943 -msgid "Use instance name" -msgstr "使用实例名称" - -#: common/models.py:944 -msgid "Use the instance name in the title-bar" -msgstr "在标题栏中使用实例名称" - -#: common/models.py:950 -msgid "Restrict showing `about`" -msgstr "限制显示 `关于` 信息" - -#: common/models.py:951 -msgid "Show the `about` modal only to superusers" -msgstr "只向超级用户显示 `about` 信息" - -#: common/models.py:957 company/models.py:101 company/models.py:102 -msgid "Company name" -msgstr "公司名称" - -#: common/models.py:958 -msgid "Internal company name" -msgstr "内部公司名称" +msgstr "" #: common/models.py:963 +msgid "No group" +msgstr "" + +#: common/models.py:988 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/models.py:990 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "" + +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 +msgid "Restart required" +msgstr "" + +#: common/models.py:1069 +msgid "A setting has been changed which requires a server restart" +msgstr "" + +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 +msgid "Server Instance Name" +msgstr "" + +#: common/models.py:1085 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:1090 +msgid "Use instance name" +msgstr "" + +#: common/models.py:1091 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:1097 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:1098 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:1104 company/models.py:101 company/models.py:102 +msgid "Company name" +msgstr "" + +#: common/models.py:1105 +msgid "Internal company name" +msgstr "" + +#: common/models.py:1110 msgid "Base URL" -msgstr "基准 URL" +msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" -msgstr "服务器实例的基准 URL" +msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" -msgstr "默认货币" +msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" -msgstr "从 URL 下载" - -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" -msgstr "允许从外部 URL 下载图像和文件" - -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "下载大小限速" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "远程图像的最大允许下载大小" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "用于从 URL 下载的用户代理配置" - -#: common/models.py:999 -msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" -msgstr "允许覆盖用于从外部 URL 下载图像和文件的用户代理(默认值为空)" - -#: common/models.py:1004 -msgid "Require confirm" -msgstr "需要确认" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "某些操作需要用户确认。" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "树深度" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "树视图的默认深度。更深的层级会待需要时再加载。" - -#: common/models.py:1021 -msgid "Update Check Interval" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 msgid "days" msgstr "天" -#: common/models.py:1032 -msgid "Automatic Backup" -msgstr "自动备份" - -#: common/models.py:1033 -msgid "Enable automatic backup of database and media files" -msgstr "启用数据库和媒体文件自动备份" - -#: common/models.py:1039 -msgid "Auto Backup Interval" +#: common/models.py:1137 +msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1040 -msgid "Specify number of days between automated backup events" -msgstr "指定自动备份之间的间隔天数" +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" -#: common/models.py:1050 +#: common/models.py:1144 +msgid "Download from URL" +msgstr "" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "" + +#: common/models.py:1164 +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:1169 +msgid "Require confirm" +msgstr "" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "" + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "" + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" + +#: common/models.py:1197 +msgid "Automatic Backup" +msgstr "自動備份" + +#: common/models.py:1198 +msgid "Enable automatic backup of database and media files" +msgstr "啟動資料庫和媒體文件自動備份" + +#: common/models.py:1204 +msgid "Auto Backup Interval" +msgstr "自動備份間隔" + +#: common/models.py:1205 +msgid "Specify number of days between automated backup events" +msgstr "" + +#: common/models.py:1215 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1051 +#: common/models.py:1216 msgid "Background task results will be deleted after specified number of days" -msgstr "后台任务结果将在指定天数后删除" +msgstr "" -#: common/models.py:1061 +#: common/models.py:1226 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1062 +#: common/models.py:1227 msgid "Error logs will be deleted after specified number of days" -msgstr "错误日志将在指定天数后删除" +msgstr "" -#: common/models.py:1072 +#: common/models.py:1237 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1073 +#: common/models.py:1238 msgid "User notifications will be deleted after specified number of days" -msgstr "用户通知将在指定天数后删除" +msgstr "" -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" -msgstr "条形码支持" +msgstr "" -#: common/models.py:1084 -msgid "Enable barcode scanner support" -msgstr "启用条形码扫描支持" +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" -#: common/models.py:1090 +#: common/models.py:1255 msgid "Barcode Input Delay" -msgstr "条码输入延迟" +msgstr "" -#: common/models.py:1091 +#: common/models.py:1256 msgid "Barcode input processing delay time" -msgstr "条码输入处理延迟时间" +msgstr "" -#: common/models.py:1101 +#: common/models.py:1266 msgid "Barcode Webcam Support" -msgstr "条码摄像头支持" +msgstr "" -#: common/models.py:1102 +#: common/models.py:1267 msgid "Allow barcode scanning via webcam in browser" -msgstr "允许在浏览器中通过摄像头扫描条码" +msgstr "" -#: common/models.py:1108 +#: common/models.py:1273 msgid "Part Revisions" msgstr "" -#: common/models.py:1109 +#: common/models.py:1274 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1115 +#: common/models.py:1280 msgid "IPN Regex" -msgstr "IPN 正则表达式" +msgstr "" -#: common/models.py:1116 +#: common/models.py:1281 msgid "Regular expression pattern for matching Part IPN" -msgstr "用于匹配零件 IPN 的正则表达式模式" +msgstr "" -#: common/models.py:1120 +#: common/models.py:1285 msgid "Allow Duplicate IPN" -msgstr "允许重复的 IPN" +msgstr "" -#: common/models.py:1121 +#: common/models.py:1286 msgid "Allow multiple parts to share the same IPN" -msgstr "允许多个部件使用同一 IPN" +msgstr "" -#: common/models.py:1127 +#: common/models.py:1292 msgid "Allow Editing IPN" -msgstr "允许编辑 IPN" +msgstr "" -#: common/models.py:1128 +#: common/models.py:1293 msgid "Allow changing the IPN value while editing a part" -msgstr "允许编辑部件时更改 IPN 值" +msgstr "" -#: common/models.py:1134 +#: common/models.py:1299 msgid "Copy Part BOM Data" -msgstr "复制零件 BOM 数据" +msgstr "" -#: common/models.py:1135 +#: common/models.py:1300 msgid "Copy BOM data by default when duplicating a part" -msgstr "复制零件时默认复制 BOM 数据" +msgstr "" -#: common/models.py:1141 +#: common/models.py:1306 msgid "Copy Part Parameter Data" -msgstr "复制零件参数数据" - -#: common/models.py:1142 -msgid "Copy parameter data by default when duplicating a part" -msgstr "复制零件时默认复制参数数据" - -#: common/models.py:1148 -msgid "Copy Part Test Data" -msgstr "复制零件测试数据" - -#: common/models.py:1149 -msgid "Copy test data by default when duplicating a part" -msgstr "复制零件时默认复制测试数据" - -#: common/models.py:1155 -msgid "Copy Category Parameter Templates" -msgstr "复制类别参数模板" - -#: common/models.py:1156 -msgid "Copy category parameter templates when creating a part" -msgstr "创建零件时复制类别参数模板" - -#: common/models.py:1162 part/admin.py:55 part/models.py:3560 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 -msgid "Template" -msgstr "模板" - -#: common/models.py:1163 -msgid "Parts are templates by default" -msgstr "零件默认为模板" - -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:996 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 -msgid "Assembly" -msgstr "组装" - -#: common/models.py:1170 -msgid "Parts can be assembled from other components by default" -msgstr "默认情况下可以从其他组件组装部件" - -#: common/models.py:1176 part/admin.py:52 part/models.py:1002 -#: templates/js/translated/table_filters.js:642 -msgid "Component" -msgstr "组件" - -#: common/models.py:1177 -msgid "Parts can be used as sub-components by default" -msgstr "默认情况下可以从其他组件组装部件" - -#: common/models.py:1183 part/admin.py:53 part/models.py:1013 -msgid "Purchaseable" -msgstr "可购买" - -#: common/models.py:1184 -msgid "Parts are purchaseable by default" -msgstr "商品默认可购买" - -#: common/models.py:1190 part/admin.py:54 part/models.py:1018 -#: templates/js/translated/table_filters.js:668 -msgid "Salable" -msgstr "可销售" - -#: common/models.py:1191 -msgid "Parts are salable by default" -msgstr "商品默认可销售" - -#: common/models.py:1197 part/admin.py:56 part/models.py:1008 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 -msgid "Trackable" -msgstr "可追踪" - -#: common/models.py:1198 -msgid "Parts are trackable by default" -msgstr "商品默认可跟踪" - -#: common/models.py:1204 part/admin.py:57 part/models.py:1028 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 -msgid "Virtual" -msgstr "虚拟" - -#: common/models.py:1205 -msgid "Parts are virtual by default" -msgstr "商品默认是虚拟的" - -#: common/models.py:1211 -msgid "Show Import in Views" -msgstr "视图中显示导入" - -#: common/models.py:1212 -msgid "Display the import wizard in some part views" -msgstr "在一些商品视图中显示导入向导" - -#: common/models.py:1218 -msgid "Show related parts" -msgstr "显示相关商品" - -#: common/models.py:1219 -msgid "Display related parts for a part" -msgstr "" - -#: common/models.py:1225 -msgid "Initial Stock Data" -msgstr "初始库存数据" - -#: common/models.py:1226 -msgid "Allow creation of initial stock when adding a new part" -msgstr "" - -#: common/models.py:1232 templates/js/translated/part.js:108 -msgid "Initial Supplier Data" -msgstr "初始供应商数据" - -#: common/models.py:1233 -msgid "Allow creation of initial supplier data when adding a new part" -msgstr "" - -#: common/models.py:1239 -msgid "Part Name Display Format" -msgstr "部件名称显示格式" - -#: common/models.py:1240 -msgid "Format to display the part name" -msgstr "零件名称显示格式" - -#: common/models.py:1247 -msgid "Part Category Default Icon" -msgstr "零件类别默认图标" - -#: common/models.py:1248 -msgid "Part category default icon (empty means no icon)" -msgstr "零件类别默认图标(留空表示没有图标)" - -#: common/models.py:1253 -msgid "Minimum Pricing Decimal Places" -msgstr "" - -#: common/models.py:1254 -msgid "Minimum number of decimal places to display when rendering pricing data" -msgstr "" - -#: common/models.py:1264 -msgid "Maximum Pricing Decimal Places" -msgstr "" - -#: common/models.py:1265 -msgid "Maximum number of decimal places to display when rendering pricing data" -msgstr "" - -#: common/models.py:1275 -msgid "Use Supplier Pricing" -msgstr "使用供应商价格" - -#: common/models.py:1276 -msgid "Include supplier price breaks in overall pricing calculations" -msgstr "" - -#: common/models.py:1282 -msgid "Purchase History Override" -msgstr "覆盖购买记录" - -#: common/models.py:1283 -msgid "Historical purchase order pricing overrides supplier price breaks" -msgstr "" - -#: common/models.py:1289 -msgid "Use Stock Item Pricing" -msgstr "" - -#: common/models.py:1290 -msgid "Use pricing from manually entered stock data for pricing calculations" -msgstr "" - -#: common/models.py:1296 -msgid "Stock Item Pricing Age" -msgstr "" - -#: common/models.py:1297 -msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1307 -msgid "Use Variant Pricing" +msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1308 -msgid "Include variant pricing in overall pricing calculations" +#: common/models.py:1313 +msgid "Copy Part Test Data" msgstr "" #: common/models.py:1314 -msgid "Active Variants Only" +msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1315 -msgid "Only use active variant parts for calculating variant pricing" +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" msgstr "" #: common/models.py:1321 -msgid "Pricing Rebuild Interval" +msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1322 -msgid "Number of days before part pricing is automatically updated" +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" msgstr "" -#: common/models.py:1332 -msgid "Internal Prices" -msgstr "内部价格" - -#: common/models.py:1333 -msgid "Enable internal prices for parts" -msgstr "启用内部商品价格" - -#: common/models.py:1339 -msgid "Internal Price Override" -msgstr "覆盖内部价格" - -#: common/models.py:1340 -msgid "If available, internal prices override price range calculations" +#: common/models.py:1328 +msgid "Parts are templates by default" msgstr "" -#: common/models.py:1346 -msgid "Enable label printing" -msgstr "启用标签打印功能" - -#: common/models.py:1347 -msgid "Enable label printing from the web interface" +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" msgstr "" -#: common/models.py:1353 -msgid "Label Image DPI" -msgstr "标签图像 DPI" +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" +msgstr "" -#: common/models.py:1354 -msgid "DPI resolution when generating image files to supply to label printing plugins" +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" +msgstr "" + +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" +msgstr "" + +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" +msgstr "" + +#: common/models.py:1349 +msgid "Parts are purchaseable by default" +msgstr "" + +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" msgstr "" #: common/models.py:1363 -msgid "Enable Reports" -msgstr "启用报告" +msgid "Parts are trackable by default" +msgstr "" -#: common/models.py:1364 -msgid "Enable generation of reports" -msgstr "启用报告生成" +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" +msgstr "" -#: common/models.py:1370 templates/stats.html:25 -msgid "Debug Mode" -msgstr "调试模式" +#: common/models.py:1370 +msgid "Parts are virtual by default" +msgstr "" -#: common/models.py:1371 -msgid "Generate reports in debug mode (HTML output)" -msgstr "在调试模式生成报告(HTML输出)" +#: common/models.py:1376 +msgid "Show Import in Views" +msgstr "" #: common/models.py:1377 -msgid "Page Size" -msgstr "页面大小" - -#: common/models.py:1378 -msgid "Default page size for PDF reports" -msgstr "PDF 报表默认页面大小" - -#: common/models.py:1388 -msgid "Enable Test Reports" -msgstr "启用测试报告" - -#: common/models.py:1389 -msgid "Enable generation of test reports" -msgstr "启用生成测试报表" - -#: common/models.py:1395 -msgid "Attach Test Reports" -msgstr "添加测试报告" - -#: common/models.py:1396 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1402 -msgid "Globally Unique Serials" -msgstr "全局唯一序列号" - -#: common/models.py:1403 -msgid "Serial numbers for stock items must be globally unique" +#: common/models.py:1383 +msgid "Show related parts" msgstr "" -#: common/models.py:1409 -msgid "Autofill Serial Numbers" -msgstr "自动填充序列号" - -#: common/models.py:1410 -msgid "Autofill serial numbers in forms" -msgstr "以表格形式自动填写序列号" - -#: common/models.py:1416 -msgid "Delete Depleted Stock" -msgstr "删除已耗尽的库存" - -#: common/models.py:1417 -msgid "Determines default behaviour when a stock item is depleted" +#: common/models.py:1384 +msgid "Display related parts for a part" msgstr "" -#: common/models.py:1423 -msgid "Batch Code Template" +#: common/models.py:1390 +msgid "Initial Stock Data" msgstr "" -#: common/models.py:1424 -msgid "Template for generating default batch codes for stock items" +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1429 -msgid "Stock Expiry" -msgstr "库存到期" +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" +msgstr "" -#: common/models.py:1430 -msgid "Enable stock expiry functionality" -msgstr "启用库存到期功能" +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" +msgstr "" + +#: common/models.py:1404 +msgid "Part Name Display Format" +msgstr "" + +#: common/models.py:1405 +msgid "Format to display the part name" +msgstr "" + +#: common/models.py:1412 +msgid "Part Category Default Icon" +msgstr "" + +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" +msgstr "" #: common/models.py:1436 -msgid "Sell Expired Stock" -msgstr "销售过期库存" +msgid "Maximum Pricing Decimal Places" +msgstr "" #: common/models.py:1437 -msgid "Allow sale of expired stock" -msgstr "允许销售过期库存" - -#: common/models.py:1443 -msgid "Stock Stale Time" +msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1444 -msgid "Number of days stock items are considered stale before expiring" +#: common/models.py:1447 +msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1451 -msgid "Build Expired Stock" +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1452 -msgid "Allow building with expired stock" +#: common/models.py:1454 +msgid "Purchase History Override" msgstr "" -#: common/models.py:1458 -msgid "Stock Ownership Control" -msgstr "库存所有权控制" - -#: common/models.py:1459 -msgid "Enable ownership control over stock locations and items" +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1465 -msgid "Stock Location Default Icon" +#: common/models.py:1461 +msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1466 -msgid "Stock location default icon (empty means no icon)" +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1471 -msgid "Build Order Reference Pattern" +#: common/models.py:1468 +msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1472 -msgid "Required pattern for generating Build Order reference field" -msgstr "" - -#: common/models.py:1478 -msgid "Enable Return Orders" +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" #: common/models.py:1479 -msgid "Enable return order functionality in the user interface" +msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1485 -msgid "Return Order Reference Pattern" +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" msgstr "" #: common/models.py:1486 -msgid "Required pattern for generating Return Order reference field" +msgid "Active Variants Only" msgstr "" -#: common/models.py:1492 -msgid "Edit Completed Return Orders" +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" msgstr "" #: common/models.py:1493 -msgid "Allow editing of return orders after they have been completed" +msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1499 -msgid "Sales Order Reference Pattern" +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1500 -msgid "Required pattern for generating Sales Order reference field" +#: common/models.py:1504 +msgid "Internal Prices" msgstr "" -#: common/models.py:1506 -msgid "Sales Order Default Shipment" +#: common/models.py:1505 +msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1507 -msgid "Enable creation of default shipment with sales orders" +#: common/models.py:1511 +msgid "Internal Price Override" msgstr "" -#: common/models.py:1513 -msgid "Edit Completed Sales Orders" +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1514 -msgid "Allow editing of sales orders after they have been shipped or completed" +#: common/models.py:1518 +msgid "Enable label printing" msgstr "" -#: common/models.py:1520 -msgid "Purchase Order Reference Pattern" +#: common/models.py:1519 +msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1521 -msgid "Required pattern for generating Purchase Order reference field" +#: common/models.py:1525 +msgid "Label Image DPI" msgstr "" -#: common/models.py:1527 -msgid "Edit Completed Purchase Orders" -msgstr "编辑已完成的采购订单" - -#: common/models.py:1528 -msgid "Allow editing of purchase orders after they have been shipped or completed" +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" #: common/models.py:1535 -msgid "Enable password forgot" -msgstr "启用忘记密码" +msgid "Enable Reports" +msgstr "" #: common/models.py:1536 -msgid "Enable password forgot function on the login pages" -msgstr "在登录页面启用忘记密码功能" +msgid "Enable generation of reports" +msgstr "" -#: common/models.py:1542 -msgid "Enable registration" -msgstr "启用注册" +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" #: common/models.py:1543 -msgid "Enable self-registration for users on the login pages" -msgstr "在登录页面启用注册功能" +msgid "Generate reports in debug mode (HTML output)" +msgstr "" -#: common/models.py:1549 -msgid "Enable SSO" -msgstr "启用 SSO" +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" +msgstr "" #: common/models.py:1550 -msgid "Enable SSO on the login pages" -msgstr "在登录页面启用 SSO" +msgid "Default page size for PDF reports" +msgstr "" #: common/models.py:1556 -msgid "Enable SSO registration" -msgstr "启用 SSO 注册" +msgid "Enable Test Reports" +msgstr "" #: common/models.py:1557 -msgid "Enable self-registration via SSO for users on the login pages" +msgid "Enable generation of test reports" msgstr "" #: common/models.py:1563 -msgid "Email required" -msgstr "需要邮箱" +msgid "Attach Test Reports" +msgstr "" #: common/models.py:1564 -msgid "Require user to supply mail on signup" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" #: common/models.py:1570 -msgid "Auto-fill SSO users" -msgstr "自动填充 SSO 用户" +msgid "Globally Unique Serials" +msgstr "" #: common/models.py:1571 -msgid "Automatically fill out user-details from SSO account-data" +msgid "Serial numbers for stock items must be globally unique" msgstr "" #: common/models.py:1577 -msgid "Mail twice" +msgid "Autofill Serial Numbers" msgstr "" #: common/models.py:1578 -msgid "On signup ask users twice for their mail" +msgid "Autofill serial numbers in forms" msgstr "" #: common/models.py:1584 -msgid "Password twice" +msgid "Delete Depleted Stock" msgstr "" #: common/models.py:1585 -msgid "On signup ask users twice for their password" -msgstr "当注册时请用户两次输入密码" +msgid "Determines default behaviour when a stock item is depleted" +msgstr "" #: common/models.py:1591 -msgid "Allowed domains" +msgid "Batch Code Template" msgstr "" #: common/models.py:1592 -msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" msgstr "" #: common/models.py:1598 -msgid "Group on signup" +msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1599 -msgid "Group to which new users are assigned on registration" +#: common/models.py:1604 +msgid "Sell Expired Stock" msgstr "" #: common/models.py:1605 -msgid "Enforce MFA" -msgstr "强制启用 MFA" +msgid "Allow sale of expired stock" +msgstr "" -#: common/models.py:1606 -msgid "Users must use multifactor security." +#: common/models.py:1611 +msgid "Stock Stale Time" msgstr "" #: common/models.py:1612 -msgid "Check plugins on startup" -msgstr "启动时检查插件" +msgid "Number of days stock items are considered stale before expiring" +msgstr "" -#: common/models.py:1613 -msgid "Check that all plugins are installed on startup - enable in container environments" +#: common/models.py:1619 +msgid "Build Expired Stock" msgstr "" #: common/models.py:1620 -msgid "Check plugin signatures" -msgstr "检查插件签名" - -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "检查并显示插件的签名" - -#: common/models.py:1628 -msgid "Enable URL integration" -msgstr "启用 URL 集成" - -#: common/models.py:1629 -msgid "Enable plugins to add URL routes" +msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1636 -msgid "Enable navigation integration" +#: common/models.py:1626 +msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1637 -msgid "Enable plugins to integrate into navigation" +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1644 -msgid "Enable app integration" -msgstr "启用应用集成" - -#: common/models.py:1645 -msgid "Enable plugins to add apps" +#: common/models.py:1633 +msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1652 -msgid "Enable schedule integration" +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1646 +msgid "Build Order Reference Pattern" +msgstr "" + +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" msgstr "" #: common/models.py:1653 -msgid "Enable plugins to run scheduled tasks" +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" msgstr "" #: common/models.py:1660 -msgid "Enable event integration" +msgid "Return Order Reference Pattern" msgstr "" #: common/models.py:1661 -msgid "Enable plugins to respond to internal events" +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" msgstr "" #: common/models.py:1668 -msgid "Enable project codes" +msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1669 -msgid "Enable project codes for tracking projects" +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" msgstr "" #: common/models.py:1675 -msgid "Stocktake Functionality" +msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1676 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +#: common/models.py:1681 +msgid "Sales Order Default Shipment" msgstr "" #: common/models.py:1682 -msgid "Automatic Stocktake Period" +msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1683 -msgid "Number of days between automatic stocktake recording (set to zero to disable)" +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1692 -msgid "Report Deletion Interval" +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1693 -msgid "Stocktake reports will be deleted after specified number of days" +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1710 common/models.py:2147 -msgid "Settings key (must be unique - case insensitive" +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1751 -msgid "Hide inactive parts" +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" msgstr "" #: common/models.py:1752 -msgid "Hide inactive parts in results displayed on the homepage" +msgid "Mail twice" msgstr "" -#: common/models.py:1758 -msgid "Show subscribed parts" -msgstr "查看订阅中的部件" +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" +msgstr "" #: common/models.py:1759 -msgid "Show subscribed parts on the homepage" -msgstr "在主页上显示订阅中的部件" +msgid "Password twice" +msgstr "" -#: common/models.py:1765 -msgid "Show subscribed categories" -msgstr "查看订阅中的类别" +#: common/models.py:1760 +msgid "On signup ask users twice for their password" +msgstr "" #: common/models.py:1766 -msgid "Show subscribed part categories on the homepage" -msgstr "在主页上显示订阅中的部件类别" +msgid "Allowed domains" +msgstr "" -#: common/models.py:1772 -msgid "Show latest parts" -msgstr "显示最近商品" +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgstr "" #: common/models.py:1773 -msgid "Show latest parts on the homepage" -msgstr "在主页上显示最近商品" +msgid "Group on signup" +msgstr "" -#: common/models.py:1779 -msgid "Recent Part Count" +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" msgstr "" #: common/models.py:1780 -msgid "Number of recent parts to display on index page" +msgid "Enforce MFA" msgstr "" -#: common/models.py:1786 -msgid "Show unvalidated BOMs" -msgstr "显示未验证的物料清单" +#: common/models.py:1781 +msgid "Users must use multifactor security." +msgstr "" #: common/models.py:1787 -msgid "Show BOMs that await validation on the homepage" -msgstr "在主页上显示待验证的物料清单" - -#: common/models.py:1793 -msgid "Show recent stock changes" -msgstr "显示最近的库存变化" - -#: common/models.py:1794 -msgid "Show recently changed stock items on the homepage" +msgid "Check plugins on startup" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" +#: common/models.py:1796 +msgid "Enable URL integration" msgstr "" -#: common/models.py:1807 -msgid "Show low stock" -msgstr "显示低库存" - -#: common/models.py:1808 -msgid "Show low stock items on the homepage" -msgstr "在主页上显示低库存的项目" - -#: common/models.py:1814 -msgid "Show depleted stock" +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1815 -msgid "Show depleted stock items on the homepage" +#: common/models.py:1804 +msgid "Enable navigation integration" +msgstr "" + +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" +msgstr "" + +#: common/models.py:1812 +msgid "Enable app integration" +msgstr "" + +#: common/models.py:1813 +msgid "Enable plugins to add apps" +msgstr "" + +#: common/models.py:1820 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1821 -msgid "Show needed stock" -msgstr "" - -#: common/models.py:1822 -msgid "Show stock items needed for builds on the homepage" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1828 -msgid "Show expired stock" -msgstr "显示过期库存" +msgid "Enable event integration" +msgstr "" #: common/models.py:1829 -msgid "Show expired stock items on the homepage" -msgstr "在主页上显示过期的库存项目" - -#: common/models.py:1835 -msgid "Show stale stock" +msgid "Enable plugins to respond to internal events" msgstr "" #: common/models.py:1836 -msgid "Show stale stock items on the homepage" +msgid "Enable project codes" msgstr "" -#: common/models.py:1842 -msgid "Show pending builds" +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" msgstr "" #: common/models.py:1843 -msgid "Show pending builds on the homepage" +msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1849 -msgid "Show overdue builds" -msgstr "显示逾期生产" +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgstr "" #: common/models.py:1850 -msgid "Show overdue builds on the homepage" -msgstr "在主页上显示逾期的生产" +msgid "Exclude External Locations" +msgstr "" -#: common/models.py:1856 -msgid "Show outstanding POs" +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" #: common/models.py:1857 -msgid "Show outstanding POs on the homepage" +msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1863 -msgid "Show overdue POs" +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1864 -msgid "Show overdue POs on the homepage" +#: common/models.py:1867 +msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1870 -msgid "Show outstanding SOs" +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1871 -msgid "Show outstanding SOs on the homepage" +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1877 -msgid "Show overdue SOs" -msgstr "" - -#: common/models.py:1878 -msgid "Show overdue SOs on the homepage" -msgstr "" - -#: common/models.py:1884 -msgid "Show pending SO shipments" -msgstr "" - -#: common/models.py:1885 -msgid "Show pending SO shipments on the homepage" -msgstr "" - -#: common/models.py:1891 -msgid "Show News" -msgstr "" - -#: common/models.py:1892 -msgid "Show news on the homepage" -msgstr "" - -#: common/models.py:1898 -msgid "Inline label display" -msgstr "内嵌标签显示" - -#: common/models.py:1899 -msgid "Display PDF labels in the browser, instead of downloading as a file" -msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载" - -#: common/models.py:1905 -msgid "Default label printer" -msgstr "" - -#: common/models.py:1906 -msgid "Configure which label printer should be selected by default" -msgstr "" - -#: common/models.py:1912 -msgid "Inline report display" -msgstr "" - -#: common/models.py:1913 -msgid "Display PDF reports in the browser, instead of downloading as a file" -msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载" - -#: common/models.py:1919 -msgid "Search Parts" -msgstr "搜索部件" - -#: common/models.py:1920 -msgid "Display parts in search preview window" +#: common/models.py:1925 +msgid "Hide inactive parts" msgstr "" #: common/models.py:1926 -msgid "Search Supplier Parts" -msgstr "搜索供应商部件" +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "" -#: common/models.py:1927 -msgid "Display supplier parts in search preview window" +#: common/models.py:1932 +msgid "Show subscribed parts" msgstr "" #: common/models.py:1933 -msgid "Search Manufacturer Parts" -msgstr "搜索制造商部件" - -#: common/models.py:1934 -msgid "Display manufacturer parts in search preview window" -msgstr "在搜索预览窗口中显示制造商部件" - -#: common/models.py:1940 -msgid "Hide Inactive Parts" +msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1941 -msgid "Excluded inactive parts from search preview window" +#: common/models.py:1939 +msgid "Show subscribed categories" +msgstr "" + +#: common/models.py:1940 +msgid "Show subscribed part categories on the homepage" +msgstr "" + +#: common/models.py:1946 +msgid "Show latest parts" msgstr "" #: common/models.py:1947 -msgid "Search Categories" -msgstr "搜索分类" - -#: common/models.py:1948 -msgid "Display part categories in search preview window" -msgstr "在搜索预览窗口中显示部件类别" - -#: common/models.py:1954 -msgid "Search Stock" -msgstr "搜索库存" - -#: common/models.py:1955 -msgid "Display stock items in search preview window" -msgstr "在搜索预览窗口中显示库存项目" - -#: common/models.py:1961 -msgid "Hide Unavailable Stock Items" -msgstr "隐藏不可用的库存项目" - -#: common/models.py:1962 -msgid "Exclude stock items which are not available from the search preview window" -msgstr "在搜索预览窗口中排除不可用的库存项目" - -#: common/models.py:1968 -msgid "Search Locations" -msgstr "搜索位置" - -#: common/models.py:1969 -msgid "Display stock locations in search preview window" -msgstr "在搜索预览窗口中显示库存位置" - -#: common/models.py:1975 -msgid "Search Companies" -msgstr "搜索公司" - -#: common/models.py:1976 -msgid "Display companies in search preview window" -msgstr "在搜索预览窗口中显示公司" - -#: common/models.py:1982 -msgid "Search Build Orders" +msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:1983 -msgid "Display build orders in search preview window" +#: common/models.py:1953 +msgid "Show unvalidated BOMs" +msgstr "" + +#: common/models.py:1954 +msgid "Show BOMs that await validation on the homepage" +msgstr "" + +#: common/models.py:1960 +msgid "Show recent stock changes" +msgstr "" + +#: common/models.py:1961 +msgid "Show recently changed stock items on the homepage" +msgstr "" + +#: common/models.py:1967 +msgid "Show low stock" +msgstr "" + +#: common/models.py:1968 +msgid "Show low stock items on the homepage" +msgstr "" + +#: common/models.py:1974 +msgid "Show depleted stock" +msgstr "" + +#: common/models.py:1975 +msgid "Show depleted stock items on the homepage" +msgstr "" + +#: common/models.py:1981 +msgid "Show needed stock" +msgstr "" + +#: common/models.py:1982 +msgid "Show stock items needed for builds on the homepage" +msgstr "" + +#: common/models.py:1988 +msgid "Show expired stock" msgstr "" #: common/models.py:1989 -msgid "Search Purchase Orders" -msgstr "搜索采购订单" +msgid "Show expired stock items on the homepage" +msgstr "" -#: common/models.py:1990 -msgid "Display purchase orders in search preview window" +#: common/models.py:1995 +msgid "Show stale stock" msgstr "" #: common/models.py:1996 -msgid "Exclude Inactive Purchase Orders" -msgstr "排除不活动的采购订单" +msgid "Show stale stock items on the homepage" +msgstr "" -#: common/models.py:1997 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2002 +msgid "Show pending builds" msgstr "" #: common/models.py:2003 -msgid "Search Sales Orders" +msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2004 -msgid "Display sales orders in search preview window" +#: common/models.py:2009 +msgid "Show overdue builds" msgstr "" #: common/models.py:2010 -msgid "Exclude Inactive Sales Orders" +msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2011 -msgid "Exclude inactive sales orders from search preview window" +#: common/models.py:2016 +msgid "Show outstanding POs" msgstr "" #: common/models.py:2017 -msgid "Search Return Orders" +msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2018 -msgid "Display return orders in search preview window" +#: common/models.py:2023 +msgid "Show overdue POs" msgstr "" #: common/models.py:2024 -msgid "Exclude Inactive Return Orders" +msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2025 -msgid "Exclude inactive return orders from search preview window" +#: common/models.py:2030 +msgid "Show outstanding SOs" msgstr "" #: common/models.py:2031 -msgid "Search Preview Results" -msgstr "搜索预览结果" +msgid "Show outstanding SOs on the homepage" +msgstr "" -#: common/models.py:2032 -msgid "Number of results to show in each section of the search preview window" +#: common/models.py:2037 +msgid "Show overdue SOs" msgstr "" #: common/models.py:2038 -msgid "Regex Search" +msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2039 -msgid "Enable regular expressions in search queries" +#: common/models.py:2044 +msgid "Show pending SO shipments" msgstr "" #: common/models.py:2045 -msgid "Whole Word Search" +msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2046 -msgid "Search queries return results for whole word matches" +#: common/models.py:2051 +msgid "Show News" msgstr "" #: common/models.py:2052 -msgid "Show Quantity in Forms" -msgstr "在表格中显示数量" - -#: common/models.py:2053 -msgid "Display available part quantity in some forms" -msgstr "在某些表格中显示可用的商品数量" - -#: common/models.py:2059 -msgid "Escape Key Closes Forms" +msgid "Show news on the homepage" msgstr "" -#: common/models.py:2060 -msgid "Use the escape key to close modal forms" +#: common/models.py:2058 +msgid "Inline label display" +msgstr "" + +#: common/models.py:2059 +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2065 +msgid "Default label printer" msgstr "" #: common/models.py:2066 -msgid "Fixed Navbar" -msgstr "固定导航栏" +msgid "Configure which label printer should be selected by default" +msgstr "" -#: common/models.py:2067 -msgid "The navbar position is fixed to the top of the screen" +#: common/models.py:2072 +msgid "Inline report display" msgstr "" #: common/models.py:2073 -msgid "Date Format" -msgstr "日期格式" - -#: common/models.py:2074 -msgid "Preferred format for displaying dates" +msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 -msgid "Part Scheduling" +#: common/models.py:2079 +msgid "Search Parts" msgstr "" -#: common/models.py:2089 -msgid "Display part scheduling information" +#: common/models.py:2080 +msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2086 +msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2096 -msgid "Display part stocktake information (if stocktake functionality is enabled)" +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2102 -msgid "Table String Length" +#: common/models.py:2093 +msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2103 -msgid "Maximimum length limit for strings displayed in table views" +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2112 -msgid "Default part label template" +#: common/models.py:2100 +msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2113 -msgid "The part label template to be automatically selected" +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" +msgstr "" + +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" msgstr "" #: common/models.py:2121 -msgid "Default stock item template" +msgid "Hide Unavailable Stock Items" msgstr "" #: common/models.py:2122 -msgid "The stock item label template to be automatically selected" +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2130 -msgid "Default stock location label template" +#: common/models.py:2128 +msgid "Search Locations" msgstr "" -#: common/models.py:2131 -msgid "The stock location label template to be automatically selected" +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" msgstr "" #: common/models.py:2177 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1132 order/models.py:1939 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" -msgstr "价格" +msgstr "" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1023 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" -msgstr "令牌" +msgstr "" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" -msgstr "该消息的唯一标识符" +msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" -msgstr "标题" +msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" -msgstr "作者" +msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" -msgstr "概述" +msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:914 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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 "图片" +msgstr "" -#: common/models.py:2737 +#: common/models.py:2902 msgid "Image file" msgstr "" -#: common/notifications.py:291 +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" -msgstr "有新订单被创建并分配给你" +msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 msgid "Items have been received against a return order" msgstr "" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3456,7 +3558,7 @@ msgstr "" #: part/templates/part/import_wizard/part_upload.html:58 part/views.py:108 #: templates/patterns/wizard/upload.html:37 msgid "Upload File" -msgstr "上传文件" +msgstr "" #: common/views.py:86 order/templates/order/order_wizard/match_fields.html:52 #: order/views.py:119 @@ -3464,21 +3566,21 @@ msgstr "上传文件" #: part/templates/part/import_wizard/match_fields.html:52 part/views.py:109 #: templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" -msgstr "匹配字段" +msgstr "" #: common/views.py:87 msgid "Match Items" -msgstr "匹配项" +msgstr "" #: common/views.py:420 msgid "Fields matching failed" -msgstr "字段匹配失败" +msgstr "" #: common/views.py:481 msgid "Parts imported" -msgstr "已导入商品" +msgstr "" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3491,347 +3593,411 @@ msgstr "" #: company/models.py:106 msgid "Company description" -msgstr "公司简介" +msgstr "" #: company/models.py:107 msgid "Description of the company" -msgstr "公司简介" +msgstr "" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" -msgstr "网站" +msgstr "" #: company/models.py:114 msgid "Company website URL" -msgstr "公司网站" +msgstr "" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "地址" +#: company/models.py:118 +msgid "Phone number" +msgstr "" #: company/models.py:119 -msgid "Company address" -msgstr "公司地址" +msgid "Contact phone number" +msgstr "" #: company/models.py:122 -msgid "Phone number" -msgstr "电话号码" +msgid "Contact email address" +msgstr "" -#: company/models.py:123 -msgid "Contact phone number" -msgstr "联系电话" - -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "电子邮件" +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 +msgid "Contact" +msgstr "" #: company/models.py:126 -msgid "Contact email address" -msgstr "联系人电子邮件" - -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:266 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 -msgid "Contact" -msgstr "联系人" - -#: company/models.py:130 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" -msgstr "链接到外部公司信息" +msgstr "" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" -msgstr "是客户" +msgstr "" + +#: company/models.py:142 +msgid "Do you sell items to this company?" +msgstr "" + +#: company/models.py:144 +msgid "is supplier" +msgstr "" + +#: company/models.py:144 +msgid "Do you purchase items from this company?" +msgstr "" #: company/models.py:146 -msgid "Do you sell items to this company?" -msgstr "您是否向该公司出售商品?" - -#: company/models.py:148 -msgid "is supplier" -msgstr "是供应商" - -#: company/models.py:148 -msgid "Do you purchase items from this company?" -msgstr "您是否从该公司采购商品?" - -#: company/models.py:150 msgid "is manufacturer" -msgstr "是制造商" +msgstr "" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" -msgstr "该公司制造商品吗?" +msgstr "" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" -msgstr "该公司使用的默认货币" +msgstr "" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" -msgstr "公司" +msgstr "" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" -msgstr "选择商品" +msgstr "" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" -msgstr "制造商" +msgstr "" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" -msgstr "选择制造商" +msgstr "" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" -msgstr "制造商商品编号" +msgstr "" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" -msgstr "制造商商品描述" +msgstr "" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" -msgstr "制造商商品" +msgstr "" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" -msgstr "参数名称" +msgstr "" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2255 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" -msgstr "数值" +msgstr "" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" -msgstr "参数值" +msgstr "" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:987 part/models.py:3407 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" -msgstr "单位" +msgstr "" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" -msgstr "参数单位" +msgstr "" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 msgid "Pack units must be greater than zero" msgstr "" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:382 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" -msgstr "供应商" +msgstr "" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" -msgstr "选择供应商" +msgstr "" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" -msgstr "选择制造商商品" +msgstr "" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" -msgstr "外部供货商商品链接URL" +msgstr "" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" -msgstr "供应商商品描述" +msgstr "" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3801 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" -msgstr "备注" +msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1919 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" -msgstr "最低收费(例如库存费)" +msgstr "" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" -msgstr "打包" +msgstr "" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" -msgstr "商品打包" +msgstr "" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" -msgstr "包装数量" +msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1921 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" -msgstr "订购多个" +msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "空闲" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" -msgstr "供应商的存货数量" +msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" -msgstr "该公司使用的默认货币" +msgstr "" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" -msgstr "创建采购订单" +msgstr "" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" -msgstr "编辑公司信息" +msgstr "" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" -msgstr "编辑公司信息" +msgstr "" + +#: company/templates/company/company_base.html:37 +msgid "Delete company" +msgstr "" #: company/templates/company/company_base.html:38 -msgid "Delete company" -msgstr "删除公司" - -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:162 msgid "Delete Company" -msgstr "删除该公司" +msgstr "" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3841,281 +4007,258 @@ msgstr "删除该公司" msgid "Part image" msgstr "" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" -msgstr "上传新图片" +msgstr "" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" -msgstr "从 URL 下载图片" +msgstr "" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" -msgstr "删除图片" +msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:779 -#: order/models.py:1738 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" -msgstr "客户" +msgstr "" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" -msgstr "使用默认货币" +msgstr "" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 msgid "Phone" -msgstr "电话" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 +msgid "Remove Image" +msgstr "" #: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 -msgid "Remove Image" -msgstr "移除图像" - -#: company/templates/company/company_base.html:207 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" -msgstr "移除" +msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" -msgstr "上传图片" +msgstr "" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" -msgstr "下载图片" +msgstr "" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" -msgstr "供应商商品" +msgstr "" #: company/templates/company/detail.html:19 msgid "Create new supplier part" -msgstr "创建新的供应商商品" +msgstr "" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" -msgstr "新建供应商商品" +msgstr "" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "订购商品" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "删除商品" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "删除商品" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" -msgstr "制造商商品" +msgstr "" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" -msgstr "新建制造商商品" +msgstr "" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" -msgstr "新建制造商商品" +msgstr "" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" -msgstr "供货商库存" +msgstr "" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" -msgstr "采购订单" +msgstr "" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" -msgstr "新建采购订单" +msgstr "" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" -msgstr "新建采购订单" +msgstr "" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" -msgstr "销售订单" +msgstr "銷售訂單" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" -msgstr "新建销售订单" +msgstr "" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" -msgstr "新建销售订单" +msgstr "" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 msgid "Return Orders" msgstr "" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" msgstr "" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" msgstr "" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" -msgstr "公司备注" +msgstr "" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 msgid "Company Contacts" msgstr "" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 msgid "Add Contact" msgstr "" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "供应商列表" +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" -msgstr "制造商" +msgstr "" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" -msgstr "订购商品" +msgstr "" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" -msgstr "编辑制造商商品" +msgstr "" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" -msgstr "删除生产商商品" +msgstr "" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" -msgstr "内部商品" +msgstr "" #: company/templates/company/manufacturer_part.html:95 msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" -msgstr "供应商" +msgstr "" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "删除供应商商品" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "删除" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" -msgstr "参数" +msgstr "" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" -msgstr "新建参数" +msgstr "" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "删除参数" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" -msgstr "添加参数" +msgstr "" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" @@ -4123,7 +4266,7 @@ msgstr "" #: company/templates/company/sidebar.html:10 msgid "Supplied Parts" -msgstr "供应商部件" +msgstr "" #: company/templates/company/sidebar.html:16 msgid "Supplied Stock Items" @@ -4137,209 +4280,207 @@ msgstr "" msgid "Contacts" msgstr "" -#: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 -msgid "Supplier Part" -msgstr "供应商商品" +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 +msgid "Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" -msgstr "订购商品" +msgstr "" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" -msgstr "更新可用性" +msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" -msgstr "编辑供应商商品" +msgstr "" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" -msgstr "复制供应商部件" +msgstr "" + +#: company/templates/company/supplier_part.html:73 +msgid "Delete Supplier Part" +msgstr "" #: company/templates/company/supplier_part.html:74 -msgid "Delete Supplier Part" -msgstr "删除供应商部件" - -#: company/templates/company/supplier_part.html:75 msgid "Delete Supplier Part" -msgstr "删除供应商部件" +msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" -msgstr "无可用供应商信息" +msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" -msgstr "供货商商品库存" +msgstr "" + +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 +msgid "Create new stock item" +msgstr "" #: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 -msgid "Create new stock item" -msgstr "新建库存物品" - -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" -msgstr "新库存物品" +msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" -msgstr "供应商商品订单" +msgstr "" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" -msgstr "价格信息" +msgstr "" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" -msgstr "供应商部件二维码" +msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" -msgstr "将条码绑定至供应商部件" +msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" -msgstr "更新部件可用性" +msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" -msgstr "库存项" +msgstr "" #: company/templates/company/supplier_part_sidebar.html:9 msgid "Supplier Part Pricing" -msgstr "供应商商品价格" +msgstr "" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" -msgstr "新增供应商" +msgstr "" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" -msgstr "新建制造商" +msgstr "" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" -msgstr "客户信息" +msgstr "" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" -msgstr "新建客户" +msgstr "" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" -msgstr "公司" +msgstr "" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" -msgstr "新建公司信息" +msgstr "" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" -msgstr "标签名称" +msgstr "" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" -msgstr "标签说明" - -#: label/models.py:118 -msgid "Label" -msgstr "标签" - -#: label/models.py:119 -msgid "Label template file" -msgstr "标签模板文件" - -#: label/models.py:125 report/models.py:273 -msgid "Enabled" -msgstr "已启用" - -#: label/models.py:126 -msgid "Label template is enabled" -msgstr "标签模板已启用" +msgstr "" #: label/models.py:131 -msgid "Width [mm]" -msgstr "宽度 [mm]" +msgid "Label" +msgstr "" #: label/models.py:132 -msgid "Label width, specified in mm" -msgstr "标注宽度,以毫米为单位。" +msgid "Label template file" +msgstr "" -#: label/models.py:138 -msgid "Height [mm]" -msgstr "高度 [mm]" +#: label/models.py:138 report/models.py:311 +msgid "Enabled" +msgstr "" #: label/models.py:139 +msgid "Label template is enabled" +msgstr "" + +#: label/models.py:144 +msgid "Width [mm]" +msgstr "" + +#: label/models.py:145 +msgid "Label width, specified in mm" +msgstr "" + +#: label/models.py:151 +msgid "Height [mm]" +msgstr "" + +#: label/models.py:152 msgid "Label height, specified in mm" -msgstr "标注高度,以毫米为单位。" +msgstr "" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" -msgstr "文件名样式" +msgstr "" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," -msgstr "查询筛选器 (逗号分隔的键值对列表)" +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" -msgstr "筛选器" - -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "查询筛选器 (逗号分隔的键值对列表" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "商品查询筛选器 (逗号分隔的键值对列表)" +msgstr "" #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 -msgid "QC Code" +msgid "QR Code" msgstr "" #: label/templates/label/part/part_label_code128.html:31 @@ -4348,569 +4489,573 @@ msgstr "" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:73 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:242 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1452 order/models.py:1178 order/models.py:1262 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1456 order/models.py:1909 order/models.py:1955 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 msgid "Return Order" msgstr "" -#: order/api.py:1458 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" -msgstr "未知" +msgstr "" -#: order/models.py:74 +#: order/models.py:73 msgid "Total price for this order" msgstr "" -#: order/models.py:79 order/serializers.py:49 +#: order/models.py:78 order/serializers.py:50 msgid "Order Currency" msgstr "" -#: order/models.py:81 order/serializers.py:50 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:210 +#: order/models.py:206 msgid "Contact does not match selected company" msgstr "" -#: order/models.py:232 +#: order/models.py:226 msgid "Order description (optional)" msgstr "" -#: order/models.py:234 +#: order/models.py:231 msgid "Select project code for this order" msgstr "" -#: order/models.py:236 order/models.py:1094 order/models.py:1454 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" -msgstr "链接到外部页面" +msgstr "" -#: order/models.py:241 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." -msgstr "预期订单交付日期。超过该日期后订单将逾期。" +msgstr "" -#: order/models.py:250 +#: order/models.py:248 msgid "Created By" -msgstr "创建者" +msgstr "" -#: order/models.py:257 +#: order/models.py:255 msgid "User or group responsible for this order" -msgstr "负责此订单的用户或群组" +msgstr "" -#: order/models.py:267 +#: order/models.py:265 msgid "Point of contact for this order" msgstr "" -#: order/models.py:360 order/models.py:766 +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:368 order/models.py:791 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:383 +#: order/models.py:387 msgid "Company from which the items are being ordered" -msgstr "订购该商品的公司" +msgstr "" -#: order/models.py:391 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:391 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:398 +#: order/models.py:402 msgid "received by" -msgstr "接收方" +msgstr "" -#: order/models.py:403 order/models.py:1761 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" -msgstr "签发日期" +msgstr "" -#: order/models.py:404 order/models.py:1762 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" -msgstr "订单签发日期" +msgstr "" -#: order/models.py:410 order/models.py:1768 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" -msgstr "订单完成日期" +msgstr "" -#: order/models.py:445 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:606 +#: order/models.py:610 msgid "Quantity must be a positive number" -msgstr "数量必须大于0" +msgstr "" -#: order/models.py:780 +#: order/models.py:783 msgid "Company to which the items are being sold" -msgstr "向其出售该商品的公司" +msgstr "" -#: order/models.py:799 order/models.py:1755 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:799 order/models.py:1756 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:801 order/models.py:1408 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" -msgstr "发货日期" +msgstr "" -#: order/models.py:808 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:857 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" -msgstr "尚未分配部件,因此订单无法完成" +msgstr "" -#: order/models.py:861 +#: order/models.py:864 msgid "Only an open order can be marked as complete" msgstr "" -#: order/models.py:864 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:867 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" #: order/models.py:1074 msgid "Item quantity" -msgstr "物品数量" +msgstr "" -#: order/models.py:1087 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1089 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1100 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1118 +#: order/models.py:1117 msgid "Line item description (optional)" msgstr "" -#: order/models.py:1123 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1124 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1133 +#: order/models.py:1132 msgid "Unit price" -msgstr "单价" +msgstr "" -#: order/models.py:1163 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1171 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1177 order/models.py:1262 order/models.py:1303 -#: order/models.py:1402 order/models.py:1551 order/models.py:1908 -#: order/models.py:1955 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1196 +#: order/models.py:1194 msgid "Supplier part" -msgstr "供应商商品" +msgstr "" -#: order/models.py:1203 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1204 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1211 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" -msgstr "采购价格" +msgstr "" -#: order/models.py:1212 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1225 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" -#: order/models.py:1291 +#: order/models.py:1288 msgid "Virtual part cannot be assigned to a sales order" msgstr "" -#: order/models.py:1296 +#: order/models.py:1293 msgid "Only salable parts can be assigned to a sales order" msgstr "" -#: order/models.py:1322 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" -msgstr "销售价格" +msgstr "" -#: order/models.py:1323 +#: order/models.py:1320 msgid "Unit sale price" msgstr "" -#: order/models.py:1333 +#: order/models.py:1330 msgid "Shipped quantity" msgstr "" -#: order/models.py:1409 +#: order/models.py:1406 msgid "Date of shipment" msgstr "" -#: order/models.py:1414 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" -#: order/models.py:1415 +#: order/models.py:1412 msgid "Date of delivery of shipment" msgstr "" -#: order/models.py:1422 +#: order/models.py:1419 msgid "Checked By" msgstr "" -#: order/models.py:1423 +#: order/models.py:1420 msgid "User who checked this shipment" msgstr "" -#: order/models.py:1430 order/models.py:1627 order/serializers.py:1248 -#: order/serializers.py:1376 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" -#: order/models.py:1431 +#: order/models.py:1428 msgid "Shipment number" msgstr "" -#: order/models.py:1439 +#: order/models.py:1436 msgid "Tracking Number" msgstr "" -#: order/models.py:1440 +#: order/models.py:1437 msgid "Shipment tracking information" msgstr "" -#: order/models.py:1447 +#: order/models.py:1444 msgid "Invoice Number" msgstr "" -#: order/models.py:1448 +#: order/models.py:1445 msgid "Reference number for associated invoice" msgstr "" -#: order/models.py:1470 +#: order/models.py:1467 msgid "Shipment has already been sent" msgstr "" -#: order/models.py:1473 +#: order/models.py:1470 msgid "Shipment has no allocated stock items" msgstr "" -#: order/models.py:1586 order/models.py:1588 +#: order/models.py:1583 order/models.py:1585 msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1592 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1597 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1607 order/serializers.py:1110 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1610 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1611 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1619 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1628 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1641 order/models.py:1916 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" -msgstr "物品" +msgstr "" -#: order/models.py:1642 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1645 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1725 +#: order/models.py:1723 msgid "Return Order reference" msgstr "" -#: order/models.py:1739 +#: order/models.py:1737 msgid "Company from which items are being returned" msgstr "" -#: order/models.py:1750 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1901 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1917 +#: order/models.py:1911 msgid "Select item to return from customer" msgstr "" -#: order/models.py:1922 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1923 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1934 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1934 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1940 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:247 +#: order/serializers.py:258 msgid "Order cannot be cancelled" -msgstr "无法取消订单" +msgstr "" -#: order/serializers.py:262 order/serializers.py:1128 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:273 order/serializers.py:1139 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:386 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:404 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:422 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:427 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:434 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:472 order/serializers.py:1216 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:488 order/serializers.py:607 order/serializers.py:1589 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:507 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:515 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:528 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" -msgstr "条形码" +msgstr "" -#: order/serializers.py:529 +#: order/serializers.py:539 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:545 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:569 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:623 order/serializers.py:1604 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:640 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:651 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:950 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1007 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1071 order/serializers.py:1225 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1093 +#: order/serializers.py:1129 msgid "Quantity must be positive" -msgstr "数量必须大于0" +msgstr "" -#: order/serializers.py:1238 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" -msgstr "输入序列号以进行分配" +msgstr "" -#: order/serializers.py:1260 order/serializers.py:1384 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1263 order/serializers.py:1387 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1317 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1327 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1555 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1562 +#: order/serializers.py:1597 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1565 +#: order/serializers.py:1600 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1597 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1678 +#: order/serializers.py:1710 msgid "Line price currency" msgstr "" -#: order/tasks.py:27 +#: order/tasks.py:26 msgid "Overdue Purchase Order" -msgstr "超时采购订单" +msgstr "" -#: order/tasks.py:32 +#: order/tasks.py:31 #, python-brace-format msgid "Purchase order {po} is now overdue" -msgstr "采购订单 {po} 已逾期" +msgstr "" -#: order/tasks.py:90 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:95 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -4920,119 +5065,111 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" -msgstr "编辑订单" +msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" -msgstr "取消订单" +msgstr "" #: order/templates/order/order_base.html:73 msgid "Duplicate order" -msgstr "复制订单" +msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 msgid "Issue Order" msgstr "" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" -msgstr "标记订单为完成" +msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" -msgstr "完成订单" +msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" msgstr "" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" msgstr "" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 msgid "Link Barcode to Purchase Order" msgstr "" @@ -5063,14 +5200,14 @@ msgstr "" #: part/templates/part/import_wizard/match_fields.html:35 #: templates/patterns/wizard/match_fields.html:34 msgid "File Fields" -msgstr "文件字段" +msgstr "" #: order/templates/order/order_wizard/match_fields.html:42 #: part/templates/part/import_wizard/ajax_match_fields.html:35 #: part/templates/part/import_wizard/match_fields.html:42 #: templates/patterns/wizard/match_fields.html:41 msgid "Remove column" -msgstr "移除列" +msgstr "" #: order/templates/order/order_wizard/match_fields.html:60 #: part/templates/part/import_wizard/ajax_match_fields.html:53 @@ -5085,32 +5222,32 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" -msgstr "移除行" +msgstr "" #: order/templates/order/order_wizard/match_parts.html:12 #: part/templates/part/import_wizard/ajax_match_references.html:12 #: part/templates/part/import_wizard/match_references.html:12 msgid "Errors exist in the submitted data" -msgstr "提交数据中存在错误" +msgstr "" #: order/templates/order/order_wizard/match_parts.html:28 #: part/templates/part/import_wizard/ajax_match_references.html:21 #: part/templates/part/import_wizard/match_references.html:28 msgid "Row" -msgstr "行" +msgstr "" #: order/templates/order/order_wizard/match_parts.html:29 msgid "Select Supplier Part" -msgstr "选择供应商商品" +msgstr "" #: order/templates/order/order_wizard/po_upload.html:8 msgid "Return to Orders" @@ -5130,7 +5267,7 @@ msgstr "" #: templates/patterns/wizard/upload.html:13 #, python-format msgid "Step %(step)s of %(count)s" -msgstr "步骤 %(step)s / %(count)s" +msgstr "" #: order/templates/order/po_sidebar.html:5 #: order/templates/order/return_order_detail.html:18 @@ -5152,9 +5289,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5165,30 +5302,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -msgid "Delete Line Items" -msgstr "" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5197,40 +5329,40 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 msgid "Print return order report" msgstr "" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" -msgstr "总成本" +msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" msgstr "" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 msgid "Link Barcode to Return Order" msgstr "" @@ -5238,35 +5370,35 @@ msgstr "" msgid "Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 msgid "Ship Items" msgstr "" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" msgstr "" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" msgstr "" @@ -5274,18 +5406,17 @@ msgstr "" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" -msgstr "操作" +msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5293,64 +5424,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" -msgstr "未找到价格" +msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3667 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" -msgstr "商品ID" +msgstr "" -#: part/admin.py:34 part/admin.py:275 part/models.py:3671 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" -msgstr "部件名称" +msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" -msgstr "部件描述" +msgstr "" -#: part/admin.py:36 part/models.py:889 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:896 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" -msgstr "版本号" +msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:875 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" -msgstr "关键词" +msgstr "" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" -msgstr "类别 ID" +msgstr "" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5358,602 +5490,602 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:864 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:980 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" -msgstr "最低库存" +msgstr "" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" -msgstr "有库存" +msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" -msgstr "订购中" +msgstr "" #: part/admin.py:63 part/templates/part/part_sidebar.html:27 msgid "Used In" -msgstr "用于" +msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "已分配" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2930 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2936 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" -msgstr "类别路径" +msgstr "" -#: part/admin.py:202 part/models.py:392 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" -msgstr "商品" +msgstr "零件" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3675 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:498 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:518 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:536 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:622 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:770 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:771 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:777 +#: part/api.py:781 msgid "This option must be selected" -msgstr "必须选择此项" +msgstr "" -#: part/bom.py:175 part/models.py:127 part/models.py:923 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" -msgstr "默认仓储地点" +msgstr "" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" -msgstr "总库存" +msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" -msgstr "可用库存" +msgstr "" #: part/forms.py:48 msgid "Input quantity for price calculation" -msgstr "输入数量以计算价格" +msgstr "" -#: part/models.py:75 part/models.py:3616 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" -msgstr "商品类别" +msgstr "" -#: part/models.py:76 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" -msgstr "商品类别" +msgstr "" -#: part/models.py:128 +#: part/models.py:98 msgid "Default location for parts in this category" -msgstr "此类别商品的默认仓储地点" +msgstr "" -#: part/models.py:133 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:135 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:139 +#: part/models.py:109 msgid "Default keywords for parts in this category" -msgstr "此类别商品的默认关键字" +msgstr "" -#: part/models.py:144 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" -msgstr "图标" +msgstr "" -#: part/models.py:145 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" -msgstr "图标(可选)" +msgstr "" -#: part/models.py:164 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:475 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:517 part/models.py:529 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:601 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" -msgstr "IPN 必须匹配正则表达式 {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" -#: part/models.py:672 +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:803 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" -msgstr "在商品设置中不允许重复的IPN" +msgstr "" -#: part/models.py:808 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:822 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:846 part/models.py:3672 +#: part/models.py:813 part/models.py:3676 msgid "Part name" -msgstr "商品名称" +msgstr "" -#: part/models.py:852 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:853 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:863 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:870 +#: part/models.py:837 msgid "Part description (optional)" msgstr "" -#: part/models.py:876 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" -msgstr "提高搜索结果可见性的关键字" +msgstr "" -#: part/models.py:883 part/models.py:3198 part/models.py:3615 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" -msgstr "类别" +msgstr "" -#: part/models.py:884 +#: part/models.py:851 msgid "Part category" -msgstr "商品类别" +msgstr "" -#: part/models.py:890 +#: part/models.py:857 msgid "Internal Part Number" -msgstr "内部商品编号" +msgstr "" -#: part/models.py:895 +#: part/models.py:862 msgid "Part revision or version number" -msgstr "商品版本号" +msgstr "" -#: part/models.py:921 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:966 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:967 +#: part/models.py:934 msgid "Default supplier part" -msgstr "默认供应商商品" +msgstr "" -#: part/models.py:974 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:975 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:981 +#: part/models.py:949 msgid "Minimum allowed stock level" -msgstr "允许的最小库存量" +msgstr "" -#: part/models.py:988 +#: part/models.py:956 msgid "Units of measure for this part" -msgstr "该部件的计量单位" +msgstr "" -#: part/models.py:997 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1003 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1009 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1014 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1019 +#: part/models.py:987 msgid "Can this part be sold to customers?" -msgstr "此商品可以销售给客户吗?" +msgstr "" -#: part/models.py:1024 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1029 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" -msgstr "这是一个虚拟商品,如软件产品或许可证吗?" +msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1031 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1034 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1036 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1040 +#: part/models.py:1008 msgid "Creation User" -msgstr "新建用户" - -#: part/models.py:1042 -msgid "User responsible for this part" msgstr "" -#: part/models.py:1046 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1014 +msgid "Owner responsible for this part" +msgstr "" + +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1921 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2853 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2870 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2871 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2876 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2877 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2882 +#: part/models.py:2886 msgid "Minimum Purchase Cost" -msgstr "最低购买成本" +msgstr "" -#: part/models.py:2883 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2892 msgid "Maximum Purchase Cost" -msgstr "最大购买成本" +msgstr "" -#: part/models.py:2889 +#: part/models.py:2893 msgid "Maximum historical purchase cost" -msgstr "最高历史购买成本" +msgstr "" -#: part/models.py:2894 +#: part/models.py:2898 msgid "Minimum Internal Price" -msgstr "最低内部价格" +msgstr "" -#: part/models.py:2895 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2900 +#: part/models.py:2904 msgid "Maximum Internal Price" -msgstr "最大内部价格" +msgstr "" -#: part/models.py:2901 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2906 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2907 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2912 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2913 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2918 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2919 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2924 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2925 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2931 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2937 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2942 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2943 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2948 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2949 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2954 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2955 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2960 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2961 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2980 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2985 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2986 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2993 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2997 part/models.py:3080 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" -msgstr "日期" +msgstr "" -#: part/models.py:2998 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3006 +#: part/models.py:3010 msgid "Additional notes" -msgstr "附加注释" +msgstr "" -#: part/models.py:3014 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3019 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3020 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3025 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3026 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3087 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" -msgstr "报告" +msgstr "" -#: part/models.py:3088 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3093 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3094 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3102 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3238 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3255 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3275 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3276 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3281 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3282 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3287 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3288 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3293 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3294 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3299 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3300 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" @@ -5973,476 +6105,488 @@ msgstr "" msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3401 +#: part/models.py:3400 msgid "Parameter Name" msgstr "" -#: part/models.py:3407 +#: part/models.py:3406 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3417 +#: part/models.py:3416 msgid "Parameter description" msgstr "" -#: part/models.py:3423 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" -#: part/models.py:3424 +#: part/models.py:3423 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3429 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" -#: part/models.py:3430 +#: part/models.py:3429 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3511 +#: part/models.py:3503 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3555 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3560 part/models.py:3621 part/models.py:3622 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" -msgstr "参数模板" +msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3565 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3626 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" -msgstr "默认值" +msgstr "" -#: part/models.py:3627 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3664 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3668 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3676 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3679 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3680 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3764 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3779 msgid "Sub part" -msgstr "子部件" +msgstr "" -#: part/models.py:3773 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3779 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3783 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "可选项" - -#: part/models.py:3784 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3789 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3790 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3794 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3795 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3798 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3801 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3805 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3810 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3811 +#: part/models.py:3818 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:3816 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3817 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3822 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3823 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3909 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3918 part/models.py:3920 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4036 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4057 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4070 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4078 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4093 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4097 +#: part/models.py:4113 msgid "Select Related Part" -msgstr "选择相关的部件" +msgstr "" -#: part/models.py:4115 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4119 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 -msgid "Original Part" -msgstr "" - -#: part/serializers.py:302 -msgid "Select original part to duplicate" -msgstr "" - -#: part/serializers.py:307 -msgid "Copy Image" -msgstr "复制图像" - -#: part/serializers.py:307 -msgid "Copy image from original part" -msgstr "从原部件复制图像" - -#: part/serializers.py:312 part/templates/part/detail.html:296 -msgid "Copy BOM" -msgstr "" - -#: part/serializers.py:312 -msgid "Copy bill of materials from original part" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy Parameters" -msgstr "" - -#: part/serializers.py:317 -msgid "Copy parameter data from original part" -msgstr "" - -#: part/serializers.py:327 -msgid "Initial Stock Quantity" -msgstr "" - -#: part/serializers.py:327 -msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." -msgstr "" - -#: part/serializers.py:333 -msgid "Initial Stock Location" -msgstr "" - -#: part/serializers.py:333 -msgid "Specify initial stock location for this Part" -msgstr "" - -#: part/serializers.py:343 -msgid "Select supplier (or leave blank to skip)" +#: part/serializers.py:346 +msgid "No parts selected" msgstr "" #: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" -msgstr "复制部件" +msgstr "" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" -msgstr "供应商信息" +msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" -msgstr "复制类别参数" +msgstr "" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" -msgstr "更新" +msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" -msgstr "移除现有数据" +msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" -msgstr "未提供数量" +msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" -msgstr "总数量" +msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6461,96 +6605,76 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" -msgstr "类别操作" - -#: part/templates/part/category.html:59 -msgid "Edit category" -msgstr "编辑类别" +msgstr "" #: part/templates/part/category.html:60 -msgid "Edit Category" -msgstr "编辑类别" +msgid "Edit category" +msgstr "" -#: part/templates/part/category.html:64 -msgid "Delete category" -msgstr "删除类别" +#: part/templates/part/category.html:61 +msgid "Edit Category" +msgstr "" #: part/templates/part/category.html:65 -msgid "Delete Category" -msgstr "删除类别" +msgid "Delete category" +msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:66 +msgid "Delete Category" +msgstr "" + +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" -msgstr "子类别" +msgstr "" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" -msgstr "商品 (包括子类别)" +msgstr "" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" -msgstr "新建商品" +msgstr "" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" -msgstr "新商品" +msgstr "" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "选项" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "设置类别" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "设置类别" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" -msgstr "商品参数" +msgstr "" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" -msgstr "新建商品类别" +msgstr "" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" -msgstr "新建分类" +msgstr "" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" -msgstr "导入部件" +msgstr "" #: part/templates/part/copy_part.html:10 #, python-format @@ -6574,14 +6698,14 @@ msgstr "" #: part/templates/part/detail.html:20 msgid "Part Stock" -msgstr "商品库存" +msgstr "" #: part/templates/part/detail.html:44 msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6590,9 +6714,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6604,101 +6728,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" -msgstr "相关部件" +msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" -msgstr "商品供应商" +msgstr "" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" -msgstr "商品制造商" +msgstr "" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "删除制造商商品" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6713,7 +6837,7 @@ msgstr "" #: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" -msgstr "从文件导入商品" +msgstr "" #: part/templates/part/import_wizard/part_upload.html:31 msgid "Requirements for part import" @@ -6732,173 +6856,173 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" -msgstr "格式" +msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" #: part/templates/part/part_app_base.html:12 msgid "Part List" -msgstr "商品列表" +msgstr "" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" -msgstr "打印标签" +msgstr "" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" -msgstr "清点商品库存" +msgstr "" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" -msgstr "重复的商品" +msgstr "" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" -msgstr "编辑商品" +msgstr "" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" -msgstr "删除商品" +msgstr "" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" -msgstr "商品可以由其他部件组装" +msgstr "" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" -msgstr "商品可以用于组装成品" +msgstr "" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" -msgstr "商品可以从外部供应商处购买" +msgstr "" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" -msgstr "商品可以销售给客户" +msgstr "" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 msgid "Part is not active" msgstr "" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" -msgstr "商品是虚拟的(不是实体零件)" +msgstr "" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" -msgstr "商品二维码" +msgstr "" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 msgid "part" msgstr "" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -6912,7 +7036,7 @@ msgstr "" #: part/templates/part/part_pricing.html:95 #: part/templates/part/part_pricing.html:110 msgid "Unit Cost" -msgstr "单位成本" +msgstr "" #: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" @@ -6941,7 +7065,7 @@ msgstr "" #: part/templates/part/part_pricing.html:123 msgid "No pricing information is available for this part." -msgstr "此商品无价格信息可用。" +msgstr "" #: part/templates/part/part_scheduling.html:14 msgid "Scheduled Quantity" @@ -6955,17 +7079,17 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" -msgstr "库存" +msgstr "庫存" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" -msgstr "定价" +msgstr "" #: part/templates/part/part_sidebar.html:44 msgid "Scheduling" @@ -6987,13 +7111,13 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" -msgstr "最后更新" +msgstr "" #: part/templates/part/prices.html:34 part/templates/part/prices.html:116 msgid "Price Category" @@ -7001,11 +7125,11 @@ msgstr "" #: part/templates/part/prices.html:35 part/templates/part/prices.html:117 msgid "Minimum" -msgstr "最小" +msgstr "" #: part/templates/part/prices.html:36 part/templates/part/prices.html:118 msgid "Maximum" -msgstr "最大" +msgstr "" #: part/templates/part/prices.html:48 part/templates/part/prices.html:163 msgid "Internal Pricing" @@ -7040,7 +7164,7 @@ msgstr "" #: part/templates/part/prices.html:264 part/templates/part/prices.html:287 #: part/templates/part/prices.html:316 msgid "Jump to overview" -msgstr "跳转到总览" +msgstr "" #: part/templates/part/prices.html:169 msgid "Add Internal Price Break" @@ -7054,14 +7178,14 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" -msgstr "无库存" +msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" -msgstr "低库存" +msgstr "低庫存" #: part/templates/part/upload_bom.html:8 msgid "Return to BOM" @@ -7098,7 +7222,7 @@ msgstr "" #: part/templates/part/upload_bom.html:40 msgid "Each part must already exist in the database" -msgstr "每个商品必须已经存在于数据库" +msgstr "" #: part/templates/part/variant_part.html:9 msgid "Create new part variant" @@ -7108,62 +7232,62 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" -msgstr "选择商品图像" +msgstr "" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" -msgstr "更新商品图像" +msgstr "" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" -msgstr "未找到商品图像" +msgstr "" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" -msgstr "商品价格" +msgstr "" #: plugin/base/action/api.py:27 msgid "No action specified" -msgstr "未指定操作" +msgstr "" #: plugin/base/action/api.py:38 msgid "No matching action found" -msgstr "未找到指定操作" +msgstr "" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" -msgstr "缺少条形码数据" +msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" -msgstr "未找到匹配条形码数据" +msgstr "" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" -msgstr "找到匹配条形码数据" +msgstr "" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7171,7 +7295,53 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7185,6 +7355,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7222,242 +7397,409 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" -msgstr "没有为模板提供有效对象" +msgstr "" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" -msgstr "商品过滤器" +msgstr "" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7474,11 +7816,11 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" -msgstr "单价" +msgstr "" #: report/templates/report/inventree_po_report_base.html:55 #: report/templates/report/inventree_return_order_report_base.html:48 @@ -7488,25 +7830,29 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" -msgstr "序列号" +msgstr "" + +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" @@ -7517,12 +7863,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2243 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2249 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7548,485 +7894,539 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 msgid "Status Code" msgstr "" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" -msgstr "供应商商品ID" +msgstr "" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 msgid "Delete on Deplete" msgstr "" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:420 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:582 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:589 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:615 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:624 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:642 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" -msgstr "仓储地点" +msgstr "" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" -msgstr "仓储地点" +msgstr "" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 +#: stock/models.py:636 #, python-brace-format -msgid "Part type ('{pf}') must be {pe}" -msgstr "商品类型 ('{pf}') 必须是 {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 msgid "Consumed By" msgstr "" -#: stock/models.py:763 +#: stock/models.py:797 msgid "Build order which consumed this stock item" msgstr "" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1378 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1384 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1390 +#: stock/models.py:1423 #, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" msgstr "" -#: stock/models.py:1393 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1396 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1403 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" -msgstr "序列号已存在" +msgstr "" -#: stock/models.py:1474 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1477 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1480 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1483 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1486 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1489 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1496 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1500 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1504 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1508 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1679 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2161 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2219 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2225 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2244 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2250 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2256 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2263 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2269 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" -msgstr "输入新项目的序列号" +msgstr "" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" -msgstr "目标库存位置" +msgstr "" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 +#: stock/serializers.py:496 +msgid "Quantity to Install" +msgstr "" + +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" +msgstr "" + +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 +msgid "Add transaction note (optional)" +msgstr "" + +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:434 +#: stock/serializers.py:526 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:471 +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:476 stock/serializers.py:557 -msgid "Add transaction note (optional)" -msgstr "添加交易备注 (可选)" - -#: stock/serializers.py:510 +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8034,263 +8434,271 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 msgid "This stock item is unavailable" msgstr "" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." -msgstr "此库存项目正在生产中,无法编辑。" +msgstr "" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" -msgstr "未设置仓储地点" +msgstr "" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 msgid "stock item" msgstr "" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" -msgstr "警告" +msgstr "" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8302,82 +8710,86 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 -msgid "Location actions" -msgstr "仓储地操作" +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" #: stock/templates/stock/location.html:104 -msgid "Edit location" -msgstr "编辑仓储地" +msgid "Location actions" +msgstr "" #: stock/templates/stock/location.html:106 -msgid "Delete location" -msgstr "删除仓储地" +msgid "Edit location" +msgstr "" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:108 +msgid "Delete location" +msgstr "" + +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." -msgstr "您不在此仓储地的所有者列表中,无法编辑此仓储地。" +msgstr "" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" -msgstr "新建仓储地点" +msgstr "" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" -msgstr "新建仓储地点" +msgstr "" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 msgid "stock location" msgstr "" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8414,7 +8826,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8451,71 +8863,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" -msgstr "" +msgstr "訂閱零件通知" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" -msgstr "最近商品" +msgstr "最近零件" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" -msgstr "" +msgstr "最近更新" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" -msgstr "" +msgstr "生產中的工單" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" -msgstr "" +msgstr "逾期的生產工單" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8527,7 +8939,7 @@ msgstr "" #: templates/InvenTree/notifications/history.html:14 #: templates/InvenTree/notifications/notifications.html:75 msgid "Delete Notifications" -msgstr "移除通知" +msgstr "" #: templates/InvenTree/notifications/inbox.html:9 msgid "Pending Notifications" @@ -8541,7 +8953,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8558,7 +8970,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8576,15 +8988,15 @@ msgstr "" #: templates/InvenTree/settings/barcode.html:8 msgid "Barcode Settings" -msgstr "条形码设置" +msgstr "" #: templates/InvenTree/settings/build.html:8 msgid "Build Order Settings" -msgstr "生产订单设置" +msgstr "" #: templates/InvenTree/settings/category.html:7 msgid "Category Settings" -msgstr "类别设置" +msgstr "" #: templates/InvenTree/settings/global.html:8 msgid "Server Settings" @@ -8593,7 +9005,7 @@ msgstr "" #: templates/InvenTree/settings/label.html:8 #: templates/InvenTree/settings/user_labels.html:9 msgid "Label Settings" -msgstr "标签设置" +msgstr "" #: templates/InvenTree/settings/login.html:8 msgid "Login Settings" @@ -8613,9 +9025,9 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" -msgstr "设置" +msgstr "" #: templates/InvenTree/settings/mixins/urls.html:5 msgid "URLs" @@ -8633,7 +9045,7 @@ msgstr "" #: templates/InvenTree/settings/notifications.html:9 #: templates/InvenTree/settings/user_notifications.html:9 msgid "Notification Settings" -msgstr "通知设置" +msgstr "" #: templates/InvenTree/settings/notifications.html:18 msgid "Slug" @@ -8641,30 +9053,39 @@ msgstr "" #: templates/InvenTree/settings/part.html:7 msgid "Part Settings" -msgstr "商品设置" +msgstr "" #: templates/InvenTree/settings/part.html:42 msgid "Part Import" -msgstr "商品导入" +msgstr "" #: templates/InvenTree/settings/part.html:46 msgid "Import Part" -msgstr "导入商品" +msgstr "" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" -msgstr "商品参数模板" +msgstr "" #: templates/InvenTree/settings/part_stocktake.html:7 msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8672,39 +9093,39 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:16 msgid "Plugin information" -msgstr "插件信息" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8738,10 +9159,11 @@ msgstr "" #: templates/InvenTree/settings/plugin_settings.html:93 msgid "Installation path" -msgstr "安装路径" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8749,35 +9171,37 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" -msgstr "采购订单设置" +msgstr "" #: templates/InvenTree/settings/pricing.html:7 msgid "Pricing Settings" @@ -8785,20 +9209,20 @@ msgstr "" #: templates/InvenTree/settings/pricing.html:34 msgid "Exchange Rates" -msgstr "汇率" +msgstr "" #: templates/InvenTree/settings/pricing.html:38 msgid "Update Now" -msgstr "立即更新" +msgstr "" #: templates/InvenTree/settings/pricing.html:46 #: templates/InvenTree/settings/pricing.html:50 msgid "Last Update" -msgstr "上次更新" +msgstr "" #: templates/InvenTree/settings/pricing.html:50 msgid "Never" -msgstr "从不" +msgstr "" #: templates/InvenTree/settings/project_codes.html:8 msgid "Project Code Settings" @@ -8810,14 +9234,14 @@ msgid "Project Codes" msgstr "" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 msgid "New Project Code" msgstr "" #: templates/InvenTree/settings/report.html:8 #: templates/InvenTree/settings/user_reporting.html:9 msgid "Report Settings" -msgstr "报表设置" +msgstr "" #: templates/InvenTree/settings/returns.html:7 msgid "Return Order Settings" @@ -8825,11 +9249,11 @@ msgstr "" #: templates/InvenTree/settings/setting.html:31 msgid "No value set" -msgstr "未设置值" +msgstr "" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" -msgstr "编辑设置" +msgstr "" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" @@ -8851,54 +9275,107 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 -msgid "No project codes found" -msgstr "" - #: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 -msgid "Edit Project Code" +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 msgid "Delete Project Code" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" -msgstr "未找到类别参数模板" +msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" -msgstr "编辑模板" +msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" -msgstr "删除模板" +msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 msgid "Edit Category Parameter Template" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" -msgstr "删除类别参数模板" +msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" -msgstr "创建类别参数模板" +msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" -msgstr "用户设置" +msgstr "" #: templates/InvenTree/settings/sidebar.html:9 msgid "Account" @@ -8910,17 +9387,17 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:13 msgid "Home Page" -msgstr "主页" +msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" -msgstr "搜索" +msgstr "" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -8932,50 +9409,47 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" msgstr "" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" #: templates/InvenTree/settings/so.html:7 msgid "Sales Order Settings" -msgstr "销售订单设置" +msgstr "" #: templates/InvenTree/settings/stock.html:7 msgid "Stock Settings" -msgstr "库存设置" +msgstr "" + +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" -msgstr "帐户设置" +msgstr "" #: templates/InvenTree/settings/user.html:19 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 msgid "Change Password" -msgstr "更改密码" - -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "编辑" +msgstr "" #: templates/InvenTree/settings/user.html:33 msgid "Username" -msgstr "用户名" +msgstr "" #: templates/InvenTree/settings/user.html:37 msgid "First Name" -msgstr "名字" +msgstr "" #: templates/InvenTree/settings/user.html:41 msgid "Last Name" -msgstr "姓氏" +msgstr "" #: templates/InvenTree/settings/user.html:55 msgid "The following email addresses are associated with your account:" @@ -8990,6 +9464,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9003,7 +9478,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:96 msgid "Warning:" -msgstr "警告:" +msgstr "" #: templates/InvenTree/settings/user.html:97 msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc." @@ -9027,7 +9502,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:135 msgid "TOTP" -msgstr "TOTP" +msgstr "" #: templates/InvenTree/settings/user.html:141 msgid "Static" @@ -9071,11 +9546,11 @@ msgstr "" #: templates/InvenTree/settings/user.html:189 msgid "IP Address" -msgstr "IP 地址" +msgstr "" #: templates/InvenTree/settings/user.html:190 msgid "Device" -msgstr "设备" +msgstr "" #: templates/InvenTree/settings/user.html:191 msgid "Last Activity" @@ -9097,44 +9572,44 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" -msgstr "显示设置" +msgstr "" #: templates/InvenTree/settings/user_display.html:29 msgid "Theme Settings" -msgstr "主题设置" +msgstr "" #: templates/InvenTree/settings/user_display.html:39 msgid "Select theme" -msgstr "选择主题" +msgstr "" #: templates/InvenTree/settings/user_display.html:50 msgid "Set Theme" -msgstr "设置主题" +msgstr "" #: templates/InvenTree/settings/user_display.html:58 msgid "Language Settings" -msgstr "语言设置" +msgstr "" #: templates/InvenTree/settings/user_display.html:67 msgid "Select language" -msgstr "选择语言" +msgstr "" #: templates/InvenTree/settings/user_display.html:83 #, python-format msgid "%(lang_translated)s%% translated" -msgstr "%(lang_translated)s%% 已翻译" +msgstr "" #: templates/InvenTree/settings/user_display.html:85 msgid "No translations available" -msgstr "无可用翻译" +msgstr "" #: templates/InvenTree/settings/user_display.html:92 msgid "Set Language" -msgstr "设置语言" +msgstr "" #: templates/InvenTree/settings/user_display.html:95 msgid "Some languages are not complete" -msgstr "部分语言尚未翻译完成" +msgstr "" #: templates/InvenTree/settings/user_display.html:97 msgid "Show only sufficient" @@ -9150,23 +9625,23 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:106 msgid "Help the translation efforts!" -msgstr "帮助翻译工作!" +msgstr "" #: templates/InvenTree/settings/user_display.html:107 msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." -msgstr "InventTree 网页的本地化翻译是社区通过 crowdin 贡献的。我们欢迎并鼓励参与贡献。" +msgstr "" #: templates/InvenTree/settings/user_display.html:108 msgid "InvenTree Translation Project" -msgstr "InvenTree 翻译项目" +msgstr "" #: templates/InvenTree/settings/user_homepage.html:9 msgid "Home Page Settings" -msgstr "主页设置" +msgstr "" #: templates/InvenTree/settings/user_search.html:9 msgid "Search Settings" -msgstr "搜索设置" +msgstr "" #: templates/InvenTree/settings/user_sso.html:9 msgid "Single Sign On Accounts" @@ -9190,60 +9665,64 @@ msgstr "" #: templates/about.html:9 msgid "InvenTree Version" -msgstr "InvenTree 版本" +msgstr "" #: templates/about.html:14 msgid "Development Version" -msgstr "开发版" +msgstr "" #: templates/about.html:17 msgid "Up to Date" -msgstr "已是最新版本" +msgstr "" #: templates/about.html:19 msgid "Update Available" -msgstr "有可用更新" +msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" -msgstr "InvenTree 文档" +msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" -msgstr "API 版本" +msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" -msgstr "Python 版本" +msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" -msgstr "Django 版本" +msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" -msgstr "在 GitHub 上查看代码" +msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" -msgstr "致谢" +msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" -msgstr "手机 APP" - -#: templates/about.html:77 -msgid "Submit Bug Report" -msgstr "提交 Bug" - -#: templates/about.html:84 templates/clip.html:4 -#: templates/js/translated/helpers.js:585 -msgid "copy to clipboard" -msgstr "复制到剪贴板" +msgstr "" #: templates/about.html:84 +msgid "Submit Bug Report" +msgstr "" + +#: templates/about.html:91 templates/clip.html:4 +#: templates/js/translated/helpers.js:585 +msgid "copy to clipboard" +msgstr "" + +#: templates/about.html:91 msgid "copy version information" -msgstr "显示版本信息" +msgstr "" #: templates/account/base.html:66 templates/navbar.html:17 msgid "InvenTree logo" @@ -9252,16 +9731,16 @@ msgstr "" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:9 msgid "Confirm Email Address" -msgstr "确认邮件地址" +msgstr "" #: templates/account/email_confirm.html:15 #, python-format msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" -msgstr "确认" +msgstr "" #: templates/account/email_confirm.html:29 #, python-format @@ -9271,21 +9750,21 @@ msgstr "" #: templates/account/login.html:6 templates/account/login.html:17 #: templates/account/login.html:38 templates/socialaccount/login.html:5 msgid "Sign In" -msgstr "登录-test" +msgstr "" #: templates/account/login.html:21 msgid "Not a member?" -msgstr "还不是用户?" +msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 #: templates/socialaccount/signup.html:20 msgid "Sign Up" -msgstr "注册" +msgstr "" #: templates/account/login.html:45 msgid "Forgot Password?" -msgstr "忘记密码?" +msgstr "" #: templates/account/login.html:53 msgid "or log in with" @@ -9433,32 +9912,32 @@ msgstr "" #: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 msgid "Add Attachment" -msgstr "添加附件" - -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" msgstr "" #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9487,7 +9966,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9501,15 +9980,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9521,27 +10000,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9553,19 +10032,27 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9573,23 +10060,35 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" -msgstr "编辑附件" - -#: templates/js/translated/attachment.js:326 -msgid "Upload Date" msgstr "" #: templates/js/translated/attachment.js:346 +msgid "Upload Date" +msgstr "" + +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9599,7 +10098,7 @@ msgstr "" #: templates/js/translated/barcode.js:45 msgid "Enter barcode data" -msgstr "输入条形码数据" +msgstr "" #: templates/js/translated/barcode.js:59 msgid "Scan barcode using connected webcam" @@ -9622,7 +10121,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9632,7 +10131,7 @@ msgstr "" #: templates/js/translated/barcode.js:420 templates/navbar.html:114 msgid "Scan Barcode" -msgstr "扫描条形码" +msgstr "" #: templates/js/translated/barcode.js:440 msgid "No URL in response" @@ -9646,7 +10145,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9704,833 +10203,929 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 -msgid "Levels" -msgstr "等级" - #: templates/js/translated/bom.js:357 +msgid "Levels" +msgstr "" + +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 -msgid "Include Parameter Data" -msgstr "包含参数数据" - #: templates/js/translated/bom.js:371 +msgid "Include Parameter Data" +msgstr "" + +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 -msgid "Include Stock Data" -msgstr "包括库存数据" - #: templates/js/translated/bom.js:377 -msgid "Include part stock data in exported BOM" -msgstr "在导出 BOM 中包括库存数据" +msgid "Include Stock Data" +msgstr "" -#: templates/js/translated/bom.js:382 -msgid "Include Manufacturer Data" -msgstr "包括制造商数据" +#: templates/js/translated/bom.js:378 +msgid "Include part stock data in exported BOM" +msgstr "" #: templates/js/translated/bom.js:383 -msgid "Include part manufacturer data in exported BOM" -msgstr "在导出 BOM 中包含制造商数据" +msgid "Include Manufacturer Data" +msgstr "" -#: templates/js/translated/bom.js:388 -msgid "Include Supplier Data" -msgstr "包含供应商数据" +#: templates/js/translated/bom.js:384 +msgid "Include part manufacturer data in exported BOM" +msgstr "" #: templates/js/translated/bom.js:389 -msgid "Include part supplier data in exported BOM" -msgstr "在导出 BOM 中包含供应商数据" +msgid "Include Supplier Data" +msgstr "" -#: templates/js/translated/bom.js:394 -msgid "Include Pricing Data" +#: templates/js/translated/bom.js:390 +msgid "Include part supplier data in exported BOM" msgstr "" #: templates/js/translated/bom.js:395 +msgid "Include Pricing Data" +msgstr "" + +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" -msgstr "是否确定取消生产?" +msgstr "" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" -msgstr "生产订单未完成" +msgstr "" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" -msgstr "生产订单完成" +msgstr "" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" -msgstr "可追踪商品可以指定序列号" +msgstr "" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" -msgstr "创建创建生产产出" +msgstr "" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" msgstr "" -#: templates/js/translated/build.js:427 +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 msgid "Scrap build output" msgstr "" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" msgstr "" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" msgstr "" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 msgid "Selected build outputs will be marked as complete" msgstr "" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 msgid "Selected build outputs will be marked as scrapped" msgstr "" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 msgid "Scrapped output are marked as rejected" msgstr "" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 msgid "Allocated stock items will no longer be available" msgstr "" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 msgid "Scrap Build Outputs" msgstr "" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 msgid "Selected build outputs will be deleted" msgstr "" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 msgid "Build output data will be permanently deleted" msgstr "" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 msgid "Allocated stock items will be returned to stock" msgstr "" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 -msgid "Location not specified" -msgstr "未指定仓储地点" +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:995 +msgid "Location not specified" +msgstr "" + +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 msgid "build output" msgstr "" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 msgid "build outputs" msgstr "" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" -msgstr "选择商品" +msgstr "" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" -msgstr "没有用户信息" +msgstr "" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" -msgstr "添加制造商" +msgstr "" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" -msgstr "添加制造商商品" +msgstr "" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" -msgstr "编辑制造商商品" +msgstr "" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" -msgstr "添加供应商" +msgstr "" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" -msgstr "添加供应商商品" +msgstr "" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" -msgstr "删除所有选定的供应商商品" +msgstr "" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" -msgstr "增加新的公司信息" +msgstr "" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" -msgstr "未找到该公司信息" +msgstr "" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 msgid "Create New Contact" msgstr "" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 msgid "Edit Contact" msgstr "" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 msgid "All selected contacts will be deleted" msgstr "" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 msgid "Delete Contacts" msgstr "" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 msgid "No contacts found" msgstr "" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 msgid "Phone Number" msgstr "" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 msgid "Email Address" msgstr "" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 msgid "Delete Contact" msgstr "" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" -msgstr "删除制造商商品" +msgstr "" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" -msgstr "删除参数" +msgstr "" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" -msgstr "无指定参数" +msgstr "" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" -msgstr "编辑参数" +msgstr "" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" -msgstr "删除参数" +msgstr "" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" -msgstr "编辑参数" +msgstr "" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" -msgstr "删除参数" +msgstr "" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" -msgstr "未找到供应商商品" +msgstr "" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 msgid "Base Units" msgstr "" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" -msgstr "编辑供应商商品" +msgstr "" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" -msgstr "删除供应商商品" +msgstr "" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "选择筛选项" +msgstr "" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 msgid "Print Reports" msgstr "" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 msgid "Download table data" msgstr "" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10550,98 +11145,118 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" msgstr "" -#: templates/js/translated/label.js:62 -msgid "Export to PDF" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" msgstr "" -#: templates/js/translated/label.js:114 -msgid "selected" -msgstr "" - -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "选择标签模板" - -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" msgstr "" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 msgid "No items selected for printing" msgstr "" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "未找到标签" +msgstr "" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" msgstr "" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" -msgstr "取消" +msgstr "" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10650,32 +11265,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" -msgstr "ID" +msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10700,7 +11315,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10716,363 +11331,355 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" -msgstr "商品属性" +msgstr "" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "商品创建选项" +msgstr "" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "商品重复选项" +msgstr "" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "增加商品类别" +msgstr "" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" -msgstr "创建商品类别" +msgstr "" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 msgid "Create new category after this one" msgstr "" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 msgid "Part category created" msgstr "" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" -msgstr "编辑商品类别" +msgstr "" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" -msgstr "删除商品类别" +msgstr "" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" -msgstr "创建商品" +msgstr "" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" -msgstr "编辑商品" +msgstr "" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "可追溯商品" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" -msgstr "虚拟商品" +msgstr "" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" -msgstr "可销售商品" +msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" -msgstr "未找到商品参数模板" +msgstr "" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" -msgstr "找不到部件" - -#: templates/js/translated/part.js:2192 -msgid "parts" msgstr "" -#: templates/js/translated/part.js:2276 -msgid "No category" -msgstr "没有分类" - -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 -msgid "Display as list" -msgstr "以列表显示" - -#: templates/js/translated/part.js:2406 -msgid "Display as grid" -msgstr "以网格显示" - -#: templates/js/translated/part.js:2472 +#: templates/js/translated/part.js:2195 msgid "Set the part category for the selected parts" msgstr "" -#: templates/js/translated/part.js:2477 +#: templates/js/translated/part.js:2200 msgid "Set Part Category" -msgstr "设置商品类别" - -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" msgstr "" -#: templates/js/translated/part.js:2495 -msgid "Category is required" +#: templates/js/translated/part.js:2230 +msgid "Set category" msgstr "" -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2283 +msgid "parts" +msgstr "" + +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" -msgstr "以树形图显示" +msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" -msgstr "编辑测试结果" +msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" -msgstr "删除测试结果" +msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" -msgstr "无指定日期" +msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" -msgstr "指定的日期已过" +msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" -msgstr "最大数量" +msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11080,51 +11687,47 @@ msgstr "" msgid "No plugins found" msgstr "" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 -msgid "This plugin is not active" +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" msgstr "" -#: templates/js/translated/plugin.js:62 -msgid "Plugin Description" -msgstr "" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "样本" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 msgid "Enable Plugin" msgstr "" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 msgid "Are you sure you want to enable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 msgid "Are you sure you want to disable this plugin?" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Enable" msgstr "" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 msgid "Disable" msgstr "" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11148,254 +11751,254 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 msgid "Add barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 msgid "Remove barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 msgid "Specify location" msgstr "" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 msgid "Serials" msgstr "" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" -msgstr "订单编码" - -#: templates/js/translated/purchase_order.js:1277 -msgid "Quantity to Receive" -msgstr "" - -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 -msgid "Confirm receipt of items" msgstr "" #: templates/js/translated/purchase_order.js:1300 +msgid "Quantity to Receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 +msgid "Confirm receipt of items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 msgid "Scan Item Barcode" msgstr "" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 msgid "Invalid barcode data" msgstr "" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 msgid "All selected Line items will be deleted" msgstr "" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 msgid "Delete selected Line items?" msgstr "" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11413,7 +12016,7 @@ msgstr "" #: templates/js/translated/report.js:140 msgid "No Reports Found" -msgstr "没有找到报表" +msgstr "" #: templates/js/translated/report.js:141 msgid "No report templates found which match the selected items" @@ -11424,250 +12027,250 @@ msgstr "" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 msgid "Create Return Order" msgstr "" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 msgid "Are you sure you wish to cancel this Return Order?" msgstr "" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 msgid "Cancel Return Order" msgstr "" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 msgid "Complete Return Order" msgstr "" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 msgid "No return orders found" msgstr "" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 msgid "Issue this Sales Order?" msgstr "" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 msgid "Issue Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" -msgstr "确认库存分配" +msgstr "" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" -msgstr "确认删除操作" +msgstr "" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11679,696 +12282,736 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" -msgstr "编辑仓储地点" +msgstr "" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" -msgstr "新仓储地点" +msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 msgid "Stock location created" msgstr "" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" -msgstr "确实要删除此仓储地点吗?" +msgstr "" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" -msgstr "删除仓储地点" +msgstr "" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" -msgstr "库存项重复" +msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" -msgstr "复制库存项" +msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" -msgstr "确定要删除此库存项吗?" +msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" -msgstr "删除库存项" +msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" -msgstr "编辑库存项" +msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" -msgstr "新建库存项" +msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" -msgstr "查找序列号" +msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" -msgstr "输入序列号" +msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" -msgstr "输入序列号" +msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" -msgstr "没有匹配的序列号" +msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" -msgstr "找到多个匹配结果" +msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" -msgstr "转移库存" +msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" -msgstr "添加库存" +msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" -msgstr "添加" +msgstr "" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" -msgstr "删除库存" +msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" -msgstr "选择库存项" - -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "" + +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" -msgstr "正在生产" +msgstr "" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" -msgstr "未设置仓储地点" - -#: templates/js/translated/stock.js:1746 -msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1850 -msgid "Stock item is in production" -msgstr "库存品正在生产" - -#: templates/js/translated/stock.js:1855 -msgid "Stock item assigned to sales order" +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1858 -msgid "Stock item assigned to customer" -msgstr "" - -#: templates/js/translated/stock.js:1861 -msgid "Serialized stock item has been allocated" -msgstr "" - -#: templates/js/translated/stock.js:1863 -msgid "Stock item has been fully allocated" -msgstr "" - -#: templates/js/translated/stock.js:1865 -msgid "Stock item has been partially allocated" +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" msgstr "" #: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" -msgstr "详情" +msgstr "" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" -msgstr "可追溯商品" +msgstr "" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 -msgid "In Production" -msgstr "正在生产" - -#: templates/js/translated/table_filters.js:307 -msgid "Show items which are in production" -msgstr "显示正在生产的项目" - -#: templates/js/translated/table_filters.js:311 -msgid "Include Variants" -msgstr "" - -#: templates/js/translated/table_filters.js:312 -msgid "Include stock items for variant parts" -msgstr "" - -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 -msgid "Show stock items which are installed in another item" -msgstr "" - -#: templates/js/translated/table_filters.js:322 -msgid "Show items which have been assigned to a customer" -msgstr "" - -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 -msgid "Stock status" -msgstr "" - -#: templates/js/translated/table_filters.js:346 -msgid "Has batch code" -msgstr "" - -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 -msgid "Stock item is tracked by either batch code or serial number" -msgstr "" - #: templates/js/translated/table_filters.js:360 -msgid "Has purchase price" +msgid "In Production" msgstr "" #: templates/js/translated/table_filters.js:361 -msgid "Show stock items which have a purchase price set" +msgid "Show items which are in production" msgstr "" #: templates/js/translated/table_filters.js:365 +msgid "Include Variants" +msgstr "" + +#: templates/js/translated/table_filters.js:366 +msgid "Include stock items for variant parts" +msgstr "" + +#: templates/js/translated/table_filters.js:371 +msgid "Show stock items which are installed in another item" +msgstr "" + +#: templates/js/translated/table_filters.js:376 +msgid "Show items which have been assigned to a customer" +msgstr "" + +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 +msgid "Stock status" +msgstr "" + +#: templates/js/translated/table_filters.js:400 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:409 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:414 +msgid "Has purchase price" +msgstr "" + +#: templates/js/translated/table_filters.js:415 +msgid "Show stock items which have a purchase price set" +msgstr "" + +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" -msgstr "生产状态" +msgstr "" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 msgid "Has Units" msgstr "" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 msgid "Part has defined units" msgstr "" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" -msgstr "商品有内部编号" +msgstr "" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 msgid "Has Choices" msgstr "" #: templates/js/translated/tables.js:92 msgid "Display calendar view" -msgstr "显示日历" +msgstr "" #: templates/js/translated/tables.js:102 msgid "Display list view" -msgstr "列表视图" +msgstr "" #: templates/js/translated/tables.js:112 msgid "Display tree view" @@ -12390,61 +13033,61 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" -msgstr "" +msgstr "每頁行數" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" -msgstr "" +msgstr "顯示" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" #: templates/navbar.html:45 msgid "Buy" -msgstr "采购" +msgstr "採購" #: templates/navbar.html:57 msgid "Sell" -msgstr "销售" +msgstr "銷售" #: templates/navbar.html:121 msgid "Show Notifications" @@ -12454,11 +13097,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" -msgstr "管理员" +msgstr "" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12474,11 +13117,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12610,117 +13253,113 @@ msgstr "" #: templates/stats.html:75 msgid "Email Settings" -msgstr "电子邮件设置" +msgstr "" #: templates/stats.html:78 msgid "Email settings not configured" -msgstr "电子邮件设置未配置" - -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" msgstr "" #: templates/yesnolabel.html:4 msgid "Yes" -msgstr "确定" +msgstr "" #: templates/yesnolabel.html:6 msgid "No" -msgstr "取消" +msgstr "" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" -msgstr "用户" +msgstr "" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" -msgstr "选择分配给该组的用户" - -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" -msgstr "以下用户是多个群组的成员:" - -#: users/admin.py:222 -msgid "Personal info" -msgstr "个人资料" - -#: users/admin.py:223 -msgid "Permissions" -msgstr "权限" +msgstr "" #: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "" + +#: users/admin.py:253 +msgid "Personal info" +msgstr "" + +#: users/admin.py:254 +msgid "Permissions" +msgstr "" + +#: users/admin.py:257 msgid "Important dates" -msgstr "重要日期" +msgstr "" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" -msgstr "权限设置" +msgstr "" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" -msgstr "群组" +msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "View" -msgstr "视图" +msgstr "" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" -msgstr "查看项目权限" +msgstr "" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" -msgstr "添加项目权限" +msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" -msgstr "更改" +msgstr "" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" -msgstr "编辑项目权限" +msgstr "" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" -msgstr "删除项目权限" +msgstr "" diff --git a/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po b/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po index badd96430f..5a1ee70645 100644 --- a/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-05 11:04+0000\n" +"POT-Creation-Date: 2023-11-09 10:51+0000\n" "PO-Revision-Date: 2023-02-28 22:38\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" @@ -17,426 +17,457 @@ msgstr "" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" -#: InvenTree/api.py:65 +#: InvenTree/api.py:160 msgid "API endpoint not found" msgstr "未找到 API 端点" -#: InvenTree/api.py:299 +#: InvenTree/api.py:425 msgid "User does not have permission to view this model" msgstr "" -#: InvenTree/conversion.py:62 +#: InvenTree/conversion.py:92 #, fuzzy #| msgid "No value set" msgid "No value provided" msgstr "未设置值" -#: InvenTree/conversion.py:84 +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "" + +#: InvenTree/conversion.py:127 #, fuzzy -#| msgid "Chosen value is not a valid option" -msgid "Provided value is not a valid number" -msgstr "选择的值不是一个有效的选项" +#| msgid "Invalid quantity provided" +msgid "Invalid quantity supplied" +msgstr "提供的数量无效" -#: InvenTree/conversion.py:86 -msgid "Provided value has an invalid unit" -msgstr "" +#: InvenTree/conversion.py:141 +#, fuzzy, python-brace-format +#| msgid "Invalid quantity provided" +msgid "Invalid quantity supplied ({exc})" +msgstr "提供的数量无效" -#: InvenTree/conversion.py:88 -msgid "Provided value could not be converted to the specified unit" -msgstr "" - -#: InvenTree/exceptions.py:90 +#: InvenTree/exceptions.py:89 msgid "Error details can be found in the admin panel" msgstr "在管理面板中可以找到错误详细信息" -#: InvenTree/fields.py:131 +#: InvenTree/fields.py:127 msgid "Enter date" msgstr "输入日期" -#: InvenTree/fields.py:206 InvenTree/models.py:766 build/serializers.py:427 -#: build/serializers.py:506 build/templates/build/sidebar.html:23 -#: company/models.py:597 company/templates/company/sidebar.html:35 -#: order/models.py:1086 order/templates/order/po_sidebar.html:11 +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 -#: part/models.py:3004 part/templates/part/part_sidebar.html:63 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:121 stock/models.py:2159 stock/models.py:2267 -#: stock/serializers.py:342 stock/serializers.py:475 stock/serializers.py:556 -#: stock/serializers.py:839 stock/serializers.py:938 stock/serializers.py:1070 -#: stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1224 -#: templates/js/translated/company.js:1294 templates/js/translated/order.js:347 -#: templates/js/translated/part.js:1054 -#: templates/js/translated/purchase_order.js:2168 -#: templates/js/translated/return_order.js:760 -#: templates/js/translated/sales_order.js:1055 -#: templates/js/translated/sales_order.js:1959 -#: templates/js/translated/stock.js:1460 templates/js/translated/stock.js:2164 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 msgid "Notes" msgstr "备注" -#: InvenTree/format.py:152 +#: InvenTree/format.py:154 #, python-brace-format msgid "Value '{name}' does not appear in pattern format" msgstr "值 '{name}' 没有以模式格式显示" -#: InvenTree/format.py:162 +#: InvenTree/format.py:164 msgid "Provided value does not match required pattern: " msgstr "提供的值与所需模式不匹配: " -#: InvenTree/forms.py:145 +#: InvenTree/forms.py:147 msgid "Enter password" msgstr "输入密码" -#: InvenTree/forms.py:146 +#: InvenTree/forms.py:148 msgid "Enter new password" msgstr "输入新密码" -#: InvenTree/forms.py:155 +#: InvenTree/forms.py:157 msgid "Confirm password" msgstr "确认密码" -#: InvenTree/forms.py:156 +#: InvenTree/forms.py:158 msgid "Confirm new password" msgstr "确认新密码" -#: InvenTree/forms.py:160 +#: InvenTree/forms.py:162 msgid "Old password" msgstr "旧密码" -#: InvenTree/forms.py:179 +#: InvenTree/forms.py:199 msgid "Email (again)" msgstr "Email (再次)" -#: InvenTree/forms.py:183 +#: InvenTree/forms.py:203 msgid "Email address confirmation" msgstr "Email 地址确认" -#: InvenTree/forms.py:204 +#: InvenTree/forms.py:224 msgid "You must type the same email each time." msgstr "您必须输入相同的 Email 。" -#: InvenTree/forms.py:230 InvenTree/forms.py:236 +#: InvenTree/forms.py:255 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." msgstr "所提供的主要电子邮件地址无效。" -#: InvenTree/forms.py:242 +#: InvenTree/forms.py:267 msgid "The provided email domain is not approved." msgstr "提供的电子邮件域未被核准。" -#: InvenTree/helpers.py:462 order/models.py:439 order/models.py:608 +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 msgid "Invalid quantity provided" msgstr "提供的数量无效" -#: InvenTree/helpers.py:470 +#: InvenTree/helpers.py:460 msgid "Empty serial number string" msgstr "空序列号字符串" -#: InvenTree/helpers.py:500 +#: InvenTree/helpers.py:490 msgid "Duplicate serial" msgstr "重复的序列号" -#: InvenTree/helpers.py:533 InvenTree/helpers.py:568 -#, python-brace-format -msgid "Invalid group range: {g}" +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 +#, fuzzy, python-brace-format +#| msgid "Invalid group range: {g}" +msgid "Invalid group range: {group}" msgstr "无效的组范围: {g}" -#: InvenTree/helpers.py:562 -#, python-brace-format -msgid "Group range {g} exceeds allowed quantity ({q})" +#: InvenTree/helpers.py:552 +#, fuzzy, python-brace-format +#| msgid "Group range {g} exceeds allowed quantity ({q})" +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "组 {g} 超出了允许的数量 ({q})" -#: InvenTree/helpers.py:586 InvenTree/helpers.py:593 InvenTree/helpers.py:608 -#, python-brace-format -msgid "Invalid group sequence: {g}" +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 +#, fuzzy, python-brace-format +#| msgid "Invalid group sequence: {g}" +msgid "Invalid group sequence: {group}" msgstr "无效的组序列: {g}" -#: InvenTree/helpers.py:618 +#: InvenTree/helpers.py:608 msgid "No serial numbers found" msgstr "未找到序列号" -#: InvenTree/helpers.py:621 -#, python-brace-format -msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +#: InvenTree/helpers.py:611 +#, fuzzy +#| msgid "Number of unique serial numbers ({s}) must match quantity ({q})" +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "唯一序列号 ({s}) 必须匹配数量 ({q})" -#: InvenTree/helpers.py:751 +#: InvenTree/helpers.py:740 msgid "Remove HTML tags from this value" msgstr "从这个值中删除 HTML 标签" -#: InvenTree/helpers_model.py:133 +#: InvenTree/helpers_model.py:123 msgid "Connection error" msgstr "连接错误" -#: InvenTree/helpers_model.py:137 InvenTree/helpers_model.py:142 +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 msgid "Server responded with invalid status code" msgstr "服务器响应状态码无效" -#: InvenTree/helpers_model.py:139 +#: InvenTree/helpers_model.py:129 msgid "Exception occurred" msgstr "发生异常" -#: InvenTree/helpers_model.py:147 +#: InvenTree/helpers_model.py:137 msgid "Server responded with invalid Content-Length value" msgstr "服务器响应的内容长度值无效" -#: InvenTree/helpers_model.py:150 +#: InvenTree/helpers_model.py:140 msgid "Image size is too large" msgstr "图片尺寸过大" -#: InvenTree/helpers_model.py:162 +#: InvenTree/helpers_model.py:152 msgid "Image download exceeded maximum size" msgstr "图像下载超过最大尺寸" -#: InvenTree/helpers_model.py:167 +#: InvenTree/helpers_model.py:157 msgid "Remote server returned empty response" msgstr "远程服务器返回了空响应" -#: InvenTree/helpers_model.py:175 +#: InvenTree/helpers_model.py:165 msgid "Supplied URL is not a valid image file" msgstr "提供的 URL 不是一个有效的图片文件" -#: InvenTree/models.py:82 +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "电子邮件" + +#: InvenTree/models.py:81 msgid "Metadata must be a python dict object" msgstr "" -#: InvenTree/models.py:86 +#: InvenTree/models.py:85 msgid "Plugin Metadata" msgstr "" -#: InvenTree/models.py:87 +#: InvenTree/models.py:86 msgid "JSON metadata field, for use by external plugins" msgstr "" -#: InvenTree/models.py:320 +#: InvenTree/models.py:312 msgid "Improperly formatted pattern" msgstr "格式不正确" -#: InvenTree/models.py:327 +#: InvenTree/models.py:319 msgid "Unknown format key specified" msgstr "指定了未知格式密钥" -#: InvenTree/models.py:333 +#: InvenTree/models.py:325 msgid "Missing required format key" msgstr "缺少必需的格式密钥" -#: InvenTree/models.py:345 +#: InvenTree/models.py:336 msgid "Reference field cannot be empty" msgstr "引用字段不能为空" -#: InvenTree/models.py:352 +#: InvenTree/models.py:343 msgid "Reference must match required pattern" msgstr "引用必须匹配所需的图案" -#: InvenTree/models.py:383 +#: InvenTree/models.py:373 msgid "Reference number is too large" msgstr "参考编号过大" -#: InvenTree/models.py:465 +#: InvenTree/models.py:455 msgid "Missing file" msgstr "缺少文件" -#: InvenTree/models.py:466 +#: InvenTree/models.py:456 msgid "Missing external link" msgstr "缺少外部链接" -#: InvenTree/models.py:486 stock/models.py:2261 +#: InvenTree/models.py:475 stock/models.py:2319 #: templates/js/translated/attachment.js:119 -#: templates/js/translated/attachment.js:306 +#: templates/js/translated/attachment.js:326 msgid "Attachment" msgstr "附件" -#: InvenTree/models.py:487 +#: InvenTree/models.py:476 msgid "Select file to attach" msgstr "选择附件" -#: InvenTree/models.py:493 common/models.py:2695 company/models.py:132 -#: company/models.py:306 company/models.py:584 order/models.py:233 -#: order/models.py:1090 order/models.py:1450 part/admin.py:39 -#: part/models.py:900 part/templates/part/part_scheduling.html:11 +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 #: report/templates/report/inventree_build_order_base.html:164 -#: stock/admin.py:120 templates/js/translated/company.js:977 -#: templates/js/translated/company.js:1283 templates/js/translated/order.js:351 -#: templates/js/translated/part.js:2316 -#: templates/js/translated/purchase_order.js:2008 -#: templates/js/translated/purchase_order.js:2172 -#: templates/js/translated/return_order.js:764 -#: templates/js/translated/sales_order.js:1044 -#: templates/js/translated/sales_order.js:1964 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 msgid "Link" msgstr "链接" -#: InvenTree/models.py:494 build/models.py:291 part/models.py:901 -#: stock/models.py:735 +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 msgid "Link to external URL" msgstr "链接到外部 URL" -#: InvenTree/models.py:497 templates/js/translated/attachment.js:120 -#: templates/js/translated/attachment.js:321 +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 msgid "Comment" msgstr "注释" -#: InvenTree/models.py:497 +#: InvenTree/models.py:486 msgid "File comment" msgstr "文件注释" -#: InvenTree/models.py:503 InvenTree/models.py:504 common/models.py:2154 -#: common/models.py:2155 common/models.py:2368 common/models.py:2369 -#: common/models.py:2625 common/models.py:2626 part/models.py:3012 -#: part/models.py:3100 part/models.py:3179 part/models.py:3199 -#: plugin/models.py:217 plugin/models.py:218 +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:2773 +#: templates/js/translated/stock.js:3007 users/models.py:85 msgid "User" msgstr "用户" -#: InvenTree/models.py:507 +#: InvenTree/models.py:496 msgid "upload date" msgstr "上传日期" -#: InvenTree/models.py:529 +#: InvenTree/models.py:517 msgid "Filename must not be empty" msgstr "文件名不能为空!" -#: InvenTree/models.py:538 +#: InvenTree/models.py:526 msgid "Invalid attachment directory" msgstr "非法的附件目录" -#: InvenTree/models.py:548 +#: InvenTree/models.py:536 #, python-brace-format msgid "Filename contains illegal character '{c}'" msgstr "文件名包含非法字符 '{c}'" -#: InvenTree/models.py:551 +#: InvenTree/models.py:539 msgid "Filename missing extension" msgstr "缺少文件名扩展" -#: InvenTree/models.py:558 +#: InvenTree/models.py:546 msgid "Attachment with this filename already exists" msgstr "使用此文件名的附件已存在" -#: InvenTree/models.py:565 +#: InvenTree/models.py:553 msgid "Error renaming file" msgstr "重命名文件出错" -#: InvenTree/models.py:604 +#: InvenTree/models.py:728 msgid "Duplicate names cannot exist under the same parent" msgstr "" -#: InvenTree/models.py:623 +#: InvenTree/models.py:752 msgid "Invalid choice" msgstr "选择无效" -#: InvenTree/models.py:648 InvenTree/models.py:649 common/models.py:2354 -#: company/models.py:390 label/models.py:103 part/models.py:846 -#: part/models.py:3399 plugin/models.py:41 report/models.py:160 +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 -#: templates/InvenTree/settings/plugin.html:80 +#: templates/InvenTree/settings/plugin.html:74 #: templates/InvenTree/settings/plugin_settings.html:22 -#: templates/js/translated/company.js:658 -#: templates/js/translated/company.js:706 -#: templates/js/translated/company.js:871 -#: templates/js/translated/company.js:1071 templates/js/translated/part.js:1160 -#: templates/js/translated/part.js:1447 templates/js/translated/part.js:1583 -#: templates/js/translated/part.js:2699 templates/js/translated/stock.js:2464 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 msgid "Name" msgstr "名称" -#: InvenTree/models.py:655 build/models.py:164 -#: build/templates/build/detail.html:24 common/models.py:111 -#: company/models.py:312 company/models.py:590 -#: company/templates/company/company_base.html:72 +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 #: company/templates/company/manufacturer_part.html:75 -#: company/templates/company/supplier_part.html:108 label/models.py:110 -#: order/models.py:229 order/models.py:1114 part/admin.py:194 part/admin.py:276 -#: part/models.py:868 part/models.py:3415 part/templates/part/category.html:81 -#: part/templates/part/part_base.html:172 -#: part/templates/part/part_scheduling.html:12 report/models.py:173 -#: report/models.py:587 report/models.py:631 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 #: report/templates/report/inventree_build_order_base.html:117 -#: stock/admin.py:41 stock/templates/stock/location.html:123 +#: stock/admin.py:42 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:75 -#: templates/js/translated/bom.js:632 templates/js/translated/bom.js:933 -#: templates/js/translated/build.js:2857 templates/js/translated/company.js:510 -#: templates/js/translated/company.js:988 -#: templates/js/translated/company.js:1251 templates/js/translated/order.js:298 -#: templates/js/translated/part.js:1212 templates/js/translated/part.js:1456 -#: templates/js/translated/part.js:1594 templates/js/translated/part.js:1933 -#: templates/js/translated/part.js:2247 templates/js/translated/part.js:2735 -#: templates/js/translated/part.js:2826 -#: templates/js/translated/purchase_order.js:1666 -#: templates/js/translated/purchase_order.js:1812 -#: templates/js/translated/purchase_order.js:1990 -#: templates/js/translated/return_order.js:302 -#: templates/js/translated/sales_order.js:790 -#: templates/js/translated/stock.js:1439 templates/js/translated/stock.js:1817 -#: templates/js/translated/stock.js:2496 templates/js/translated/stock.js:2568 +#: templates/InvenTree/settings/settings_staff_js.html:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 msgid "Description" msgstr "描述信息" -#: InvenTree/models.py:656 +#: InvenTree/models.py:794 stock/models.py:79 msgid "Description (optional)" msgstr "描述 (可选)" -#: InvenTree/models.py:664 +#: InvenTree/models.py:802 msgid "parent" msgstr "上级项" -#: InvenTree/models.py:671 InvenTree/models.py:672 -#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2505 +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 msgid "Path" msgstr "路径" -#: InvenTree/models.py:767 +#: InvenTree/models.py:921 #, fuzzy #| msgid "Add transaction note (optional)" msgid "Markdown notes (optional)" msgstr "添加交易备注 (可选)" -#: InvenTree/models.py:794 +#: InvenTree/models.py:948 msgid "Barcode Data" msgstr "条码数据" -#: InvenTree/models.py:795 +#: InvenTree/models.py:949 msgid "Third party barcode data" msgstr "第三方条形码数据" -#: InvenTree/models.py:800 +#: InvenTree/models.py:954 msgid "Barcode Hash" msgstr "条码哈希" -#: InvenTree/models.py:801 +#: InvenTree/models.py:955 msgid "Unique hash of barcode data" msgstr "条码数据的唯一哈希" -#: InvenTree/models.py:846 +#: InvenTree/models.py:995 msgid "Existing barcode found" msgstr "发现现有条码" -#: InvenTree/models.py:900 +#: InvenTree/models.py:1036 msgid "Server Error" msgstr "服务器错误" -#: InvenTree/models.py:901 +#: InvenTree/models.py:1037 msgid "An error has been logged by the server." msgstr "服务器记录了一个错误。" -#: InvenTree/serializers.py:60 part/models.py:3896 +#: InvenTree/serializers.py:59 part/models.py:3904 msgid "Must be a valid number" msgstr "必须是有效数字" -#: InvenTree/serializers.py:90 company/models.py:154 -#: company/templates/company/company_base.html:107 part/models.py:2851 +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" msgstr "货币" -#: InvenTree/serializers.py:93 +#: InvenTree/serializers.py:91 msgid "Select currency from available options" msgstr "" @@ -490,467 +521,532 @@ msgstr "缺少必需的列:'{name}'" msgid "Duplicate column: '{col}'" msgstr "复制列: '{col}'" -#: InvenTree/serializers.py:713 +#: InvenTree/serializers.py:712 #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" msgstr "URL" -#: InvenTree/serializers.py:714 +#: InvenTree/serializers.py:713 msgid "URL of remote image file" msgstr "远程图像文件的 URL" -#: InvenTree/serializers.py:728 +#: InvenTree/serializers.py:726 msgid "Downloading images from remote URL is not enabled" msgstr "未启用从远程 URL下载图像" -#: InvenTree/settings.py:713 +#: InvenTree/settings.py:819 +#, fuzzy +#| msgid "Hungarian" +msgid "Bulgarian" +msgstr "匈牙利语" + +#: InvenTree/settings.py:820 msgid "Czech" msgstr "捷克语" -#: InvenTree/settings.py:714 +#: InvenTree/settings.py:821 msgid "Danish" msgstr "丹麦语" -#: InvenTree/settings.py:715 +#: InvenTree/settings.py:822 msgid "German" msgstr "德语" -#: InvenTree/settings.py:716 +#: InvenTree/settings.py:823 msgid "Greek" msgstr "希腊语" -#: InvenTree/settings.py:717 +#: InvenTree/settings.py:824 msgid "English" msgstr "英语" -#: InvenTree/settings.py:718 +#: InvenTree/settings.py:825 msgid "Spanish" msgstr "西班牙语" -#: InvenTree/settings.py:719 +#: InvenTree/settings.py:826 msgid "Spanish (Mexican)" msgstr "西班牙语(墨西哥)" -#: InvenTree/settings.py:720 +#: InvenTree/settings.py:827 msgid "Farsi / Persian" msgstr "波斯语" -#: InvenTree/settings.py:721 +#: InvenTree/settings.py:828 #, fuzzy #| msgid "Danish" msgid "Finnish" msgstr "丹麦语" -#: InvenTree/settings.py:722 +#: InvenTree/settings.py:829 msgid "French" msgstr "法语" -#: InvenTree/settings.py:723 +#: InvenTree/settings.py:830 msgid "Hebrew" msgstr "希伯来语" -#: InvenTree/settings.py:724 +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 msgid "Hungarian" msgstr "匈牙利语" -#: InvenTree/settings.py:725 +#: InvenTree/settings.py:833 msgid "Italian" msgstr "意大利语" -#: InvenTree/settings.py:726 +#: InvenTree/settings.py:834 msgid "Japanese" msgstr "日语" -#: InvenTree/settings.py:727 +#: InvenTree/settings.py:835 msgid "Korean" msgstr "韩语" -#: InvenTree/settings.py:728 +#: InvenTree/settings.py:836 msgid "Dutch" msgstr "荷兰语" -#: InvenTree/settings.py:729 +#: InvenTree/settings.py:837 msgid "Norwegian" msgstr "挪威语" -#: InvenTree/settings.py:730 +#: InvenTree/settings.py:838 msgid "Polish" msgstr "波兰语" -#: InvenTree/settings.py:731 +#: InvenTree/settings.py:839 msgid "Portuguese" msgstr "葡萄牙语" -#: InvenTree/settings.py:732 +#: InvenTree/settings.py:840 msgid "Portuguese (Brazilian)" msgstr "葡萄牙语 (巴西)" -#: InvenTree/settings.py:733 +#: InvenTree/settings.py:841 msgid "Russian" msgstr "俄语" -#: InvenTree/settings.py:734 +#: InvenTree/settings.py:842 msgid "Slovenian" msgstr "斯洛文尼亚" -#: InvenTree/settings.py:735 +#: InvenTree/settings.py:843 msgid "Swedish" msgstr "瑞典语" -#: InvenTree/settings.py:736 +#: InvenTree/settings.py:844 msgid "Thai" msgstr "泰语" -#: InvenTree/settings.py:737 +#: InvenTree/settings.py:845 msgid "Turkish" msgstr "土耳其语" -#: InvenTree/settings.py:738 +#: InvenTree/settings.py:846 msgid "Vietnamese" msgstr "越南语" -#: InvenTree/settings.py:739 -msgid "Chinese" -msgstr "中文(简体)" +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" -#: InvenTree/status.py:61 part/serializers.py:878 +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 msgid "Background worker check failed" msgstr "后台工作人员检查失败" -#: InvenTree/status.py:65 +#: InvenTree/status.py:72 msgid "Email backend not configured" msgstr "未配置电子邮件后端" -#: InvenTree/status.py:68 +#: InvenTree/status.py:75 msgid "InvenTree system health checks failed" msgstr "InventTree系统健康检查失败" -#: InvenTree/status_codes.py:139 InvenTree/status_codes.py:181 -#: InvenTree/status_codes.py:360 InvenTree/status_codes.py:397 -#: InvenTree/status_codes.py:432 templates/js/translated/table_filters.js:511 +#: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 +#: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 +#: InvenTree/status_codes.py:188 generic/states/tests.py:16 +#: templates/js/translated/table_filters.js:594 msgid "Pending" msgstr "待定" -#: InvenTree/status_codes.py:140 +#: InvenTree/status_codes.py:13 generic/states/tests.py:17 msgid "Placed" msgstr "已添加" -#: InvenTree/status_codes.py:141 InvenTree/status_codes.py:363 -#: InvenTree/status_codes.py:399 order/templates/order/order_base.html:162 -#: order/templates/order/sales_order_base.html:162 +#: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 +#: InvenTree/status_codes.py:172 generic/states/tests.py:18 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 msgid "Complete" msgstr "完成" -#: InvenTree/status_codes.py:142 InvenTree/status_codes.py:184 -#: InvenTree/status_codes.py:362 InvenTree/status_codes.py:400 +#: InvenTree/status_codes.py:15 InvenTree/status_codes.py:43 +#: InvenTree/status_codes.py:150 InvenTree/status_codes.py:173 msgid "Cancelled" msgstr "已取消" -#: InvenTree/status_codes.py:143 InvenTree/status_codes.py:185 -#: InvenTree/status_codes.py:227 +#: InvenTree/status_codes.py:16 InvenTree/status_codes.py:44 +#: InvenTree/status_codes.py:71 msgid "Lost" msgstr "丢失" -#: InvenTree/status_codes.py:144 InvenTree/status_codes.py:186 +#: InvenTree/status_codes.py:17 InvenTree/status_codes.py:45 +#: InvenTree/status_codes.py:73 msgid "Returned" msgstr "已退回" -#: InvenTree/status_codes.py:182 InvenTree/status_codes.py:398 +#: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 msgid "In Progress" msgstr "" -#: InvenTree/status_codes.py:183 order/models.py:1329 -#: templates/js/translated/sales_order.js:1509 -#: templates/js/translated/sales_order.js:1630 -#: templates/js/translated/sales_order.js:1934 +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 msgid "Shipped" msgstr "已发货" -#: InvenTree/status_codes.py:223 +#: InvenTree/status_codes.py:66 msgid "OK" msgstr "OK" -#: InvenTree/status_codes.py:224 +#: InvenTree/status_codes.py:67 msgid "Attention needed" msgstr "需要关注" -#: InvenTree/status_codes.py:225 +#: InvenTree/status_codes.py:68 msgid "Damaged" msgstr "破损" -#: InvenTree/status_codes.py:226 +#: InvenTree/status_codes.py:69 msgid "Destroyed" msgstr "已销毁" -#: InvenTree/status_codes.py:228 +#: InvenTree/status_codes.py:70 msgid "Rejected" msgstr "已拒绝" -#: InvenTree/status_codes.py:229 +#: InvenTree/status_codes.py:72 msgid "Quarantined" msgstr "隔离" -#: InvenTree/status_codes.py:308 +#: InvenTree/status_codes.py:91 msgid "Legacy stock tracking entry" msgstr "旧库存跟踪条目" -#: InvenTree/status_codes.py:310 templates/js/translated/stock.js:511 +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 msgid "Stock item created" msgstr "库存项已创建" -#: InvenTree/status_codes.py:312 +#: InvenTree/status_codes.py:96 msgid "Edited stock item" msgstr "已编辑库存项" -#: InvenTree/status_codes.py:313 +#: InvenTree/status_codes.py:97 msgid "Assigned serial number" msgstr "已分配序列号" -#: InvenTree/status_codes.py:315 +#: InvenTree/status_codes.py:100 msgid "Stock counted" msgstr "库存计数" -#: InvenTree/status_codes.py:316 +#: InvenTree/status_codes.py:101 msgid "Stock manually added" msgstr "已手动添加库存" -#: InvenTree/status_codes.py:317 +#: InvenTree/status_codes.py:102 msgid "Stock manually removed" msgstr "库存手动删除" -#: InvenTree/status_codes.py:319 +#: InvenTree/status_codes.py:105 msgid "Location changed" msgstr "仓储地点已更改" -#: InvenTree/status_codes.py:320 +#: InvenTree/status_codes.py:106 #, fuzzy #| msgid "Stock counted" msgid "Stock updated" msgstr "库存计数" -#: InvenTree/status_codes.py:322 +#: InvenTree/status_codes.py:109 msgid "Installed into assembly" msgstr "安装到组装中" -#: InvenTree/status_codes.py:323 +#: InvenTree/status_codes.py:110 msgid "Removed from assembly" msgstr "已从组装中删除" -#: InvenTree/status_codes.py:325 +#: InvenTree/status_codes.py:112 msgid "Installed component item" msgstr "已安装组件项" -#: InvenTree/status_codes.py:326 +#: InvenTree/status_codes.py:113 msgid "Removed component item" msgstr "已删除组件项" -#: InvenTree/status_codes.py:328 +#: InvenTree/status_codes.py:116 msgid "Split from parent item" msgstr "从父项拆分" -#: InvenTree/status_codes.py:329 +#: InvenTree/status_codes.py:117 msgid "Split child item" msgstr "拆分子项" -#: InvenTree/status_codes.py:331 templates/js/translated/stock.js:2243 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 msgid "Merged stock items" msgstr "合并的库存项目" -#: InvenTree/status_codes.py:333 +#: InvenTree/status_codes.py:123 msgid "Converted to variant" msgstr "转换为变量" -#: InvenTree/status_codes.py:335 templates/js/translated/table_filters.js:321 -msgid "Sent to customer" -msgstr "发送给客户" - -#: InvenTree/status_codes.py:336 -msgid "Returned from customer" -msgstr "从客户退货" - -#: InvenTree/status_codes.py:338 +#: InvenTree/status_codes.py:126 msgid "Build order output created" msgstr "已创建生产订单输出" -#: InvenTree/status_codes.py:339 +#: InvenTree/status_codes.py:127 msgid "Build order output completed" msgstr "生产订单输出已完成" -#: InvenTree/status_codes.py:340 +#: InvenTree/status_codes.py:128 #, fuzzy #| msgid "Build order output created" msgid "Build order output rejected" msgstr "已创建生产订单输出" -#: InvenTree/status_codes.py:341 templates/js/translated/stock.js:1676 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 msgid "Consumed by build order" msgstr "被生产订单消耗" -#: InvenTree/status_codes.py:343 +#: InvenTree/status_codes.py:132 #, fuzzy #| msgid "Received against purchase order" msgid "Shipped against Sales Order" msgstr "收到定购单" -#: InvenTree/status_codes.py:345 +#: InvenTree/status_codes.py:135 #, fuzzy #| msgid "Received against purchase order" msgid "Received against Purchase Order" msgstr "收到定购单" -#: InvenTree/status_codes.py:347 +#: InvenTree/status_codes.py:138 #, fuzzy #| msgid "Received against purchase order" msgid "Returned against Return Order" msgstr "收到定购单" -#: InvenTree/status_codes.py:361 +#: 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:433 +#: InvenTree/status_codes.py:191 #, fuzzy #| msgid "Returned" msgid "Return" msgstr "已退回" -#: InvenTree/status_codes.py:434 +#: InvenTree/status_codes.py:194 msgid "Repair" msgstr "" -#: InvenTree/status_codes.py:435 -msgid "Refund" -msgstr "" - -#: InvenTree/status_codes.py:436 +#: InvenTree/status_codes.py:197 #, fuzzy #| msgid "Placed" msgid "Replace" msgstr "已添加" -#: InvenTree/status_codes.py:437 +#: InvenTree/status_codes.py:200 +msgid "Refund" +msgstr "" + +#: InvenTree/status_codes.py:203 #, fuzzy #| msgid "Rejected" msgid "Reject" msgstr "已拒绝" -#: InvenTree/validators.py:32 InvenTree/validators.py:34 +#: InvenTree/validators.py:31 InvenTree/validators.py:33 #, fuzzy #| msgid "Invalid value" msgid "Invalid physical unit" msgstr "无效值" -#: InvenTree/validators.py:40 +#: InvenTree/validators.py:39 msgid "Not a valid currency code" msgstr "不是有效的货币代码" -#: InvenTree/validators.py:109 InvenTree/validators.py:125 +#: InvenTree/validators.py:106 InvenTree/validators.py:122 msgid "Overage value must not be negative" msgstr "备损值不能为负数" -#: InvenTree/validators.py:127 +#: InvenTree/validators.py:124 msgid "Overage must not exceed 100%" msgstr "备损不能超过 100%" -#: InvenTree/validators.py:134 +#: InvenTree/validators.py:131 msgid "Invalid value for overage" msgstr "无效的备损值" -#: InvenTree/views.py:409 templates/InvenTree/settings/user.html:23 +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 msgid "Edit User Information" msgstr "编辑用户信息" -#: InvenTree/views.py:421 templates/InvenTree/settings/user.html:20 +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 msgid "Set Password" msgstr "设置密码" -#: InvenTree/views.py:443 +#: InvenTree/views.py:437 msgid "Password fields must match" msgstr "密码字段必须相匹配。" -#: InvenTree/views.py:452 +#: InvenTree/views.py:445 msgid "Wrong password provided" msgstr "密码错误" -#: InvenTree/views.py:651 templates/navbar.html:157 +#: InvenTree/views.py:642 templates/navbar.html:160 msgid "System Information" msgstr "系统信息" -#: InvenTree/views.py:658 templates/navbar.html:168 +#: InvenTree/views.py:649 templates/navbar.html:171 msgid "About InvenTree" msgstr "关于 InventTree" -#: build/api.py:221 +#: build/api.py:237 msgid "Build must be cancelled before it can be deleted" msgstr "在删除前必须取消生产" -#: build/models.py:69 build/templates/build/build_base.html:9 +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "可选项" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "空闲" + +#: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:945 templates/js/translated/stock.js:2629 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 msgid "Build Order" msgstr "生产订单" -#: build/models.py:70 build/templates/build/build_base.html:13 +#: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 -#: order/templates/order/sales_order_detail.html:119 +#: order/templates/order/sales_order_detail.html:111 #: order/templates/order/so_sidebar.html:13 -#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:244 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 #: templates/InvenTree/search.html:141 -#: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/search.js:228 users/models.py:42 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 msgid "Build Orders" msgstr "生产订单" -#: build/models.py:111 +#: build/models.py:115 +#, fuzzy +#| msgid "Order cannot be cancelled" +msgid "Build order part cannot be changed" +msgstr "无法取消订单" + +#: build/models.py:122 msgid "Invalid choice for parent build" msgstr "上级生产选项无效" -#: build/models.py:155 +#: build/models.py:166 msgid "Build Order Reference" msgstr "相关生产订单" -#: build/models.py:156 order/models.py:356 order/models.py:762 -#: order/models.py:1084 order/models.py:1721 part/admin.py:278 -#: part/models.py:3797 part/templates/part/upload_bom.html:54 +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 #: report/templates/report/inventree_so_report_base.html:28 -#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:943 -#: templates/js/translated/build.js:2098 templates/js/translated/order.js:291 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 #: templates/js/translated/pricing.js:386 -#: templates/js/translated/purchase_order.js:2033 -#: templates/js/translated/return_order.js:713 -#: templates/js/translated/sales_order.js:1798 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 msgid "Reference" msgstr "引用" -#: build/models.py:167 +#: build/models.py:178 #, fuzzy #| msgid "Brief description of the build" msgid "Brief description of the build (optional)" msgstr "生产的简短描述." -#: build/models.py:175 build/templates/build/build_base.html:183 +#: build/models.py:186 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 msgid "Parent Build" msgstr "上级生产" -#: build/models.py:176 +#: build/models.py:187 msgid "BuildOrder to which this build is allocated" msgstr "此次生产匹配的订单" -#: build/models.py:181 build/templates/build/build_base.html:98 -#: build/templates/build/detail.html:29 company/models.py:775 -#: order/models.py:1192 order/models.py:1308 order/models.py:1309 -#: part/models.py:390 part/models.py:2864 part/models.py:2978 -#: part/models.py:3118 part/models.py:3137 part/models.py:3156 -#: part/models.py:3177 part/models.py:3269 part/models.py:3554 -#: part/models.py:3662 part/models.py:3762 part/models.py:4076 -#: part/serializers.py:842 part/serializers.py:1245 +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -959,556 +1055,585 @@ msgstr "此次生产匹配的订单" #: 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:156 stock/serializers.py:509 +#: stock/serializers.py:206 stock/serializers.py:614 #: 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:529 templates/js/translated/bom.js:631 -#: templates/js/translated/bom.js:768 templates/js/translated/bom.js:887 -#: templates/js/translated/build.js:1403 templates/js/translated/build.js:1965 -#: templates/js/translated/build.js:2464 templates/js/translated/build.js:2868 -#: templates/js/translated/company.js:337 -#: templates/js/translated/company.js:822 -#: templates/js/translated/company.js:929 -#: templates/js/translated/company.js:1169 templates/js/translated/part.js:1918 -#: templates/js/translated/part.js:1990 templates/js/translated/part.js:2216 -#: templates/js/translated/pricing.js:369 -#: templates/js/translated/purchase_order.js:746 -#: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/purchase_order.js:1811 -#: templates/js/translated/purchase_order.js:1975 -#: templates/js/translated/return_order.js:527 -#: templates/js/translated/return_order.js:694 -#: templates/js/translated/sales_order.js:285 -#: templates/js/translated/sales_order.js:1185 -#: templates/js/translated/sales_order.js:1584 -#: templates/js/translated/sales_order.js:1782 -#: templates/js/translated/stock.js:643 templates/js/translated/stock.js:809 -#: templates/js/translated/stock.js:1021 templates/js/translated/stock.js:1773 -#: templates/js/translated/stock.js:2594 templates/js/translated/stock.js:2831 -#: templates/js/translated/stock.js:2968 +#: templates/js/translated/barcode.js:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 msgid "Part" msgstr "商品" -#: build/models.py:189 +#: build/models.py:200 msgid "Select part to build" msgstr "选择要生产的商品" -#: build/models.py:194 +#: build/models.py:205 msgid "Sales Order Reference" msgstr "相关销售订单" -#: build/models.py:198 +#: build/models.py:209 msgid "SalesOrder to which this build is allocated" msgstr "此次生产匹配的销售订单" -#: build/models.py:203 build/serializers.py:942 -#: templates/js/translated/build.js:2452 -#: templates/js/translated/sales_order.js:1173 +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 msgid "Source Location" msgstr "来源地点" -#: build/models.py:207 +#: build/models.py:218 msgid "Select location to take stock from for this build (leave blank to take from any stock location)" msgstr "此次生产从哪个仓储位置获取库存(留空即可从任何仓储位置取出)" -#: build/models.py:212 +#: build/models.py:223 msgid "Destination Location" msgstr "目标地点" -#: build/models.py:216 +#: build/models.py:227 msgid "Select location where the completed items will be stored" msgstr "选择已完成项目仓储地点" -#: build/models.py:220 +#: build/models.py:231 msgid "Build Quantity" msgstr "生产数量" -#: build/models.py:223 +#: build/models.py:234 msgid "Number of stock items to build" msgstr "要生产的项目数量" -#: build/models.py:227 +#: build/models.py:238 msgid "Completed items" msgstr "已完成项目" -#: build/models.py:229 +#: build/models.py:240 msgid "Number of stock items which have been completed" msgstr "已完成的库存项目数量" -#: build/models.py:233 +#: build/models.py:244 msgid "Build Status" msgstr "生产状态" -#: build/models.py:237 +#: build/models.py:248 msgid "Build status code" msgstr "生产状态代码" -#: build/models.py:246 build/serializers.py:269 order/serializers.py:505 -#: stock/models.py:739 templates/js/translated/purchase_order.js:1099 +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 msgid "Batch Code" msgstr "批量代码" -#: build/models.py:250 build/serializers.py:270 +#: build/models.py:261 build/serializers.py:276 msgid "Batch code for this build output" msgstr "此生产产出的批量代码" -#: build/models.py:253 order/models.py:241 part/models.py:1037 -#: part/templates/part/part_base.html:312 -#: templates/js/translated/return_order.js:327 -#: templates/js/translated/sales_order.js:815 +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 msgid "Creation Date" msgstr "创建日期" -#: build/models.py:257 +#: build/models.py:268 msgid "Target completion date" msgstr "预计完成日期" -#: build/models.py:258 +#: build/models.py:269 msgid "Target date for build completion. Build will be overdue after this date." msgstr "生产完成的目标日期。生产将在此日期之后逾期。" -#: build/models.py:261 order/models.py:406 order/models.py:1764 -#: templates/js/translated/build.js:2953 +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 msgid "Completion Date" msgstr "完成日期:" -#: build/models.py:267 +#: build/models.py:278 msgid "completed by" msgstr "完成人" -#: build/models.py:275 templates/js/translated/build.js:2913 +#: build/models.py:286 templates/js/translated/build.js:2192 msgid "Issued by" msgstr "发布者" -#: build/models.py:276 +#: build/models.py:287 msgid "User who issued this build order" msgstr "发布此生产订单的用户" -#: build/models.py:284 build/templates/build/build_base.html:204 -#: build/templates/build/detail.html:122 order/models.py:255 -#: order/templates/order/order_base.html:214 -#: order/templates/order/return_order_base.html:182 -#: order/templates/order/sales_order_base.html:222 part/models.py:1041 -#: part/templates/part/part_base.html:392 +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 #: report/templates/report/inventree_build_order_base.html:158 -#: templates/js/translated/build.js:2925 -#: templates/js/translated/purchase_order.js:1723 -#: templates/js/translated/return_order.js:347 -#: templates/js/translated/table_filters.js:461 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 msgid "Responsible" msgstr "责任人" -#: build/models.py:285 +#: build/models.py:296 msgid "User or group responsible for this build order" msgstr "构建此订单的用户或组" -#: build/models.py:290 build/templates/build/detail.html:108 +#: build/models.py:301 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 -#: company/templates/company/supplier_part.html:195 -#: order/templates/order/order_base.html:171 -#: order/templates/order/return_order_base.html:146 -#: order/templates/order/sales_order_base.html:181 -#: part/templates/part/part_base.html:385 stock/models.py:733 -#: stock/templates/stock/item_base.html:201 +#: 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 msgid "External Link" msgstr "外部链接" -#: build/models.py:295 +#: build/models.py:306 msgid "Build Priority" msgstr "创建优先级" -#: build/models.py:298 +#: build/models.py:309 msgid "Priority of this build order" msgstr "此构建订单的优先级" -#: build/models.py:536 +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +#, fuzzy +#| msgid "Part QR Code" +msgid "Project Code" +msgstr "商品二维码" + +#: build/models.py:317 +#, fuzzy +#| msgid "Priority of this build order" +msgid "Project code for this build order" +msgstr "此构建订单的优先级" + +#: build/models.py:552 #, python-brace-format msgid "Build order {build} has been completed" msgstr "生产订单 {build} 已完成" -#: build/models.py:542 +#: build/models.py:558 msgid "A build order has been completed" msgstr "生产订单已完成" -#: build/models.py:744 build/models.py:811 +#: build/models.py:768 build/models.py:843 msgid "No build output specified" msgstr "未指定生产产出" -#: build/models.py:747 +#: build/models.py:771 msgid "Build output is already completed" msgstr "生产产出已完成" -#: build/models.py:750 +#: build/models.py:774 msgid "Build output does not match Build Order" msgstr "生产产出与订单不匹配" -#: build/models.py:815 build/serializers.py:212 build/serializers.py:251 -#: build/serializers.py:811 order/models.py:437 order/serializers.py:378 -#: order/serializers.py:500 part/serializers.py:1087 part/serializers.py:1408 -#: stock/models.py:593 stock/models.py:1386 stock/serializers.py:315 +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 msgid "Quantity must be greater than zero" msgstr "数量必须大于0" -#: build/models.py:820 build/serializers.py:217 +#: build/models.py:852 build/serializers.py:223 #, fuzzy #| msgid "Quantity must be greater than zero" msgid "Quantity cannot be greater than the output quantity" msgstr "数量必须大于0" -#: build/models.py:1272 -msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "生产项必须指定生产产出,因为主部件已经被标记为可追踪的" +#: build/models.py:1266 +#, fuzzy +#| msgid "Build Notes" +msgid "Build object" +msgstr "生产备注" -#: build/models.py:1281 -#, python-brace-format -msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})" - -#: build/models.py:1291 order/models.py:1598 -msgid "Stock item is over-allocated" -msgstr "库存物品分配过度!" - -#: build/models.py:1297 order/models.py:1601 -msgid "Allocation quantity must be greater than zero" -msgstr "分配数量必须大于0" - -#: build/models.py:1303 -msgid "Quantity must be 1 for serialized stock" -msgstr "序列化库存的数量必须是 1" - -#: build/models.py:1360 -msgid "Selected stock item not found in BOM" -msgstr "在BOM中找不到选定的库存项" - -#: build/models.py:1438 stock/templates/stock/item_base.html:170 -#: templates/InvenTree/search.html:139 templates/js/translated/build.js:2841 -#: templates/navbar.html:38 -msgid "Build" -msgstr "生产" - -#: build/models.py:1439 -msgid "Build to allocate parts" -msgstr "生产以分配部件" - -#: build/models.py:1455 build/serializers.py:791 order/serializers.py:1058 -#: order/serializers.py:1079 stock/serializers.py:413 stock/serializers.py:770 -#: stock/serializers.py:896 stock/templates/stock/item_base.html:10 -#: stock/templates/stock/item_base.html:23 -#: stock/templates/stock/item_base.html:195 -#: templates/js/translated/build.js:955 templates/js/translated/build.js:960 -#: templates/js/translated/build.js:2466 templates/js/translated/build.js:3038 -#: templates/js/translated/sales_order.js:286 -#: templates/js/translated/sales_order.js:1186 -#: templates/js/translated/sales_order.js:1485 -#: templates/js/translated/sales_order.js:1490 -#: templates/js/translated/sales_order.js:1591 -#: templates/js/translated/sales_order.js:1678 -#: templates/js/translated/stock.js:644 templates/js/translated/stock.js:810 -#: templates/js/translated/stock.js:2714 -msgid "Stock Item" -msgstr "库存项" - -#: build/models.py:1456 -msgid "Source stock item" -msgstr "源库存项" - -#: build/models.py:1468 build/serializers.py:198 build/serializers.py:236 -#: build/templates/build/build_base.html:103 -#: build/templates/build/detail.html:34 common/models.py:2176 -#: order/models.py:1070 order/models.py:1642 order/serializers.py:1232 -#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:277 -#: part/forms.py:47 part/models.py:2991 part/models.py:3778 +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 #: 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:103 stock/serializers.py:306 -#: stock/templates/stock/item_base.html:288 -#: stock/templates/stock/item_base.html:296 -#: stock/templates/stock/item_base.html:343 +#: stock/admin.py:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:770 -#: templates/js/translated/bom.js:951 templates/js/translated/build.js:504 -#: templates/js/translated/build.js:716 templates/js/translated/build.js:982 -#: templates/js/translated/build.js:1425 templates/js/translated/build.js:1991 -#: templates/js/translated/build.js:2467 -#: templates/js/translated/company.js:1428 -#: templates/js/translated/model_renderers.js:207 -#: templates/js/translated/order.js:304 templates/js/translated/part.js:935 -#: templates/js/translated/part.js:1784 templates/js/translated/part.js:3263 +#: templates/js/translated/barcode.js:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 #: 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:749 -#: templates/js/translated/purchase_order.js:1815 -#: templates/js/translated/purchase_order.js:2039 -#: templates/js/translated/sales_order.js:302 -#: templates/js/translated/sales_order.js:1187 -#: templates/js/translated/sales_order.js:1504 -#: templates/js/translated/sales_order.js:1594 -#: templates/js/translated/sales_order.js:1684 -#: templates/js/translated/sales_order.js:1804 -#: templates/js/translated/stock.js:531 templates/js/translated/stock.js:669 -#: templates/js/translated/stock.js:840 templates/js/translated/stock.js:2758 -#: templates/js/translated/stock.js:2843 +#: templates/js/translated/purchase_order.js:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 msgid "Quantity" msgstr "数量" -#: build/models.py:1469 +#: build/models.py:1281 +#, fuzzy +#| msgid "Stock required for build order" +msgid "Required quantity for build order" +msgstr "生产订单所需的库存" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "生产项必须指定生产产出,因为主部件已经被标记为可追踪的" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "库存物品分配过度!" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "分配数量必须大于0" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "序列化库存的数量必须是 1" + +#: build/models.py:1453 +#, fuzzy +#| msgid "Selected stock item not found in BOM" +msgid "Selected stock item does not match BOM line" +msgstr "在BOM中找不到选定的库存项" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "库存项" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "源库存项" + +#: build/models.py:1539 msgid "Stock quantity to allocate to build" msgstr "分配到生产的数量" -#: build/models.py:1477 +#: build/models.py:1547 msgid "Install into" msgstr "安装到" -#: build/models.py:1478 +#: build/models.py:1548 msgid "Destination stock item" msgstr "目标库存项" -#: build/serializers.py:148 build/serializers.py:820 -#: templates/js/translated/build.js:1413 +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 msgid "Build Output" msgstr "生产产出" -#: build/serializers.py:160 +#: build/serializers.py:167 msgid "Build output does not match the parent build" msgstr "生产产出与对应生产不匹配" -#: build/serializers.py:164 +#: build/serializers.py:171 msgid "Output part does not match BuildOrder part" msgstr "产出部件与生产订单部件不匹配" -#: build/serializers.py:168 +#: build/serializers.py:175 msgid "This build output has already been completed" msgstr "此生产产出已经完成" -#: build/serializers.py:179 +#: build/serializers.py:186 msgid "This build output is not fully allocated" msgstr "生产产出未被完成分配" -#: build/serializers.py:199 build/serializers.py:237 +#: build/serializers.py:206 build/serializers.py:243 msgid "Enter quantity for build output" msgstr "输入生产产出数量" -#: build/serializers.py:258 +#: build/serializers.py:264 msgid "Integer quantity required for trackable parts" msgstr "对于可追踪的部件,需要整数型数值" -#: build/serializers.py:261 +#: build/serializers.py:267 msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "需要整数型数值,因为BOM包含可追踪的部件" -#: build/serializers.py:276 order/serializers.py:513 order/serializers.py:1236 -#: stock/serializers.py:324 templates/js/translated/purchase_order.js:1123 -#: templates/js/translated/stock.js:334 templates/js/translated/stock.js:532 +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "序列号" -#: build/serializers.py:277 +#: build/serializers.py:283 msgid "Enter serial numbers for build outputs" msgstr "输入生产产出的序列号" -#: build/serializers.py:290 +#: build/serializers.py:296 msgid "Auto Allocate Serial Numbers" msgstr "自动分配序列号" -#: build/serializers.py:291 +#: build/serializers.py:297 msgid "Automatically allocate required items with matching serial numbers" msgstr "自动为所需项分配对应的序列号" -#: build/serializers.py:326 stock/api.py:669 +#: build/serializers.py:332 stock/api.py:788 msgid "The following serial numbers already exist or are invalid" msgstr "以下序列号已存在或无效" -#: build/serializers.py:377 build/serializers.py:439 build/serializers.py:518 +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 msgid "A list of build outputs must be provided" msgstr "必须提供生产产出列表" -#: build/serializers.py:415 build/serializers.py:488 order/serializers.py:486 -#: order/serializers.py:605 order/serializers.py:1587 part/serializers.py:854 -#: stock/serializers.py:335 stock/serializers.py:470 stock/serializers.py:551 -#: stock/serializers.py:931 stock/serializers.py:1173 -#: stock/templates/stock/item_base.html:390 +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:530 -#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:967 -#: templates/js/translated/build.js:2006 -#: templates/js/translated/purchase_order.js:1148 -#: templates/js/translated/purchase_order.js:1238 -#: templates/js/translated/sales_order.js:1497 -#: templates/js/translated/sales_order.js:1605 -#: templates/js/translated/sales_order.js:1613 -#: templates/js/translated/sales_order.js:1692 -#: templates/js/translated/stock.js:645 templates/js/translated/stock.js:811 -#: templates/js/translated/stock.js:1023 templates/js/translated/stock.js:1937 -#: templates/js/translated/stock.js:2608 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 msgid "Location" msgstr "地点" -#: build/serializers.py:416 +#: build/serializers.py:422 #, fuzzy #| msgid "Stock item created" msgid "Stock location for scrapped outputs" msgstr "库存项已创建" -#: build/serializers.py:422 +#: build/serializers.py:428 #, fuzzy #| msgid "Stock Locations" msgid "Discard Allocations" msgstr "仓储地点" -#: build/serializers.py:423 +#: build/serializers.py:429 msgid "Discard any stock allocations for scrapped outputs" msgstr "" -#: build/serializers.py:428 +#: build/serializers.py:434 #, fuzzy #| msgid "Location for completed build outputs" msgid "Reason for scrapping build output(s)" msgstr "已完成生产产出的仓储地点" -#: build/serializers.py:489 +#: build/serializers.py:494 msgid "Location for completed build outputs" msgstr "已完成生产产出的仓储地点" -#: build/serializers.py:495 build/templates/build/build_base.html:151 -#: build/templates/build/detail.html:62 order/models.py:788 -#: order/models.py:1747 order/serializers.py:523 stock/admin.py:106 -#: stock/templates/stock/item_base.html:423 -#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2897 -#: templates/js/translated/purchase_order.js:1278 -#: templates/js/translated/purchase_order.js:1682 -#: templates/js/translated/return_order.js:319 -#: templates/js/translated/sales_order.js:807 -#: templates/js/translated/stock.js:1912 templates/js/translated/stock.js:2732 -#: templates/js/translated/stock.js:2859 +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 msgid "Status" msgstr "状态" -#: build/serializers.py:501 +#: build/serializers.py:506 msgid "Accept Incomplete Allocation" msgstr "接受不完整的分配" -#: build/serializers.py:502 +#: build/serializers.py:507 msgid "Complete outputs if stock has not been fully allocated" msgstr "如果库存尚未完成分配,完成产出" -#: build/serializers.py:571 +#: build/serializers.py:576 msgid "Remove Allocated Stock" msgstr "移除已分配的库存" -#: build/serializers.py:572 +#: build/serializers.py:577 msgid "Subtract any stock which has already been allocated to this build" msgstr "减去已经分配至此生产的库存" -#: build/serializers.py:578 +#: build/serializers.py:583 msgid "Remove Incomplete Outputs" msgstr "移除未完成的产出" -#: build/serializers.py:579 +#: build/serializers.py:584 msgid "Delete any build outputs which have not been completed" msgstr "删除所有未完成的生产产出" -#: build/serializers.py:606 +#: build/serializers.py:611 msgid "Not permitted" msgstr "" -#: build/serializers.py:607 +#: build/serializers.py:612 msgid "Accept as consumed by this build order" msgstr "接受此构建订单所消耗的内容" -#: build/serializers.py:608 +#: build/serializers.py:613 msgid "Deallocate before completing this build order" msgstr "在完成此构建订单前取消分配" -#: build/serializers.py:631 +#: build/serializers.py:635 msgid "Overallocated Stock" msgstr "超出分配的库存" -#: build/serializers.py:633 +#: build/serializers.py:637 msgid "How do you want to handle extra stock items assigned to the build order" msgstr "你想如何处理分配给构建订单的额外库存物品" -#: build/serializers.py:643 +#: build/serializers.py:647 msgid "Some stock items have been overallocated" msgstr "一些库存项已被过度分配" -#: build/serializers.py:648 +#: build/serializers.py:652 msgid "Accept Unallocated" msgstr "接受未分配的" -#: build/serializers.py:649 +#: build/serializers.py:653 msgid "Accept that stock items have not been fully allocated to this build order" msgstr "接受库存项未被完成分配至此生产订单" -#: build/serializers.py:659 templates/js/translated/build.js:295 +#: build/serializers.py:663 templates/js/translated/build.js:307 msgid "Required stock has not been fully allocated" msgstr "所需库存尚未完全分配" -#: build/serializers.py:664 order/serializers.py:260 order/serializers.py:1126 +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 msgid "Accept Incomplete" msgstr "接受未完成" -#: build/serializers.py:665 +#: build/serializers.py:669 msgid "Accept that the required number of build outputs have not been completed" msgstr "接受所需的生产产出未完成" -#: build/serializers.py:675 templates/js/translated/build.js:299 +#: build/serializers.py:679 templates/js/translated/build.js:311 msgid "Required build quantity has not been completed" msgstr "所需生产数量尚未完成" -#: build/serializers.py:684 templates/js/translated/build.js:283 +#: build/serializers.py:688 templates/js/translated/build.js:295 msgid "Build order has incomplete outputs" msgstr "生产订单有未完成的产出" -#: build/serializers.py:714 build/serializers.py:768 part/models.py:3685 -#: part/models.py:4068 -msgid "BOM Item" -msgstr "BOM项" +#: build/serializers.py:718 +#, fuzzy +#| msgid "Build actions" +msgid "Build Line" +msgstr "生产操作" -#: build/serializers.py:724 +#: build/serializers.py:728 msgid "Build output" msgstr "生产产出" -#: build/serializers.py:732 +#: build/serializers.py:736 msgid "Build output must point to the same build" msgstr "生产产出必须指向相同的生产" -#: build/serializers.py:782 +#: build/serializers.py:772 +#, fuzzy +#| msgid "Delete parameters" +msgid "Build Line Item" +msgstr "删除参数" + +#: build/serializers.py:786 msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part 必须与生产订单指向相同的部件" -#: build/serializers.py:797 stock/serializers.py:783 +#: build/serializers.py:801 stock/serializers.py:1002 msgid "Item must be in stock" msgstr "项目必须在库存中" -#: build/serializers.py:846 order/serializers.py:1116 +#: build/serializers.py:849 order/serializers.py:1153 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "可用量 ({q}) 超出了限制" -#: build/serializers.py:852 +#: build/serializers.py:855 msgid "Build output must be specified for allocation of tracked parts" msgstr "对于被追踪的部件的分配,必须指定生产产出" -#: build/serializers.py:859 +#: build/serializers.py:862 msgid "Build output cannot be specified for allocation of untracked parts" msgstr "对于未被追踪的部件,无法指定生产产出" -#: build/serializers.py:864 -msgid "This stock item has already been allocated to this build output" -msgstr "此库存项已被分配至此生产产出" - -#: build/serializers.py:887 order/serializers.py:1400 +#: build/serializers.py:886 order/serializers.py:1435 msgid "Allocation items must be provided" msgstr "必须提供分配的项" @@ -1548,15 +1673,15 @@ msgstr "可选项目" msgid "Allocate optional BOM items to build order" msgstr "分配可选的BOM项目来建立订单" -#: build/tasks.py:101 +#: build/tasks.py:149 msgid "Stock required for build order" msgstr "生产订单所需的库存" -#: build/tasks.py:119 +#: build/tasks.py:166 msgid "Overdue Build Order" msgstr "超时构建顺序" -#: build/tasks.py:124 +#: build/tasks.py:171 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "生成订单 {bo} 现在已过期" @@ -1567,89 +1692,90 @@ msgstr "生成订单 {bo} 现在已过期" msgid "Part thumbnail" msgstr "商品名称" -#: build/templates/build/build_base.html:39 -#: company/templates/company/supplier_part.html:36 +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 #: order/templates/order/order_base.html:29 -#: order/templates/order/return_order_base.html:39 -#: order/templates/order/sales_order_base.html:39 -#: part/templates/part/part_base.html:43 -#: stock/templates/stock/item_base.html:41 -#: stock/templates/stock/location.html:54 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 msgid "Barcode actions" msgstr "" -#: build/templates/build/build_base.html:43 -#: company/templates/company/supplier_part.html:40 +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 #: order/templates/order/order_base.html:33 -#: order/templates/order/return_order_base.html:43 -#: order/templates/order/sales_order_base.html:43 -#: part/templates/part/part_base.html:46 -#: stock/templates/stock/item_base.html:45 -#: stock/templates/stock/location.html:56 templates/qr_button.html:1 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 msgid "Show QR Code" msgstr "" -#: build/templates/build/build_base.html:46 -#: company/templates/company/supplier_part.html:42 +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 #: order/templates/order/order_base.html:36 -#: order/templates/order/return_order_base.html:46 -#: order/templates/order/sales_order_base.html:46 -#: part/templates/part/part_base.html:49 -#: stock/templates/stock/item_base.html:48 -#: stock/templates/stock/location.html:58 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 #: templates/js/translated/barcode.js:479 #: templates/js/translated/barcode.js:484 msgid "Unlink Barcode" msgstr "" -#: build/templates/build/build_base.html:48 -#: company/templates/company/supplier_part.html:44 +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 #: order/templates/order/order_base.html:38 -#: order/templates/order/return_order_base.html:48 -#: order/templates/order/sales_order_base.html:48 -#: part/templates/part/part_base.html:51 -#: stock/templates/stock/item_base.html:50 -#: stock/templates/stock/location.html:60 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 msgid "Link Barcode" msgstr "" -#: build/templates/build/build_base.html:57 +#: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 -#: order/templates/order/return_order_base.html:56 -#: order/templates/order/sales_order_base.html:56 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 msgid "Print actions" msgstr "打印操作" -#: build/templates/build/build_base.html:61 +#: build/templates/build/build_base.html:60 msgid "Print build order report" msgstr "打印构建订单报告" -#: build/templates/build/build_base.html:68 +#: build/templates/build/build_base.html:67 msgid "Build actions" msgstr "生产操作" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:71 msgid "Edit Build" msgstr "编辑生产" -#: build/templates/build/build_base.html:74 +#: build/templates/build/build_base.html:73 msgid "Cancel Build" msgstr "取消生产" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:76 msgid "Duplicate Build" msgstr "重复构件" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:79 msgid "Delete Build" msgstr "删除生产" +#: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 -#: build/templates/build/build_base.html:86 msgid "Complete Build" msgstr "生产完成" -#: build/templates/build/build_base.html:108 +#: build/templates/build/build_base.html:107 msgid "Build Description" msgstr "构建描述" @@ -1674,18 +1800,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:237 -#: order/models.py:1096 order/templates/order/order_base.html:190 -#: order/templates/order/return_order_base.html:165 -#: order/templates/order/sales_order_base.html:193 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2945 templates/js/translated/part.js:1802 -#: templates/js/translated/purchase_order.js:1699 -#: templates/js/translated/purchase_order.js:2115 -#: templates/js/translated/return_order.js:335 -#: templates/js/translated/return_order.js:735 -#: templates/js/translated/sales_order.js:823 -#: templates/js/translated/sales_order.js:1847 +#: templates/js/translated/build.js:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 msgid "Target Date" msgstr "预计日期" @@ -1696,47 +1822,46 @@ msgstr "此次生产的截止日期为 %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 -#: order/templates/order/order_base.html:126 -#: order/templates/order/return_order_base.html:118 -#: order/templates/order/sales_order_base.html:123 -#: templates/js/translated/table_filters.js:68 -#: templates/js/translated/table_filters.js:454 -#: templates/js/translated/table_filters.js:539 -#: templates/js/translated/table_filters.js:580 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 msgid "Overdue" msgstr "逾期" #: build/templates/build/build_base.html:177 -#: build/templates/build/detail.html:67 build/templates/build/detail.html:149 -#: order/templates/order/sales_order_base.html:203 -#: templates/js/translated/table_filters.js:602 -msgid "Completed" -msgstr "已完成" +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "已完成输出" #: build/templates/build/build_base.html:190 -#: build/templates/build/detail.html:101 order/api.py:1451 order/models.py:1301 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 #: order/models.py:1400 order/models.py:1548 #: order/templates/order/sales_order_base.html:9 #: order/templates/order/sales_order_base.html:28 #: report/templates/report/inventree_build_order_base.html:135 #: report/templates/report/inventree_so_report_base.html:14 -#: stock/templates/stock/item_base.html:370 +#: stock/templates/stock/item_base.html:369 #: templates/email/overdue_sales_order.html:15 -#: templates/js/translated/pricing.js:915 -#: templates/js/translated/sales_order.js:757 -#: templates/js/translated/sales_order.js:980 -#: templates/js/translated/stock.js:2661 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 msgid "Sales Order" msgstr "销售订单" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 msgid "Issued By" msgstr "发布者" #: build/templates/build/build_base.html:211 -#: build/templates/build/detail.html:94 templates/js/translated/build.js:2862 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 msgid "Priority" msgstr "优先级" @@ -1768,8 +1893,8 @@ msgstr "库存来源" msgid "Stock can be taken from any available location." msgstr "库存可以从任何可用的地点获得。" -#: build/templates/build/detail.html:49 order/models.py:1219 -#: templates/js/translated/purchase_order.js:2157 +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 msgid "Destination" msgstr "目的地" @@ -1781,23 +1906,23 @@ msgstr "目标位置未指定" msgid "Allocated Parts" msgstr "已分配的部件" -#: build/templates/build/detail.html:80 stock/admin.py:105 -#: stock/templates/stock/item_base.html:163 -#: templates/js/translated/build.js:1432 -#: templates/js/translated/model_renderers.js:212 -#: templates/js/translated/purchase_order.js:1244 -#: templates/js/translated/stock.js:1093 templates/js/translated/stock.js:1926 -#: templates/js/translated/stock.js:2866 -#: templates/js/translated/table_filters.js:259 -#: templates/js/translated/table_filters.js:350 +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 msgid "Batch" msgstr "批量" #: build/templates/build/detail.html:133 -#: order/templates/order/order_base.html:177 -#: order/templates/order/return_order_base.html:152 -#: order/templates/order/sales_order_base.html:187 -#: templates/js/translated/build.js:2905 +#: 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:2184 msgid "Created" msgstr "已创建" @@ -1805,153 +1930,114 @@ msgstr "已创建" msgid "No target date set" msgstr "无预计日期" +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "已完成" + #: build/templates/build/detail.html:153 msgid "Build not complete" msgstr "生产未完成" -#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:19 +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" msgstr "子生产订单" -#: build/templates/build/detail.html:179 +#: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" msgstr "为生产分配库存" -#: build/templates/build/detail.html:183 templates/js/translated/build.js:2276 -msgid "Unallocate stock" +#: build/templates/build/detail.html:181 +#, fuzzy +#| msgid "Unallocate stock" +msgid "Deallocate stock" +msgstr "未分配库存" + +#: build/templates/build/detail.html:182 +#, fuzzy +#| msgid "Unallocate Stock" +msgid "Deallocate Stock" msgstr "未分配库存" #: build/templates/build/detail.html:184 -msgid "Unallocate Stock" -msgstr "未分配库存" - -#: build/templates/build/detail.html:186 msgid "Automatically allocate stock to build" msgstr "自动分配存货进行生成" -#: build/templates/build/detail.html:187 +#: build/templates/build/detail.html:185 msgid "Auto Allocate" msgstr "自动分配" -#: build/templates/build/detail.html:189 +#: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" msgstr "手动分配存货进行生成" -#: build/templates/build/detail.html:190 build/templates/build/sidebar.html:8 +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" msgstr "分配库存" -#: build/templates/build/detail.html:193 +#: build/templates/build/detail.html:191 msgid "Order required parts" msgstr "订单所需部件" -#: build/templates/build/detail.html:194 -#: company/templates/company/detail.html:38 -#: company/templates/company/detail.html:86 -#: part/templates/part/category.html:184 -#: templates/js/translated/purchase_order.js:789 +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 msgid "Order Parts" msgstr "订购商品" -#: build/templates/build/detail.html:206 -msgid "Untracked stock has been fully allocated for this Build Order" -msgstr "未跟踪的库存已完全分配给此生产订单" - #: build/templates/build/detail.html:210 -msgid "Untracked stock has not been fully allocated for this Build Order" -msgstr "未跟踪的库存尚未完全分配给此生产订单" - -#: build/templates/build/detail.html:217 -msgid "Allocate selected items" -msgstr "分配选定项目" - -#: build/templates/build/detail.html:227 -msgid "This Build Order does not have any associated untracked BOM items" -msgstr "此构建订单没有任何关联的 BOM 项目" - -#: build/templates/build/detail.html:236 msgid "Incomplete Build Outputs" msgstr "未完成的生产产出" -#: build/templates/build/detail.html:240 +#: build/templates/build/detail.html:214 msgid "Create new build output" msgstr "创建新构建输出" -#: build/templates/build/detail.html:241 +#: build/templates/build/detail.html:215 msgid "New Build Output" msgstr "新建构建输出" -#: build/templates/build/detail.html:255 -msgid "Output Actions" -msgstr "输出操作" - -#: build/templates/build/detail.html:260 -msgid "Complete selected build outputs" -msgstr "完成选定的构建输出" - -#: build/templates/build/detail.html:261 -msgid "Complete outputs" -msgstr "已完成输出" - -#: build/templates/build/detail.html:265 -#, fuzzy -#| msgid "Complete selected build outputs" -msgid "Scrap selected build outputs" -msgstr "完成选定的构建输出" - -#: build/templates/build/detail.html:266 -#, fuzzy -#| msgid "Complete outputs" -msgid "Scrap outputs" -msgstr "已完成输出" - -#: build/templates/build/detail.html:270 -msgid "Delete selected build outputs" -msgstr "删除选中的构建输出" - -#: build/templates/build/detail.html:271 -msgid "Delete outputs" -msgstr "删除输出" - -#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:11 +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 #, fuzzy #| msgid "Minimum Stock" msgid "Consumed Stock" msgstr "最低库存" -#: build/templates/build/detail.html:300 +#: build/templates/build/detail.html:244 msgid "Completed Build Outputs" msgstr "已完成构建输出" -#: build/templates/build/detail.html:312 build/templates/build/sidebar.html:21 -#: company/templates/company/detail.html:261 -#: company/templates/company/manufacturer_part.html:151 +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 #: company/templates/company/manufacturer_part_sidebar.html:9 -#: company/templates/company/sidebar.html:37 +#: company/templates/company/sidebar.html:39 #: order/templates/order/po_sidebar.html:9 -#: order/templates/order/purchase_order_detail.html:102 -#: order/templates/order/return_order_detail.html:74 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 #: order/templates/order/return_order_sidebar.html:7 -#: order/templates/order/sales_order_detail.html:134 -#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:234 -#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:117 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" msgstr "附件" -#: build/templates/build/detail.html:327 +#: build/templates/build/detail.html:271 msgid "Build Notes" msgstr "生产备注" -#: build/templates/build/detail.html:502 +#: build/templates/build/detail.html:422 msgid "Allocation Complete" msgstr "分配完成" -#: build/templates/build/detail.html:503 -msgid "All untracked stock items have been allocated" -msgstr "所有未跟踪的库存项目都已分配" +#: build/templates/build/detail.html:423 +#, fuzzy +#| msgid "Required stock has not been fully allocated" +msgid "All lines have been fully allocated" +msgstr "所需库存尚未完全分配" -#: build/templates/build/index.html:18 part/templates/part/detail.html:340 +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" msgstr "新建生产订单" @@ -1959,14 +2045,10 @@ msgstr "新建生产订单" msgid "Build Order Details" msgstr "生产订单详情" -#: build/templates/build/sidebar.html:14 +#: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" msgstr "未完成输出" -#: build/templates/build/sidebar.html:17 -msgid "Completed Outputs" -msgstr "已完成输出" - #: common/files.py:63 #, fuzzy, python-brace-format #| msgid "Unsupported file format: {ext.upper()}" @@ -2006,1528 +2088,1597 @@ msgstr "{name.title()} 文件" msgid "Select {name} file to upload" msgstr "选择 {name} 文件上传" -#: common/models.py:68 +#: common/models.py:71 msgid "Updated" msgstr "已更新" -#: common/models.py:69 +#: common/models.py:72 msgid "Timestamp of last update" msgstr "最后一次更新时间" -#: common/models.py:104 order/admin.py:17 order/models.py:231 -#: templates/InvenTree/settings/settings_staff_js.html:70 -#: templates/js/translated/purchase_order.js:1670 -#: templates/js/translated/return_order.js:306 -#: templates/js/translated/sales_order.js:794 -#: templates/js/translated/table_filters.js:24 -#: templates/project_code_data.html:6 -#, fuzzy -#| msgid "Part QR Code" -msgid "Project Code" -msgstr "商品二维码" - -#: common/models.py:105 +#: common/models.py:119 msgid "Unique project code" msgstr "" -#: common/models.py:112 +#: common/models.py:126 #, fuzzy #| msgid "Part description" msgid "Project description" msgstr "商品描述" -#: common/models.py:539 +#: common/models.py:648 msgid "Settings key (must be unique - case insensitive)" msgstr "设置键值(必须是唯一的 - 大小写不敏感)" -#: common/models.py:541 +#: common/models.py:650 msgid "Settings value" msgstr "设定值" -#: common/models.py:582 +#: common/models.py:691 msgid "Chosen value is not a valid option" msgstr "选择的值不是一个有效的选项" -#: common/models.py:599 +#: common/models.py:708 msgid "Value must be a boolean value" msgstr "值必须是布尔量" -#: common/models.py:610 +#: common/models.py:719 msgid "Value must be an integer value" msgstr "值必须为整数" -#: common/models.py:649 +#: common/models.py:758 msgid "Key string must be unique" msgstr "关键字必须是唯一的" -#: common/models.py:844 +#: common/models.py:963 msgid "No group" msgstr "无群组" -#: common/models.py:869 +#: common/models.py:988 msgid "An empty domain is not allowed." msgstr "不允许空域。" -#: common/models.py:871 +#: common/models.py:990 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "无效的域名: {domain}" -#: common/models.py:928 +#: common/models.py:1002 +#, fuzzy +#| msgid "Subcategories" +msgid "No plugin" +msgstr "子类别" + +#: common/models.py:1068 msgid "Restart required" msgstr "需要重启" -#: common/models.py:929 +#: common/models.py:1069 msgid "A setting has been changed which requires a server restart" msgstr "设置已更改,需要服务器重启" -#: common/models.py:936 +#: common/models.py:1076 +#, fuzzy +#| msgid "Printing Actions" +msgid "Pending migrations" +msgstr "打印操作" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 msgid "Server Instance Name" msgstr "服务器实例名称" -#: common/models.py:938 +#: common/models.py:1085 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:943 +#: common/models.py:1090 msgid "Use instance name" msgstr "" -#: common/models.py:944 +#: common/models.py:1091 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:950 +#: common/models.py:1097 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:951 +#: common/models.py:1098 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:957 company/models.py:101 company/models.py:102 +#: common/models.py:1104 company/models.py:101 company/models.py:102 msgid "Company name" msgstr "公司名称" -#: common/models.py:958 +#: common/models.py:1105 msgid "Internal company name" msgstr "内部公司名称" -#: common/models.py:963 +#: common/models.py:1110 msgid "Base URL" msgstr "" -#: common/models.py:964 +#: common/models.py:1111 msgid "Base URL for server instance" msgstr "" -#: common/models.py:971 +#: common/models.py:1118 msgid "Default Currency" msgstr "" -#: common/models.py:972 +#: common/models.py:1119 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:979 -msgid "Download from URL" +#: common/models.py:1126 +msgid "Currency Update Interval" msgstr "" -#: common/models.py:980 -msgid "Allow download of remote images and files from external URL" +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:986 -msgid "Download Size Limit" -msgstr "" - -#: common/models.py:987 -msgid "Maximum allowable download size for remote image" -msgstr "" - -#: common/models.py:998 -msgid "User-agent used to download from URL" -msgstr "" - -#: common/models.py:999 -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:1004 -msgid "Require confirm" -msgstr "" - -#: common/models.py:1005 -msgid "Require explicit user confirmation for certain action." -msgstr "" - -#: common/models.py:1011 -msgid "Tree Depth" -msgstr "" - -#: common/models.py:1012 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "" - -#: common/models.py:1021 -msgid "Update Check Interval" -msgstr "" - -#: common/models.py:1022 -msgid "How often to check for updates (set to zero to disable)" -msgstr "" - -#: common/models.py:1028 common/models.py:1046 common/models.py:1053 -#: common/models.py:1064 common/models.py:1075 common/models.py:1299 -#: common/models.py:1323 common/models.py:1446 common/models.py:1695 +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 msgid "days" msgstr "天" -#: common/models.py:1032 +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "" + +#: common/models.py:1164 +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:1169 +msgid "Require confirm" +msgstr "" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "" + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "" + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" + +#: common/models.py:1197 msgid "Automatic Backup" msgstr "" -#: common/models.py:1033 +#: common/models.py:1198 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1039 +#: common/models.py:1204 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1040 +#: common/models.py:1205 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1050 +#: common/models.py:1215 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1051 +#: common/models.py:1216 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1061 +#: common/models.py:1226 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1062 +#: common/models.py:1227 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1072 +#: common/models.py:1237 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1073 +#: common/models.py:1238 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1083 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1084 -msgid "Enable barcode scanner support" +#: common/models.py:1249 +#, fuzzy +#| msgid "Enable barcode scanner support" +msgid "Enable barcode scanner support in the web interface" msgstr "启用条形码扫描支持" -#: common/models.py:1090 +#: common/models.py:1255 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1091 +#: common/models.py:1256 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1101 +#: common/models.py:1266 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1102 +#: common/models.py:1267 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1108 +#: common/models.py:1273 #, fuzzy #| msgid "Part description" msgid "Part Revisions" msgstr "商品描述" -#: common/models.py:1109 +#: common/models.py:1274 #, fuzzy #| msgid "Enable internal prices for parts" msgid "Enable revision field for Part" msgstr "启用内部商品价格" -#: common/models.py:1115 +#: common/models.py:1280 msgid "IPN Regex" msgstr "" -#: common/models.py:1116 +#: common/models.py:1281 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1120 +#: common/models.py:1285 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1121 +#: common/models.py:1286 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1127 +#: common/models.py:1292 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1128 +#: common/models.py:1293 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1134 +#: common/models.py:1299 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1135 +#: common/models.py:1300 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1141 +#: common/models.py:1306 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1142 +#: common/models.py:1307 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1148 +#: common/models.py:1313 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1149 +#: common/models.py:1314 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1155 +#: common/models.py:1320 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1156 +#: common/models.py:1321 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1162 part/admin.py:55 part/models.py:3559 -#: report/models.py:166 templates/js/translated/table_filters.js:109 -#: templates/js/translated/table_filters.js:680 +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 msgid "Template" msgstr "模板" -#: common/models.py:1163 +#: common/models.py:1328 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1169 part/admin.py:51 part/admin.py:283 part/models.py:995 -#: templates/js/translated/bom.js:1598 -#: templates/js/translated/table_filters.js:276 -#: templates/js/translated/table_filters.js:634 +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 msgid "Assembly" msgstr "组装" -#: common/models.py:1170 +#: common/models.py:1335 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1176 part/admin.py:52 part/models.py:1001 -#: templates/js/translated/table_filters.js:642 +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 msgid "Component" msgstr "组件" -#: common/models.py:1177 +#: common/models.py:1342 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1183 part/admin.py:53 part/models.py:1012 +#: common/models.py:1348 part/admin.py:53 part/models.py:981 msgid "Purchaseable" msgstr "可购买" -#: common/models.py:1184 +#: common/models.py:1349 msgid "Parts are purchaseable by default" msgstr "商品默认可购买" -#: common/models.py:1190 part/admin.py:54 part/models.py:1017 -#: templates/js/translated/table_filters.js:668 +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 msgid "Salable" msgstr "可销售" -#: common/models.py:1191 +#: common/models.py:1356 msgid "Parts are salable by default" msgstr "商品默认可销售" -#: common/models.py:1197 part/admin.py:56 part/models.py:1007 -#: templates/js/translated/table_filters.js:117 -#: templates/js/translated/table_filters.js:193 -#: templates/js/translated/table_filters.js:684 +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 msgid "Trackable" msgstr "可追踪" -#: common/models.py:1198 +#: common/models.py:1363 msgid "Parts are trackable by default" msgstr "商品默认可跟踪" -#: common/models.py:1204 part/admin.py:57 part/models.py:1027 -#: part/templates/part/part_base.html:156 -#: templates/js/translated/table_filters.js:113 -#: templates/js/translated/table_filters.js:688 +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 msgid "Virtual" msgstr "虚拟" -#: common/models.py:1205 +#: common/models.py:1370 msgid "Parts are virtual by default" msgstr "商品默认是虚拟的" -#: common/models.py:1211 +#: common/models.py:1376 msgid "Show Import in Views" msgstr "视图中显示导入" -#: common/models.py:1212 +#: common/models.py:1377 msgid "Display the import wizard in some part views" msgstr "在一些商品视图中显示导入向导" -#: common/models.py:1218 +#: common/models.py:1383 msgid "Show related parts" msgstr "显示相关商品" -#: common/models.py:1219 +#: common/models.py:1384 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1225 +#: common/models.py:1390 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1226 +#: common/models.py:1391 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1232 templates/js/translated/part.js:108 +#: common/models.py:1397 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1233 +#: common/models.py:1398 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1239 +#: common/models.py:1404 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1240 +#: common/models.py:1405 msgid "Format to display the part name" msgstr "" -#: common/models.py:1247 +#: common/models.py:1412 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1248 +#: common/models.py:1413 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1253 +#: common/models.py:1418 +#, fuzzy +#| msgid "Parameter units" +msgid "Enforce Parameter Units" +msgstr "参数单位" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1425 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1254 +#: common/models.py:1426 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1264 +#: common/models.py:1436 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1265 +#: common/models.py:1437 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1275 +#: common/models.py:1447 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1276 +#: common/models.py:1448 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1282 +#: common/models.py:1454 msgid "Purchase History Override" msgstr "" -#: common/models.py:1283 +#: common/models.py:1455 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1289 +#: common/models.py:1461 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1290 +#: common/models.py:1462 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1296 +#: common/models.py:1468 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1297 +#: common/models.py:1469 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1307 +#: common/models.py:1479 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1308 +#: common/models.py:1480 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1314 +#: common/models.py:1486 msgid "Active Variants Only" msgstr "" -#: common/models.py:1315 +#: common/models.py:1487 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1321 +#: common/models.py:1493 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1322 +#: common/models.py:1494 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1332 +#: common/models.py:1504 msgid "Internal Prices" msgstr "内部价格" -#: common/models.py:1333 +#: common/models.py:1505 msgid "Enable internal prices for parts" msgstr "启用内部商品价格" -#: common/models.py:1339 +#: common/models.py:1511 msgid "Internal Price Override" msgstr "" -#: common/models.py:1340 +#: common/models.py:1512 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1346 +#: common/models.py:1518 msgid "Enable label printing" msgstr "" -#: common/models.py:1347 +#: common/models.py:1519 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1353 +#: common/models.py:1525 msgid "Label Image DPI" msgstr "" -#: common/models.py:1354 +#: common/models.py:1526 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1363 +#: common/models.py:1535 msgid "Enable Reports" msgstr "" -#: common/models.py:1364 +#: common/models.py:1536 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1370 templates/stats.html:25 +#: common/models.py:1542 templates/stats.html:25 msgid "Debug Mode" msgstr "调试模式" -#: common/models.py:1371 +#: common/models.py:1543 msgid "Generate reports in debug mode (HTML output)" msgstr "在调试模式生成报告(HTML输出)" -#: common/models.py:1377 +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 msgid "Page Size" msgstr "页面大小" -#: common/models.py:1378 +#: common/models.py:1550 msgid "Default page size for PDF reports" msgstr "PDF 报表默认页面大小" -#: common/models.py:1388 +#: common/models.py:1556 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1389 +#: common/models.py:1557 msgid "Enable generation of test reports" msgstr "启用生成测试报表" -#: common/models.py:1395 +#: common/models.py:1563 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1396 +#: common/models.py:1564 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "" -#: common/models.py:1402 +#: common/models.py:1570 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1403 +#: common/models.py:1571 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1409 +#: common/models.py:1577 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1410 +#: common/models.py:1578 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1416 +#: common/models.py:1584 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1417 +#: common/models.py:1585 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1423 +#: common/models.py:1591 msgid "Batch Code Template" msgstr "" -#: common/models.py:1424 +#: common/models.py:1592 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1429 +#: common/models.py:1597 msgid "Stock Expiry" msgstr "库存到期" -#: common/models.py:1430 +#: common/models.py:1598 msgid "Enable stock expiry functionality" msgstr "启用库存到期功能" -#: common/models.py:1436 +#: common/models.py:1604 msgid "Sell Expired Stock" msgstr "销售过期库存" -#: common/models.py:1437 +#: common/models.py:1605 msgid "Allow sale of expired stock" msgstr "允许销售过期库存" -#: common/models.py:1443 +#: common/models.py:1611 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1444 +#: common/models.py:1612 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1451 +#: common/models.py:1619 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1452 +#: common/models.py:1620 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1458 +#: common/models.py:1626 msgid "Stock Ownership Control" msgstr "库存所有权控制" -#: common/models.py:1459 +#: common/models.py:1627 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1465 +#: common/models.py:1633 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1466 +#: common/models.py:1634 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1471 +#: common/models.py:1639 +#, fuzzy +#| msgid "Select Stock Items" +msgid "Show Installed Stock Items" +msgstr "选择库存项" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1646 msgid "Build Order Reference Pattern" msgstr "" -#: common/models.py:1472 +#: common/models.py:1647 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1478 +#: common/models.py:1653 #, fuzzy #| msgid "Sales Orders" msgid "Enable Return Orders" msgstr "销售订单" -#: common/models.py:1479 +#: common/models.py:1654 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1485 +#: common/models.py:1660 #, fuzzy #| msgid "Build Order Reference" msgid "Return Order Reference Pattern" msgstr "相关生产订单" -#: common/models.py:1486 +#: common/models.py:1661 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1492 +#: common/models.py:1667 #, fuzzy #| msgid "Complete Build Order" msgid "Edit Completed Return Orders" msgstr "生产订单完成" -#: common/models.py:1493 +#: common/models.py:1668 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1499 +#: common/models.py:1674 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1500 +#: common/models.py:1675 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1506 +#: common/models.py:1681 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1507 +#: common/models.py:1682 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1513 +#: common/models.py:1688 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1514 +#: common/models.py:1689 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1520 +#: common/models.py:1695 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1521 +#: common/models.py:1696 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1527 +#: common/models.py:1702 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1528 +#: common/models.py:1703 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1535 +#: common/models.py:1710 msgid "Enable password forgot" msgstr "" -#: common/models.py:1536 +#: common/models.py:1711 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1542 +#: common/models.py:1717 msgid "Enable registration" msgstr "" -#: common/models.py:1543 +#: common/models.py:1718 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1549 +#: common/models.py:1724 msgid "Enable SSO" msgstr "" -#: common/models.py:1550 +#: common/models.py:1725 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1556 +#: common/models.py:1731 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1557 +#: common/models.py:1732 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1563 +#: common/models.py:1738 msgid "Email required" msgstr "" -#: common/models.py:1564 +#: common/models.py:1739 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1570 +#: common/models.py:1745 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1571 +#: common/models.py:1746 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1577 +#: common/models.py:1752 msgid "Mail twice" msgstr "" -#: common/models.py:1578 +#: common/models.py:1753 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1584 +#: common/models.py:1759 msgid "Password twice" msgstr "" -#: common/models.py:1585 +#: common/models.py:1760 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1591 +#: common/models.py:1766 msgid "Allowed domains" msgstr "" -#: common/models.py:1592 +#: common/models.py:1767 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1598 +#: common/models.py:1773 msgid "Group on signup" msgstr "" -#: common/models.py:1599 +#: common/models.py:1774 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1605 +#: common/models.py:1780 msgid "Enforce MFA" msgstr "" -#: common/models.py:1606 +#: common/models.py:1781 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1612 +#: common/models.py:1787 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1613 +#: common/models.py:1788 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1620 -msgid "Check plugin signatures" -msgstr "" - -#: common/models.py:1621 -msgid "Check and show signatures for plugins" -msgstr "" - -#: common/models.py:1628 +#: common/models.py:1796 msgid "Enable URL integration" msgstr "" -#: common/models.py:1629 +#: common/models.py:1797 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1636 +#: common/models.py:1804 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1637 +#: common/models.py:1805 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1644 +#: common/models.py:1812 msgid "Enable app integration" msgstr "" -#: common/models.py:1645 +#: common/models.py:1813 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1652 +#: common/models.py:1820 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1653 +#: common/models.py:1821 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1660 +#: common/models.py:1828 msgid "Enable event integration" msgstr "" -#: common/models.py:1661 +#: common/models.py:1829 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1668 +#: common/models.py:1836 #, fuzzy #| msgid "Sales Orders" msgid "Enable project codes" msgstr "销售订单" -#: common/models.py:1669 +#: common/models.py:1837 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1675 +#: common/models.py:1843 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1676 +#: common/models.py:1844 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1682 +#: common/models.py:1850 +#, fuzzy +#| msgid "Exclude Location" +msgid "Exclude External Locations" +msgstr "排除地点" + +#: common/models.py:1851 +#, fuzzy +#| msgid "Exclude stock items from this selected location" +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "从该选定的仓储地点排除库存项" + +#: common/models.py:1857 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1683 +#: common/models.py:1858 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1692 +#: common/models.py:1867 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1693 +#: common/models.py:1868 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1710 common/models.py:2147 +#: common/models.py:1885 common/models.py:2314 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:1729 -msgid "No Printer (Export to PDF)" -msgstr "" - -#: common/models.py:1751 +#: common/models.py:1925 #, fuzzy #| msgid "Build to allocate parts" msgid "Hide inactive parts" msgstr "生产以分配部件" -#: common/models.py:1752 +#: common/models.py:1926 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:1758 +#: common/models.py:1932 msgid "Show subscribed parts" msgstr "" -#: common/models.py:1759 +#: common/models.py:1933 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:1765 +#: common/models.py:1939 msgid "Show subscribed categories" msgstr "" -#: common/models.py:1766 +#: common/models.py:1940 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:1772 +#: common/models.py:1946 msgid "Show latest parts" msgstr "显示最近商品" -#: common/models.py:1773 +#: common/models.py:1947 msgid "Show latest parts on the homepage" msgstr "在主页上显示最近商品" -#: common/models.py:1779 -msgid "Recent Part Count" -msgstr "" - -#: common/models.py:1780 -msgid "Number of recent parts to display on index page" -msgstr "" - -#: common/models.py:1786 +#: common/models.py:1953 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:1787 +#: common/models.py:1954 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:1793 +#: common/models.py:1960 msgid "Show recent stock changes" msgstr "" -#: common/models.py:1794 +#: common/models.py:1961 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:1800 -msgid "Recent Stock Count" -msgstr "" - -#: common/models.py:1801 -msgid "Number of recent stock items to display on index page" -msgstr "" - -#: common/models.py:1807 +#: common/models.py:1967 msgid "Show low stock" msgstr "" -#: common/models.py:1808 +#: common/models.py:1968 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:1814 +#: common/models.py:1974 msgid "Show depleted stock" msgstr "" -#: common/models.py:1815 +#: common/models.py:1975 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:1821 +#: common/models.py:1981 msgid "Show needed stock" msgstr "" -#: common/models.py:1822 +#: common/models.py:1982 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:1828 +#: common/models.py:1988 msgid "Show expired stock" msgstr "" -#: common/models.py:1829 +#: common/models.py:1989 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:1835 +#: common/models.py:1995 msgid "Show stale stock" msgstr "" -#: common/models.py:1836 +#: common/models.py:1996 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:1842 +#: common/models.py:2002 msgid "Show pending builds" msgstr "" -#: common/models.py:1843 +#: common/models.py:2003 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:1849 +#: common/models.py:2009 msgid "Show overdue builds" msgstr "显示逾期生产" -#: common/models.py:1850 +#: common/models.py:2010 msgid "Show overdue builds on the homepage" msgstr "在主页上显示逾期的生产" -#: common/models.py:1856 +#: common/models.py:2016 msgid "Show outstanding POs" msgstr "" -#: common/models.py:1857 +#: common/models.py:2017 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:1863 +#: common/models.py:2023 msgid "Show overdue POs" msgstr "" -#: common/models.py:1864 +#: common/models.py:2024 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:1870 +#: common/models.py:2030 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:1871 +#: common/models.py:2031 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:1877 +#: common/models.py:2037 msgid "Show overdue SOs" msgstr "" -#: common/models.py:1878 +#: common/models.py:2038 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:1884 +#: common/models.py:2044 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:1885 +#: common/models.py:2045 #, fuzzy #| msgid "Show latest parts on the homepage" msgid "Show pending SO shipments on the homepage" msgstr "在主页上显示最近商品" -#: common/models.py:1891 +#: common/models.py:2051 msgid "Show News" msgstr "" -#: common/models.py:1892 +#: common/models.py:2052 msgid "Show news on the homepage" msgstr "" -#: common/models.py:1898 +#: common/models.py:2058 msgid "Inline label display" msgstr "内嵌标签显示" -#: common/models.py:1899 +#: common/models.py:2059 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载" -#: common/models.py:1905 +#: common/models.py:2065 msgid "Default label printer" msgstr "" -#: common/models.py:1906 +#: common/models.py:2066 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:1912 +#: common/models.py:2072 msgid "Inline report display" msgstr "" -#: common/models.py:1913 +#: common/models.py:2073 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载" -#: common/models.py:1919 +#: common/models.py:2079 msgid "Search Parts" msgstr "" -#: common/models.py:1920 +#: common/models.py:2080 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:1926 +#: common/models.py:2086 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:1927 +#: common/models.py:2087 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:1933 +#: common/models.py:2093 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:1934 +#: common/models.py:2094 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:1940 +#: common/models.py:2100 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:1941 +#: common/models.py:2101 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:1947 +#: common/models.py:2107 msgid "Search Categories" msgstr "" -#: common/models.py:1948 +#: common/models.py:2108 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:1954 +#: common/models.py:2114 msgid "Search Stock" msgstr "" -#: common/models.py:1955 +#: common/models.py:2115 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:1961 +#: common/models.py:2121 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:1962 +#: common/models.py:2122 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:1968 +#: common/models.py:2128 msgid "Search Locations" msgstr "" -#: common/models.py:1969 +#: common/models.py:2129 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:1975 +#: common/models.py:2135 msgid "Search Companies" msgstr "" -#: common/models.py:1976 +#: common/models.py:2136 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:1982 +#: common/models.py:2142 msgid "Search Build Orders" msgstr "" -#: common/models.py:1983 +#: common/models.py:2143 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:1989 +#: common/models.py:2149 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:1990 +#: common/models.py:2150 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:1996 +#: common/models.py:2156 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:1997 +#: common/models.py:2157 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2003 +#: common/models.py:2163 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2004 +#: common/models.py:2164 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2010 +#: common/models.py:2170 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2011 +#: common/models.py:2171 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2017 +#: common/models.py:2177 #, fuzzy #| msgid "Purchase Orders" msgid "Search Return Orders" msgstr "采购订单" -#: common/models.py:2018 +#: common/models.py:2178 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2024 +#: common/models.py:2184 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2025 +#: common/models.py:2185 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2031 +#: common/models.py:2191 msgid "Search Preview Results" msgstr "搜索预览结果" -#: common/models.py:2032 +#: common/models.py:2192 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2038 +#: common/models.py:2198 #, fuzzy #| msgid "Search" msgid "Regex Search" msgstr "搜索" -#: common/models.py:2039 +#: common/models.py:2199 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2045 +#: common/models.py:2205 msgid "Whole Word Search" msgstr "" -#: common/models.py:2046 +#: common/models.py:2206 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2052 +#: common/models.py:2212 msgid "Show Quantity in Forms" msgstr "在表格中显示数量" -#: common/models.py:2053 +#: common/models.py:2213 msgid "Display available part quantity in some forms" msgstr "在某些表格中显示可用的商品数量" -#: common/models.py:2059 +#: common/models.py:2219 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2060 +#: common/models.py:2220 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2066 +#: common/models.py:2226 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2067 +#: common/models.py:2227 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2073 +#: common/models.py:2233 msgid "Date Format" msgstr "" -#: common/models.py:2074 +#: common/models.py:2234 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2088 part/templates/part/detail.html:41 +#: common/models.py:2248 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2089 +#: common/models.py:2249 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2095 part/templates/part/detail.html:62 +#: common/models.py:2255 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2096 +#: common/models.py:2256 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2102 +#: common/models.py:2262 msgid "Table String Length" msgstr "" -#: common/models.py:2103 +#: common/models.py:2263 msgid "Maximimum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2112 +#: common/models.py:2272 #, fuzzy #| msgid "Select Label Template" msgid "Default part label template" msgstr "选择标签模板" -#: common/models.py:2113 +#: common/models.py:2273 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2121 +#: common/models.py:2281 #, fuzzy #| msgid "stock items selected" msgid "Default stock item template" msgstr "已选择库存项" -#: common/models.py:2122 +#: common/models.py:2282 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2130 +#: common/models.py:2290 #, fuzzy #| msgid "No stock location set" msgid "Default stock location label template" msgstr "未设置仓储地点" -#: common/models.py:2131 +#: common/models.py:2291 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2177 +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 msgid "Price break quantity" msgstr "" -#: common/models.py:2184 company/serializers.py:434 order/admin.py:43 -#: order/models.py:1129 order/models.py:1936 -#: templates/js/translated/company.js:1433 templates/js/translated/part.js:1856 +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 #: templates/js/translated/pricing.js:621 -#: templates/js/translated/return_order.js:725 +#: templates/js/translated/return_order.js:738 msgid "Price" msgstr "价格" -#: common/models.py:2185 +#: common/models.py:2352 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2345 common/models.py:2523 +#: common/models.py:2511 common/models.py:2689 msgid "Endpoint" msgstr "" -#: common/models.py:2346 +#: common/models.py:2512 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2355 +#: common/models.py:2521 msgid "Name for this webhook" msgstr "" -#: common/models.py:2360 part/admin.py:50 part/models.py:1022 -#: plugin/models.py:47 templates/js/translated/table_filters.js:105 -#: templates/js/translated/table_filters.js:189 -#: templates/js/translated/table_filters.js:434 -#: templates/js/translated/table_filters.js:450 -#: templates/js/translated/table_filters.js:629 +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 msgid "Active" msgstr "" -#: common/models.py:2361 +#: common/models.py:2527 msgid "Is this webhook active" msgstr "" -#: common/models.py:2375 +#: common/models.py:2541 users/models.py:132 msgid "Token" msgstr "令牌" -#: common/models.py:2376 +#: common/models.py:2542 msgid "Token for access" msgstr "" -#: common/models.py:2383 +#: common/models.py:2549 msgid "Secret" msgstr "" -#: common/models.py:2384 +#: common/models.py:2550 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2490 +#: common/models.py:2656 msgid "Message ID" msgstr "" -#: common/models.py:2491 +#: common/models.py:2657 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2499 +#: common/models.py:2665 msgid "Host" msgstr "" -#: common/models.py:2500 +#: common/models.py:2666 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2507 +#: common/models.py:2673 msgid "Header" msgstr "" -#: common/models.py:2508 +#: common/models.py:2674 msgid "Header of this message" msgstr "" -#: common/models.py:2514 +#: common/models.py:2680 msgid "Body" msgstr "" -#: common/models.py:2515 +#: common/models.py:2681 msgid "Body of this message" msgstr "" -#: common/models.py:2524 +#: common/models.py:2690 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2529 +#: common/models.py:2695 msgid "Worked on" msgstr "" -#: common/models.py:2530 +#: common/models.py:2696 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2684 +#: common/models.py:2850 msgid "Id" msgstr "" -#: common/models.py:2690 templates/js/translated/news.js:44 +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2700 templates/js/translated/news.js:60 +#: common/models.py:2866 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2705 templates/InvenTree/settings/plugin_settings.html:32 -#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:106 +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 msgid "Author" msgstr "" -#: common/models.py:2710 templates/js/translated/news.js:52 +#: common/models.py:2876 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2715 +#: common/models.py:2881 msgid "Read" msgstr "" -#: common/models.py:2716 +#: common/models.py:2882 msgid "Was this news item read?" msgstr "" -#: common/models.py:2736 company/models.py:143 part/models.py:913 +#: common/models.py:2901 company/models.py:139 part/models.py:881 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 -#: stock/templates/stock/item_base.html:134 templates/503.html:31 +#: 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:2737 +#: common/models.py:2902 #, fuzzy #| msgid "Image" msgid "Image file" msgstr "图片" -#: common/notifications.py:291 +#: common/models.py:2945 +#, fuzzy +#| msgid "Must be a valid number" +msgid "Unit name must be a valid identifier" +msgstr "必须是有效数字" + +#: common/models.py:2967 +#, fuzzy +#| msgid "Part name" +msgid "Unit name" +msgstr "商品名称" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +#, fuzzy +#| msgid "Optional Items" +msgid "Optional unit symbol" +msgstr "可选项目" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +#, fuzzy +#| msgid "Destination" +msgid "Definition" +msgstr "目的地" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 #, python-brace-format msgid "New {verbose_name}" msgstr "" -#: common/notifications.py:293 +#: common/notifications.py:292 msgid "A new order has been created and assigned to you" msgstr "" -#: common/notifications.py:299 common/notifications.py:306 +#: common/notifications.py:298 common/notifications.py:305 msgid "Items Received" msgstr "" -#: common/notifications.py:301 +#: common/notifications.py:300 msgid "Items have been received against a purchase order" msgstr "" -#: common/notifications.py:308 +#: common/notifications.py:307 #, fuzzy #| msgid "Received against purchase order" msgid "Items have been received against a return order" msgstr "收到定购单" -#: common/notifications.py:420 +#: common/notifications.py:419 msgid "Error raised by plugin" msgstr "" @@ -3558,7 +3709,7 @@ msgstr "字段匹配失败" msgid "Parts imported" msgstr "已导入商品" -#: common/views.py:509 order/templates/order/order_wizard/match_fields.html:27 +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 #: order/templates/order/order_wizard/po_upload.html:49 #: part/templates/part/import_wizard/match_fields.html:27 @@ -3577,9 +3728,9 @@ msgstr "公司简介" msgid "Description of the company" msgstr "公司简介" -#: company/models.py:113 company/templates/company/company_base.html:101 +#: company/models.py:113 company/templates/company/company_base.html:100 #: templates/InvenTree/settings/plugin_settings.html:54 -#: templates/js/translated/company.js:514 +#: templates/js/translated/company.js:522 msgid "Website" msgstr "网站" @@ -3587,333 +3738,415 @@ msgstr "网站" msgid "Company website URL" msgstr "公司网站" -#: company/models.py:118 company/templates/company/company_base.html:119 -msgid "Address" -msgstr "地址" - -#: company/models.py:119 -msgid "Company address" -msgstr "公司地址" - -#: company/models.py:122 +#: company/models.py:118 msgid "Phone number" msgstr "电话号码" -#: company/models.py:123 +#: company/models.py:119 msgid "Contact phone number" msgstr "联系电话" -#: company/models.py:126 company/templates/company/company_base.html:133 -#: templates/InvenTree/settings/user.html:49 -#: templates/js/translated/company.js:659 -msgid "Email" -msgstr "电子邮件" - -#: company/models.py:126 +#: company/models.py:122 msgid "Contact email address" msgstr "联系人电子邮件" -#: company/models.py:129 company/templates/company/company_base.html:140 -#: order/models.py:263 order/templates/order/order_base.html:207 -#: order/templates/order/return_order_base.html:175 -#: order/templates/order/sales_order_base.html:215 +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 msgid "Contact" msgstr "联系人" -#: company/models.py:130 +#: company/models.py:126 msgid "Point of contact" msgstr "" -#: company/models.py:132 +#: company/models.py:128 msgid "Link to external company information" msgstr "链接到外部公司信息" -#: company/models.py:146 +#: company/models.py:142 msgid "is customer" msgstr "是客户" -#: company/models.py:146 +#: company/models.py:142 msgid "Do you sell items to this company?" msgstr "您是否向该公司出售商品?" -#: company/models.py:148 +#: company/models.py:144 msgid "is supplier" msgstr "是供应商" -#: company/models.py:148 +#: company/models.py:144 msgid "Do you purchase items from this company?" msgstr "您是否从该公司采购商品?" -#: company/models.py:150 +#: company/models.py:146 msgid "is manufacturer" msgstr "是制造商" -#: company/models.py:150 +#: company/models.py:146 msgid "Does this company manufacture parts?" msgstr "该公司制造商品吗?" -#: company/models.py:157 +#: company/models.py:153 msgid "Default currency used for this company" msgstr "该公司使用的默认货币" -#: company/models.py:223 company/templates/company/company_base.html:8 +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 #: company/templates/company/company_base.html:12 -#: templates/InvenTree/search.html:178 templates/js/translated/company.js:487 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 msgid "Company" msgstr "公司" -#: company/models.py:278 company/models.py:553 stock/models.py:675 -#: stock/serializers.py:155 stock/templates/stock/item_base.html:143 -#: templates/js/translated/bom.js:621 +#: company/models.py:334 +#, fuzzy +#| msgid "Delete Company" +msgid "Select company" +msgstr "删除该公司" + +#: company/models.py:337 +#, fuzzy +#| msgid "Address" +msgid "Address title" +msgstr "地址" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +#, fuzzy +#| msgid "Company address" +msgid "Primary address" +msgstr "公司地址" + +#: company/models.py:343 +#, fuzzy +#| msgid "Contact email address" +msgid "Set as primary address" +msgstr "联系人电子邮件" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +#, fuzzy +#| msgid "Address" +msgid "Address line 1" +msgstr "地址" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +#, fuzzy +#| msgid "Address" +msgid "Address line 2" +msgstr "地址" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +#, fuzzy +#| msgid "Address" +msgid "Address country" +msgstr "地址" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +#, fuzzy +#| msgid "Internal company name" +msgid "Internal shipping notes" +msgstr "内部公司名称" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +#, fuzzy +#| msgid "Description (optional)" +msgid "Link to address information (external)" +msgstr "描述 (可选)" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" -#: company/models.py:282 company/models.py:557 +#: company/models.py:416 company/models.py:692 msgid "Select part" msgstr "选择商品" -#: company/models.py:293 company/templates/company/company_base.html:77 +#: company/models.py:427 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:146 part/serializers.py:354 -#: stock/templates/stock/item_base.html:208 -#: templates/js/translated/company.js:498 -#: templates/js/translated/company.js:824 -#: templates/js/translated/company.js:954 -#: templates/js/translated/company.js:1221 -#: templates/js/translated/table_filters.js:709 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 msgid "Manufacturer" msgstr "制造商" -#: company/models.py:294 +#: company/models.py:428 msgid "Select manufacturer" msgstr "选择制造商" -#: company/models.py:300 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:154 part/serializers.py:360 -#: templates/js/translated/company.js:340 -#: templates/js/translated/company.js:823 -#: templates/js/translated/company.js:970 -#: templates/js/translated/company.js:1240 templates/js/translated/part.js:1773 -#: templates/js/translated/purchase_order.js:1814 -#: templates/js/translated/purchase_order.js:2021 +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 msgid "MPN" msgstr "" -#: company/models.py:301 +#: company/models.py:435 msgid "Manufacturer Part Number" msgstr "制造商商品编号" -#: company/models.py:307 +#: company/models.py:441 msgid "URL for external manufacturer part link" msgstr "" -#: company/models.py:313 +#: company/models.py:447 msgid "Manufacturer part description" msgstr "制造商商品描述" -#: company/models.py:360 company/models.py:384 company/models.py:578 +#: company/models.py:494 company/models.py:518 company/models.py:713 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 -#: stock/templates/stock/item_base.html:218 +#: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" msgstr "制造商商品" -#: company/models.py:391 +#: company/models.py:525 msgid "Parameter name" msgstr "参数名称" -#: company/models.py:397 +#: company/models.py:531 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2254 templates/js/translated/company.js:872 -#: templates/js/translated/company.js:1077 templates/js/translated/part.js:1465 -#: templates/js/translated/stock.js:1446 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 msgid "Value" msgstr "数值" -#: company/models.py:398 +#: company/models.py:532 msgid "Parameter value" msgstr "参数值" -#: company/models.py:404 company/templates/company/supplier_part.html:169 -#: part/admin.py:40 part/models.py:986 part/models.py:3406 -#: part/templates/part/part_base.html:286 -#: templates/js/translated/company.js:1083 templates/js/translated/part.js:1484 -#: templates/js/translated/part.js:1588 templates/js/translated/part.js:2262 +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 msgid "Units" msgstr "单位" -#: company/models.py:405 +#: company/models.py:539 msgid "Parameter units" msgstr "参数单位" -#: company/models.py:498 +#: company/models.py:633 msgid "Pack units must be compatible with the base part units" msgstr "" -#: company/models.py:504 +#: company/models.py:639 #, fuzzy #| msgid "Quantity must be greater than zero" msgid "Pack units must be greater than zero" msgstr "数量必须大于0" -#: company/models.py:520 +#: company/models.py:655 msgid "Linked manufacturer part must reference the same base part" msgstr "" -#: company/models.py:564 company/templates/company/company_base.html:82 -#: company/templates/company/supplier_part.html:130 order/models.py:379 -#: order/templates/order/order_base.html:140 part/bom.py:285 part/bom.py:313 -#: part/serializers.py:343 stock/templates/stock/item_base.html:225 +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 #: templates/email/overdue_purchase_order.html:16 -#: templates/js/translated/company.js:339 -#: templates/js/translated/company.js:502 -#: templates/js/translated/company.js:1194 templates/js/translated/part.js:1741 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 #: templates/js/translated/pricing.js:498 -#: templates/js/translated/purchase_order.js:1653 -#: templates/js/translated/table_filters.js:713 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 msgid "Supplier" msgstr "供应商" -#: company/models.py:565 +#: company/models.py:700 msgid "Select supplier" msgstr "选择供应商" -#: company/models.py:570 company/templates/company/supplier_part.html:140 -#: part/bom.py:286 part/bom.py:314 part/serializers.py:349 -#: templates/js/translated/company.js:338 templates/js/translated/part.js:1759 +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 #: templates/js/translated/pricing.js:510 -#: templates/js/translated/purchase_order.js:1813 -#: templates/js/translated/purchase_order.js:1996 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 msgid "SKU" msgstr "" -#: company/models.py:571 part/serializers.py:349 +#: company/models.py:706 part/serializers.py:436 msgid "Supplier stock keeping unit" msgstr "" -#: company/models.py:579 +#: company/models.py:714 msgid "Select manufacturer part" msgstr "选择制造商商品" -#: company/models.py:585 +#: company/models.py:720 msgid "URL for external supplier part link" msgstr "外部供货商商品链接URL" -#: company/models.py:591 +#: company/models.py:726 msgid "Supplier part description" msgstr "供应商商品描述" -#: company/models.py:596 company/templates/company/supplier_part.html:188 -#: part/admin.py:279 part/models.py:3800 part/templates/part/upload_bom.html:59 +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 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:418 +#: stock/serializers.py:501 msgid "Note" msgstr "备注" -#: company/models.py:600 part/models.py:1918 +#: company/models.py:735 part/models.py:1889 msgid "base cost" msgstr "" -#: company/models.py:600 part/models.py:1918 +#: company/models.py:735 part/models.py:1889 msgid "Minimum charge (e.g. stocking fee)" msgstr "最低收费(例如库存费)" -#: company/models.py:602 company/templates/company/supplier_part.html:161 -#: stock/admin.py:119 stock/models.py:701 -#: stock/templates/stock/item_base.html:241 -#: templates/js/translated/company.js:1256 -#: templates/js/translated/stock.js:2160 +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 msgid "Packaging" msgstr "打包" -#: company/models.py:602 +#: company/models.py:737 msgid "Part packaging" msgstr "商品打包" -#: company/models.py:606 templates/js/translated/company.js:1261 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:300 -#: templates/js/translated/purchase_order.js:827 -#: templates/js/translated/purchase_order.js:1073 -#: templates/js/translated/purchase_order.js:2052 -#: templates/js/translated/purchase_order.js:2069 +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 msgid "Pack Quantity" msgstr "" -#: company/models.py:607 +#: company/models.py:742 msgid "Total quantity supplied in a single pack. Leave empty for single items." msgstr "" -#: company/models.py:624 part/models.py:1920 +#: company/models.py:758 part/models.py:1891 msgid "multiple" msgstr "" -#: company/models.py:624 +#: company/models.py:758 msgid "Order multiple" msgstr "" -#: company/models.py:632 company/templates/company/supplier_part.html:115 -#: templates/email/build_order_required_stock.html:19 -#: templates/email/low_stock_notification.html:17 -#: templates/js/translated/bom.js:1127 templates/js/translated/build.js:2136 -#: templates/js/translated/build.js:3045 -#: templates/js/translated/model_renderers.js:205 -#: templates/js/translated/part.js:670 templates/js/translated/part.js:672 -#: templates/js/translated/part.js:677 -#: templates/js/translated/table_filters.js:286 -#: templates/js/translated/table_filters.js:492 -msgid "Available" -msgstr "空闲" - -#: company/models.py:633 +#: company/models.py:767 msgid "Quantity available from supplier" msgstr "" -#: company/models.py:637 +#: company/models.py:771 msgid "Availability Updated" msgstr "" -#: company/models.py:638 +#: company/models.py:772 msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:99 +#: company/serializers.py:153 msgid "Default currency used for this supplier" msgstr "该公司使用的默认货币" -#: company/templates/company/company_base.html:22 -#: templates/js/translated/purchase_order.js:228 +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 msgid "Create Purchase Order" msgstr "创建采购订单" -#: company/templates/company/company_base.html:28 +#: company/templates/company/company_base.html:27 msgid "Company actions" msgstr "" -#: company/templates/company/company_base.html:33 +#: company/templates/company/company_base.html:32 msgid "Edit company information" msgstr "编辑公司信息" -#: company/templates/company/company_base.html:34 -#: templates/js/translated/company.js:436 +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 msgid "Edit Company" msgstr "编辑公司信息" -#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:37 msgid "Delete company" msgstr "" -#: company/templates/company/company_base.html:39 -#: company/templates/company/company_base.html:163 +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 msgid "Delete Company" msgstr "删除该公司" -#: company/templates/company/company_base.html:48 +#: company/templates/company/company_base.html:47 #: company/templates/company/manufacturer_part.html:51 -#: company/templates/company/supplier_part.html:84 +#: 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 @@ -3925,72 +4158,79 @@ msgstr "删除该公司" msgid "Part image" msgstr "商品名称" -#: company/templates/company/company_base.html:56 +#: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" msgstr "上传新图片" -#: company/templates/company/company_base.html:59 +#: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" msgstr "从 URL 下载图片" -#: company/templates/company/company_base.html:61 +#: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" msgstr "" -#: company/templates/company/company_base.html:87 order/models.py:776 -#: order/models.py:1735 order/templates/order/return_order_base.html:132 -#: order/templates/order/sales_order_base.html:145 stock/models.py:720 -#: stock/models.py:721 stock/serializers.py:825 -#: stock/templates/stock/item_base.html:401 +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 -#: templates/js/translated/company.js:494 -#: templates/js/translated/return_order.js:284 -#: templates/js/translated/sales_order.js:772 -#: templates/js/translated/stock.js:2696 -#: templates/js/translated/table_filters.js:717 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 msgid "Customer" msgstr "客户" -#: company/templates/company/company_base.html:112 +#: company/templates/company/company_base.html:111 msgid "Uses default currency" msgstr "使用默认货币" -#: company/templates/company/company_base.html:126 +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "地址" + +#: company/templates/company/company_base.html:125 msgid "Phone" msgstr "电话" -#: company/templates/company/company_base.html:206 -#: part/templates/part/part_base.html:530 +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 msgid "Remove Image" msgstr "" -#: company/templates/company/company_base.html:207 +#: company/templates/company/company_base.html:206 msgid "Remove associated image from this company" msgstr "" -#: company/templates/company/company_base.html:209 -#: part/templates/part/part_base.html:533 +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" msgstr "" -#: company/templates/company/company_base.html:238 -#: part/templates/part/part_base.html:562 +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 msgid "Upload Image" msgstr "上传图片" -#: company/templates/company/company_base.html:253 -#: part/templates/part/part_base.html:616 +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 msgid "Download Image" msgstr "下载图片" #: company/templates/company/detail.html:15 #: company/templates/company/manufacturer_part_sidebar.html:7 -#: templates/InvenTree/search.html:120 templates/js/translated/search.js:189 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" msgstr "供应商商品" @@ -4000,166 +4240,158 @@ msgstr "创建新的供应商商品" #: company/templates/company/detail.html:20 #: company/templates/company/manufacturer_part.html:123 -#: part/templates/part/detail.html:381 +#: part/templates/part/detail.html:356 msgid "New Supplier Part" msgstr "新建供应商商品" -#: company/templates/company/detail.html:37 -#: company/templates/company/detail.html:85 -#: part/templates/part/category.html:183 -msgid "Order parts" -msgstr "订购商品" - -#: company/templates/company/detail.html:42 -#: company/templates/company/detail.html:90 -msgid "Delete parts" -msgstr "删除商品" - -#: company/templates/company/detail.html:43 -#: company/templates/company/detail.html:91 -msgid "Delete Parts" -msgstr "删除商品" - -#: company/templates/company/detail.html:62 templates/InvenTree/search.html:105 -#: templates/js/translated/search.js:193 +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 msgid "Manufacturer Parts" msgstr "制造商商品" -#: company/templates/company/detail.html:66 +#: company/templates/company/detail.html:45 msgid "Create new manufacturer part" msgstr "新建制造商商品" -#: company/templates/company/detail.html:67 part/templates/part/detail.html:411 +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" msgstr "新建制造商商品" -#: company/templates/company/detail.html:108 +#: company/templates/company/detail.html:65 msgid "Supplier Stock" msgstr "供货商库存" -#: company/templates/company/detail.html:118 +#: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 #: company/templates/company/supplier_part_sidebar.html:7 #: order/templates/order/order_base.html:13 #: order/templates/order/purchase_orders.html:8 #: order/templates/order/purchase_orders.html:12 -#: part/templates/part/detail.html:108 part/templates/part/part_sidebar.html:35 -#: templates/InvenTree/index.html:275 templates/InvenTree/search.html:199 -#: templates/InvenTree/settings/sidebar.html:55 -#: templates/js/translated/search.js:247 templates/navbar.html:50 -#: users/models.py:43 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 msgid "Purchase Orders" msgstr "采购订单" -#: company/templates/company/detail.html:122 +#: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 msgid "Create new purchase order" msgstr "新建采购订单" -#: company/templates/company/detail.html:123 +#: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" msgstr "新建采购订单" -#: company/templates/company/detail.html:146 +#: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 #: order/templates/order/sales_order_base.html:13 #: order/templates/order/sales_orders.html:8 #: order/templates/order/sales_orders.html:15 -#: part/templates/part/detail.html:131 part/templates/part/part_sidebar.html:39 -#: templates/InvenTree/index.html:307 templates/InvenTree/search.html:219 -#: templates/InvenTree/settings/sidebar.html:57 -#: templates/js/translated/search.js:261 templates/navbar.html:62 -#: users/models.py:44 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 msgid "Sales Orders" msgstr "销售订单" -#: company/templates/company/detail.html:150 +#: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" msgstr "新建销售订单" -#: company/templates/company/detail.html:151 +#: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" msgstr "新建销售订单" -#: company/templates/company/detail.html:173 -#: templates/js/translated/build.js:1976 +#: company/templates/company/detail.html:126 msgid "Assigned Stock" msgstr "" -#: company/templates/company/detail.html:191 +#: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 #: order/templates/order/return_order_base.html:13 #: order/templates/order/return_orders.html:8 #: order/templates/order/return_orders.html:15 -#: templates/InvenTree/settings/sidebar.html:59 -#: templates/js/translated/search.js:274 templates/navbar.html:65 -#: users/models.py:45 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 #, fuzzy #| msgid "Returned" msgid "Return Orders" msgstr "已退回" -#: company/templates/company/detail.html:195 +#: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 #, fuzzy #| msgid "Create new sales order" msgid "Create new return order" msgstr "新建销售订单" -#: company/templates/company/detail.html:196 +#: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 #, fuzzy #| msgid "New Build Order" msgid "New Return Order" msgstr "新建生产订单" -#: company/templates/company/detail.html:221 +#: company/templates/company/detail.html:168 msgid "Company Notes" msgstr "公司备注" -#: company/templates/company/detail.html:236 +#: company/templates/company/detail.html:183 #, fuzzy #| msgid "Company Notes" msgid "Company Contacts" msgstr "公司备注" -#: company/templates/company/detail.html:240 -#: company/templates/company/detail.html:241 +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 #, fuzzy #| msgid "Contact" msgid "Add Contact" msgstr "联系人" -#: company/templates/company/index.html:8 -msgid "Supplier List" -msgstr "供应商列表" +#: company/templates/company/detail.html:206 +#, fuzzy +#| msgid "Company address" +msgid "Company addresses" +msgstr "公司地址" -#: company/templates/company/manufacturer_part.html:15 company/views.py:38 +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +#, fuzzy +#| msgid "Address" +msgid "Add Address" +msgstr "地址" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 msgid "Manufacturers" msgstr "制造商" #: company/templates/company/manufacturer_part.html:35 -#: company/templates/company/supplier_part.html:228 -#: part/templates/part/detail.html:111 part/templates/part/part_base.html:85 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" msgstr "订购商品" #: company/templates/company/manufacturer_part.html:39 -#: templates/js/translated/company.js:1001 +#: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" msgstr "编辑制造商商品" #: company/templates/company/manufacturer_part.html:43 -#: templates/js/translated/company.js:1002 +#: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" msgstr "删除生产商商品" #: company/templates/company/manufacturer_part.html:65 -#: company/templates/company/supplier_part.html:98 +#: company/templates/company/supplier_part.html:97 msgid "Internal Part" msgstr "内部商品" @@ -4168,46 +4400,28 @@ msgid "No manufacturer information available" msgstr "" #: company/templates/company/manufacturer_part.html:119 -#: company/templates/company/supplier_part.html:15 company/views.py:32 +#: company/templates/company/supplier_part.html:15 company/views.py:31 #: part/admin.py:60 part/templates/part/part_sidebar.html:33 #: templates/InvenTree/search.html:190 templates/navbar.html:48 msgid "Suppliers" msgstr "供应商" -#: company/templates/company/manufacturer_part.html:136 -#: part/templates/part/detail.html:392 -msgid "Delete supplier parts" -msgstr "删除供应商商品" - -#: company/templates/company/manufacturer_part.html:136 -#: company/templates/company/manufacturer_part.html:183 -#: part/templates/part/detail.html:393 part/templates/part/detail.html:423 -#: templates/js/translated/forms.js:506 templates/js/translated/helpers.js:105 -#: templates/js/translated/part.js:370 templates/js/translated/pricing.js:629 -#: templates/js/translated/stock.js:216 users/models.py:247 -msgid "Delete" -msgstr "删除" - -#: company/templates/company/manufacturer_part.html:166 +#: company/templates/company/manufacturer_part.html:156 #: company/templates/company/manufacturer_part_sidebar.html:5 #: part/templates/part/category_sidebar.html:20 -#: part/templates/part/detail.html:208 part/templates/part/part_sidebar.html:8 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 msgid "Parameters" msgstr "参数" -#: company/templates/company/manufacturer_part.html:170 -#: part/templates/part/detail.html:213 +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 #: templates/InvenTree/settings/category.html:12 -#: templates/InvenTree/settings/part_parameters.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" msgstr "新建参数" -#: company/templates/company/manufacturer_part.html:183 -msgid "Delete parameters" -msgstr "删除参数" - -#: company/templates/company/manufacturer_part.html:226 -#: templates/js/translated/part.js:1396 +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 msgid "Add Parameter" msgstr "添加参数" @@ -4233,106 +4447,113 @@ msgstr "" msgid "Contacts" msgstr "联系人" +#: company/templates/company/sidebar.html:35 +#, fuzzy +#| msgid "Address" +msgid "Addresses" +msgstr "地址" + #: company/templates/company/supplier_part.html:7 -#: company/templates/company/supplier_part.html:24 stock/models.py:684 -#: stock/templates/stock/item_base.html:234 -#: templates/js/translated/company.js:1210 -#: templates/js/translated/purchase_order.js:747 -#: templates/js/translated/stock.js:2016 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 msgid "Supplier Part" msgstr "供应商商品" -#: company/templates/company/supplier_part.html:51 +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 msgid "Supplier part actions" msgstr "" +#: company/templates/company/supplier_part.html:55 #: company/templates/company/supplier_part.html:56 -#: company/templates/company/supplier_part.html:57 -#: company/templates/company/supplier_part.html:229 -#: part/templates/part/detail.html:112 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 msgid "Order Part" msgstr "订购商品" +#: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 -#: company/templates/company/supplier_part.html:62 msgid "Update Availability" msgstr "" +#: company/templates/company/supplier_part.html:63 #: company/templates/company/supplier_part.html:64 -#: company/templates/company/supplier_part.html:65 -#: templates/js/translated/company.js:283 +#: templates/js/translated/company.js:294 msgid "Edit Supplier Part" msgstr "编辑供应商商品" +#: company/templates/company/supplier_part.html:68 #: company/templates/company/supplier_part.html:69 -#: company/templates/company/supplier_part.html:70 -#: templates/js/translated/company.js:258 +#: templates/js/translated/company.js:269 msgid "Duplicate Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:74 +#: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:75 +#: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:134 +#: company/templates/company/supplier_part.html:133 msgid "No supplier information available" msgstr "" -#: company/templates/company/supplier_part.html:207 +#: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" msgstr "供货商商品库存" -#: company/templates/company/supplier_part.html:210 -#: part/templates/part/detail.html:24 stock/templates/stock/location.html:197 +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" msgstr "" -#: company/templates/company/supplier_part.html:211 -#: part/templates/part/detail.html:25 stock/templates/stock/location.html:198 -#: templates/js/translated/stock.js:504 +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 msgid "New Stock Item" msgstr "" -#: company/templates/company/supplier_part.html:224 +#: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" msgstr "供应商商品订单" -#: company/templates/company/supplier_part.html:249 +#: company/templates/company/supplier_part.html:246 msgid "Pricing Information" msgstr "价格信息" -#: company/templates/company/supplier_part.html:254 -#: templates/js/translated/company.js:387 +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 #: templates/js/translated/pricing.js:684 msgid "Add Price Break" msgstr "" -#: company/templates/company/supplier_part.html:281 +#: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" msgstr "" -#: company/templates/company/supplier_part.html:292 +#: company/templates/company/supplier_part.html:287 msgid "Link Barcode to Supplier Part" msgstr "" -#: company/templates/company/supplier_part.html:365 +#: company/templates/company/supplier_part.html:359 msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/tasks.py:293 -#: part/templates/part/category.html:199 -#: part/templates/part/category_sidebar.html:17 stock/admin.py:47 -#: stock/templates/stock/location.html:168 -#: stock/templates/stock/location.html:182 -#: stock/templates/stock/location.html:194 +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 -#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1034 -#: templates/js/translated/search.js:214 templates/js/translated/stock.js:2514 -#: users/models.py:41 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 msgid "Stock Items" msgstr "库存项" @@ -4340,104 +4561,99 @@ msgstr "库存项" msgid "Supplier Part Pricing" msgstr "供应商商品价格" -#: company/views.py:33 +#: company/views.py:32 msgid "New Supplier" msgstr "新增供应商" -#: company/views.py:39 +#: company/views.py:38 msgid "New Manufacturer" msgstr "新建制造商" -#: company/views.py:44 templates/InvenTree/search.html:210 +#: company/views.py:43 templates/InvenTree/search.html:210 #: templates/navbar.html:60 msgid "Customers" msgstr "客户信息" -#: company/views.py:45 +#: company/views.py:44 msgid "New Customer" msgstr "新建客户" -#: company/views.py:52 templates/js/translated/search.js:234 +#: company/views.py:51 templates/js/translated/search.js:192 msgid "Companies" msgstr "公司" -#: company/views.py:53 +#: company/views.py:52 msgid "New Company" msgstr "新建公司信息" -#: label/models.py:104 +#: label/models.py:117 msgid "Label name" msgstr "标签名称" -#: label/models.py:111 +#: label/models.py:124 msgid "Label description" msgstr "标签说明" -#: label/models.py:118 +#: label/models.py:131 msgid "Label" msgstr "标签" -#: label/models.py:119 +#: label/models.py:132 msgid "Label template file" msgstr "标签模板文件" -#: label/models.py:125 report/models.py:273 +#: label/models.py:138 report/models.py:311 msgid "Enabled" msgstr "已启用" -#: label/models.py:126 +#: label/models.py:139 msgid "Label template is enabled" msgstr "标签模板已启用" -#: label/models.py:131 +#: label/models.py:144 msgid "Width [mm]" msgstr "宽度 [mm]" -#: label/models.py:132 +#: label/models.py:145 msgid "Label width, specified in mm" msgstr "标注宽度,以毫米为单位。" -#: label/models.py:138 +#: label/models.py:151 msgid "Height [mm]" msgstr "高度 [mm]" -#: label/models.py:139 +#: label/models.py:152 msgid "Label height, specified in mm" msgstr "标注高度,以毫米为单位。" -#: label/models.py:145 report/models.py:266 +#: label/models.py:158 report/models.py:304 msgid "Filename Pattern" msgstr "文件名样式" -#: label/models.py:146 +#: label/models.py:159 msgid "Pattern for generating label filenames" msgstr "" -#: label/models.py:242 -msgid "Query filters (comma-separated list of key=value pairs)," +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +#, fuzzy +#| msgid "Query filters (comma-separated list of key=value pairs)," +msgid "Query filters (comma-separated list of key=value pairs)" msgstr "查询筛选器 (逗号分隔的键值对列表)" -#: label/models.py:243 label/models.py:284 label/models.py:312 -#: report/models.py:294 report/models.py:452 report/models.py:490 -#: report/models.py:528 +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 msgid "Filters" msgstr "筛选器" -#: label/models.py:283 -msgid "Query filters (comma-separated list of key=value pairs" -msgstr "查询筛选器 (逗号分隔的键值对列表" - -#: label/models.py:311 -msgid "Part query filters (comma-separated value of key=value pairs)" -msgstr "商品查询筛选器 (逗号分隔的键值对列表)" - #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 -#: label/templates/label/stocklocation/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 #, fuzzy #| msgid "Part QR Code" -msgid "QC Code" +msgid "QR Code" msgstr "商品二维码" #: label/templates/label/part/part_label_code128.html:31 @@ -4446,71 +4662,71 @@ msgstr "商品二维码" msgid "QR code" msgstr "" -#: order/admin.py:30 order/models.py:70 +#: order/admin.py:29 order/models.py:72 #: report/templates/report/inventree_po_report_base.html:31 #: report/templates/report/inventree_so_report_base.html:31 #: templates/js/translated/order.js:327 -#: templates/js/translated/purchase_order.js:2093 -#: templates/js/translated/sales_order.js:1827 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 msgid "Total Price" msgstr "" -#: order/api.py:239 +#: order/api.py:231 msgid "No matching purchase order found" msgstr "" -#: order/api.py:1449 order/models.py:1175 order/models.py:1259 +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 #: 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:177 +#: stock/templates/stock/item_base.html:176 #: templates/email/overdue_purchase_order.html:15 -#: templates/js/translated/part.js:1718 templates/js/translated/pricing.js:790 -#: templates/js/translated/purchase_order.js:154 -#: templates/js/translated/purchase_order.js:748 -#: templates/js/translated/purchase_order.js:1637 -#: templates/js/translated/stock.js:1996 templates/js/translated/stock.js:2644 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 msgid "Purchase Order" msgstr "" -#: order/api.py:1453 order/models.py:1906 order/models.py:1952 +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 #: 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:269 -#: templates/js/translated/stock.js:2678 +#: templates/js/translated/return_order.js:278 +#: templates/js/translated/stock.js:2912 #, fuzzy #| msgid "Returned" msgid "Return Order" msgstr "已退回" -#: order/api.py:1455 templates/js/translated/sales_order.js:1030 +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 msgid "Unknown" msgstr "" -#: order/models.py:71 +#: order/models.py:73 #, fuzzy #| msgid "User or group responsible for this order" msgid "Total price for this order" msgstr "负责此订单的用户或群组" -#: order/models.py:76 order/serializers.py:48 +#: order/models.py:78 order/serializers.py:50 #, fuzzy #| msgid "Currency" msgid "Order Currency" msgstr "货币" -#: order/models.py:78 order/serializers.py:49 +#: order/models.py:80 order/serializers.py:51 msgid "Currency for this order (leave blank to use company default)" msgstr "" -#: order/models.py:207 +#: order/models.py:206 #, fuzzy #| msgid "Build output does not match the parent build" msgid "Contact does not match selected company" msgstr "生产产出与对应生产不匹配" -#: order/models.py:229 +#: order/models.py:226 #, fuzzy #| msgid "Description (optional)" msgid "Order description (optional)" @@ -4522,190 +4738,196 @@ msgstr "描述 (可选)" msgid "Select project code for this order" msgstr "负责此订单的用户或群组" -#: order/models.py:233 order/models.py:1091 order/models.py:1451 +#: order/models.py:234 order/models.py:1093 order/models.py:1451 msgid "Link to external page" msgstr "" -#: order/models.py:238 +#: order/models.py:239 msgid "Expected date for order delivery. Order will be overdue after this date." msgstr "" -#: order/models.py:247 +#: order/models.py:248 msgid "Created By" msgstr "" -#: order/models.py:254 +#: order/models.py:255 msgid "User or group responsible for this order" msgstr "负责此订单的用户或群组" -#: order/models.py:264 +#: order/models.py:265 #, fuzzy #| msgid "Priority of this build order" msgid "Point of contact for this order" msgstr "此构建订单的优先级" -#: order/models.py:357 order/models.py:763 +#: order/models.py:274 +#, fuzzy +#| msgid "User or group responsible for this order" +msgid "Company address for this order" +msgstr "负责此订单的用户或群组" + +#: order/models.py:364 order/models.py:769 msgid "Order reference" msgstr "" -#: order/models.py:365 order/models.py:788 +#: order/models.py:372 order/models.py:794 msgid "Purchase order status" msgstr "" -#: order/models.py:380 +#: order/models.py:387 msgid "Company from which the items are being ordered" msgstr "订购该商品的公司" -#: order/models.py:388 order/templates/order/order_base.html:152 -#: templates/js/translated/purchase_order.js:1662 +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 msgid "Supplier Reference" msgstr "" -#: order/models.py:388 +#: order/models.py:395 msgid "Supplier order reference code" msgstr "" -#: order/models.py:395 +#: order/models.py:402 msgid "received by" msgstr "" -#: order/models.py:400 order/models.py:1758 +#: order/models.py:407 order/models.py:1759 msgid "Issue Date" msgstr "" -#: order/models.py:401 order/models.py:1759 +#: order/models.py:408 order/models.py:1760 msgid "Date order was issued" msgstr "" -#: order/models.py:407 order/models.py:1765 +#: order/models.py:414 order/models.py:1766 msgid "Date order was completed" msgstr "" -#: order/models.py:442 +#: order/models.py:449 msgid "Part supplier must match PO supplier" msgstr "" -#: order/models.py:603 +#: order/models.py:610 msgid "Quantity must be a positive number" msgstr "数量必须大于0" -#: order/models.py:777 +#: order/models.py:783 msgid "Company to which the items are being sold" msgstr "向其出售该商品的公司" -#: order/models.py:796 order/models.py:1752 +#: order/models.py:802 order/models.py:1753 msgid "Customer Reference " msgstr "" -#: order/models.py:796 order/models.py:1753 +#: order/models.py:802 order/models.py:1754 msgid "Customer order reference code" msgstr "" -#: order/models.py:798 order/models.py:1405 -#: templates/js/translated/sales_order.js:831 -#: templates/js/translated/sales_order.js:1012 +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 msgid "Shipment Date" msgstr "" -#: order/models.py:805 +#: order/models.py:811 msgid "shipped by" msgstr "" -#: order/models.py:854 +#: order/models.py:860 msgid "Order cannot be completed as no parts have been assigned" msgstr "" -#: order/models.py:858 +#: order/models.py:864 #, fuzzy #| msgid "Build Order is ready to mark as completed" msgid "Only an open order can be marked as complete" msgstr "构建订单已准备好标记为已完成" -#: order/models.py:861 templates/js/translated/sales_order.js:491 +#: order/models.py:867 templates/js/translated/sales_order.js:503 msgid "Order cannot be completed as there are incomplete shipments" msgstr "" -#: order/models.py:864 +#: order/models.py:870 msgid "Order cannot be completed as there are incomplete line items" msgstr "" -#: order/models.py:1071 +#: order/models.py:1074 msgid "Item quantity" msgstr "" -#: order/models.py:1084 +#: order/models.py:1086 msgid "Line item reference" msgstr "" -#: order/models.py:1086 +#: order/models.py:1088 msgid "Line item notes" msgstr "" -#: order/models.py:1097 +#: order/models.py:1099 msgid "Target date for this line item (leave blank to use the target date from the order)" msgstr "" -#: order/models.py:1115 +#: order/models.py:1117 #, fuzzy #| msgid "Description (optional)" msgid "Line item description (optional)" msgstr "描述 (可选)" -#: order/models.py:1120 +#: order/models.py:1122 msgid "Context" msgstr "" -#: order/models.py:1121 +#: order/models.py:1123 msgid "Additional context for this line" msgstr "" -#: order/models.py:1130 +#: order/models.py:1132 msgid "Unit price" msgstr "" -#: order/models.py:1160 +#: order/models.py:1162 msgid "Supplier part must match supplier" msgstr "" -#: order/models.py:1168 +#: order/models.py:1170 msgid "deleted" msgstr "" -#: order/models.py:1174 order/models.py:1259 order/models.py:1300 -#: order/models.py:1399 order/models.py:1548 order/models.py:1905 -#: order/models.py:1952 templates/js/translated/sales_order.js:1474 +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 msgid "Order" msgstr "" -#: order/models.py:1193 +#: order/models.py:1194 msgid "Supplier part" msgstr "供应商商品" -#: order/models.py:1200 order/templates/order/order_base.html:200 -#: templates/js/translated/part.js:1841 templates/js/translated/part.js:1872 -#: templates/js/translated/purchase_order.js:1276 -#: templates/js/translated/purchase_order.js:2137 -#: templates/js/translated/return_order.js:748 -#: templates/js/translated/table_filters.js:90 -#: templates/js/translated/table_filters.js:515 +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 msgid "Received" msgstr "" -#: order/models.py:1201 +#: order/models.py:1202 msgid "Number of items received" msgstr "" -#: order/models.py:1208 stock/models.py:823 stock/serializers.py:252 -#: stock/templates/stock/item_base.html:184 -#: templates/js/translated/stock.js:2047 +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 msgid "Purchase Price" msgstr "采购价格" -#: order/models.py:1209 +#: order/models.py:1210 msgid "Unit purchase price" msgstr "" -#: order/models.py:1222 +#: order/models.py:1223 msgid "Where does the Purchaser want this item to be stored?" msgstr "" @@ -4718,7 +4940,7 @@ msgid "Only salable parts can be assigned to a sales order" msgstr "" #: order/models.py:1319 part/templates/part/part_pricing.html:107 -#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:943 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 msgid "Sale Price" msgstr "销售价格" @@ -4734,7 +4956,7 @@ msgstr "" msgid "Date of shipment" msgstr "" -#: order/models.py:1411 templates/js/translated/sales_order.js:1024 +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 msgid "Delivery Date" msgstr "" @@ -4750,8 +4972,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1427 order/models.py:1624 order/serializers.py:1247 -#: order/serializers.py:1375 templates/js/translated/model_renderers.js:415 +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 msgid "Shipment" msgstr "" @@ -4787,241 +5009,241 @@ msgstr "" msgid "Stock item has not been assigned" msgstr "" -#: order/models.py:1589 +#: order/models.py:1591 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:1591 +#: order/models.py:1593 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:1594 +#: order/models.py:1596 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1604 order/serializers.py:1109 +#: order/models.py:1606 order/serializers.py:1146 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:1607 +#: order/models.py:1609 msgid "Sales order does not match shipment" msgstr "" -#: order/models.py:1608 +#: order/models.py:1610 msgid "Shipment does not match sales order" msgstr "" -#: order/models.py:1616 +#: order/models.py:1618 msgid "Line" msgstr "" -#: order/models.py:1625 +#: order/models.py:1627 msgid "Sales order shipment reference" msgstr "" -#: order/models.py:1638 order/models.py:1913 -#: templates/js/translated/return_order.js:706 +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 msgid "Item" msgstr "" -#: order/models.py:1639 +#: order/models.py:1641 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:1642 +#: order/models.py:1644 msgid "Enter stock allocation quantity" msgstr "" -#: order/models.py:1722 +#: order/models.py:1723 #, fuzzy #| msgid "Build Order Reference" msgid "Return Order reference" msgstr "相关生产订单" -#: order/models.py:1736 +#: order/models.py:1737 #, fuzzy #| msgid "Company from which the items are being ordered" msgid "Company from which items are being returned" msgstr "订购该商品的公司" -#: order/models.py:1747 +#: order/models.py:1748 msgid "Return order status" msgstr "" -#: order/models.py:1898 +#: order/models.py:1895 msgid "Only serialized items can be assigned to a Return Order" msgstr "" -#: order/models.py:1914 +#: order/models.py:1911 #, fuzzy #| msgid "Returned from customer" msgid "Select item to return from customer" msgstr "从客户退货" -#: order/models.py:1919 +#: order/models.py:1916 msgid "Received Date" msgstr "" -#: order/models.py:1920 +#: order/models.py:1917 msgid "The date this this return item was received" msgstr "" -#: order/models.py:1931 templates/js/translated/return_order.js:717 -#: templates/js/translated/table_filters.js:93 +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 msgid "Outcome" msgstr "" -#: order/models.py:1931 +#: order/models.py:1928 msgid "Outcome for this line item" msgstr "" -#: order/models.py:1937 +#: order/models.py:1934 msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:246 +#: order/serializers.py:258 msgid "Order cannot be cancelled" msgstr "无法取消订单" -#: order/serializers.py:261 order/serializers.py:1127 +#: order/serializers.py:273 order/serializers.py:1164 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:272 order/serializers.py:1138 +#: order/serializers.py:283 order/serializers.py:1174 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:385 +#: order/serializers.py:396 msgid "Order is not open" msgstr "" -#: order/serializers.py:403 +#: order/serializers.py:414 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:421 +#: order/serializers.py:432 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:426 +#: order/serializers.py:437 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:432 +#: order/serializers.py:443 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:433 +#: order/serializers.py:444 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:471 order/serializers.py:1215 +#: order/serializers.py:482 order/serializers.py:1250 msgid "Line Item" msgstr "" -#: order/serializers.py:477 +#: order/serializers.py:488 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:487 order/serializers.py:606 order/serializers.py:1588 +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:506 templates/js/translated/purchase_order.js:1100 +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:514 templates/js/translated/purchase_order.js:1124 +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:527 templates/js/translated/barcode.js:52 +#: order/serializers.py:538 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "条形码" -#: order/serializers.py:528 +#: order/serializers.py:539 #, fuzzy #| msgid "Scan Barcode" msgid "Scanned barcode" msgstr "扫描条形码" -#: order/serializers.py:544 +#: order/serializers.py:555 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:568 +#: order/serializers.py:579 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:622 order/serializers.py:1603 +#: order/serializers.py:633 order/serializers.py:1638 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:639 +#: order/serializers.py:650 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:650 +#: order/serializers.py:661 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:949 +#: order/serializers.py:986 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1006 +#: order/serializers.py:1043 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1070 order/serializers.py:1224 +#: order/serializers.py:1107 order/serializers.py:1259 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1092 +#: order/serializers.py:1129 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1237 +#: order/serializers.py:1272 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1259 order/serializers.py:1383 +#: order/serializers.py:1294 order/serializers.py:1418 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1262 order/serializers.py:1386 +#: order/serializers.py:1297 order/serializers.py:1421 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1316 +#: order/serializers.py:1351 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1326 +#: order/serializers.py:1361 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1554 +#: order/serializers.py:1591 msgid "Return order line item" msgstr "" -#: order/serializers.py:1561 +#: order/serializers.py:1597 #, fuzzy #| msgid "Build output does not match Build Order" msgid "Line item does not match return order" msgstr "生产产出与订单不匹配" -#: order/serializers.py:1564 +#: order/serializers.py:1600 #, fuzzy #| msgid "This build output has already been completed" msgid "Line item has already been received" msgstr "此生产产出已经完成" -#: order/serializers.py:1596 +#: order/serializers.py:1631 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1677 +#: order/serializers.py:1710 #, fuzzy #| msgid "Uses default currency" msgid "Line price currency" @@ -5036,11 +5258,11 @@ msgstr "" msgid "Purchase order {po} is now overdue" msgstr "" -#: order/tasks.py:89 +#: order/tasks.py:87 msgid "Overdue Sales Order" msgstr "" -#: order/tasks.py:94 +#: order/tasks.py:92 #, python-brace-format msgid "Sales order {so} is now overdue" msgstr "" @@ -5050,26 +5272,26 @@ msgid "Print purchase order report" msgstr "" #: order/templates/order/order_base.html:53 -#: order/templates/order/return_order_base.html:63 -#: order/templates/order/sales_order_base.html:63 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 msgid "Export order to file" msgstr "" #: order/templates/order/order_base.html:59 -#: order/templates/order/return_order_base.html:73 -#: order/templates/order/sales_order_base.html:72 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 msgid "Order actions" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/return_order_base.html:77 -#: order/templates/order/sales_order_base.html:76 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 msgid "Edit order" msgstr "" #: order/templates/order/order_base.html:68 -#: order/templates/order/return_order_base.html:79 -#: order/templates/order/sales_order_base.html:78 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 msgid "Cancel order" msgstr "取消订单" @@ -5079,96 +5301,88 @@ msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 #: order/templates/order/return_order_base.html:83 -#: order/templates/order/return_order_base.html:84 +#: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 -#: order/templates/order/sales_order_base.html:85 #, fuzzy #| msgid "Build Order" msgid "Issue Order" msgstr "生产订单" #: order/templates/order/order_base.html:83 -msgid "Receive items" -msgstr "" - -#: order/templates/order/order_base.html:85 -msgid "Receive Items" -msgstr "" - -#: order/templates/order/order_base.html:87 -#: order/templates/order/return_order_base.html:87 +#: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" msgstr "" -#: order/templates/order/order_base.html:88 -#: order/templates/order/return_order_base.html:88 -#: order/templates/order/sales_order_base.html:94 +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 msgid "Complete Order" msgstr "" -#: order/templates/order/order_base.html:95 +#: order/templates/order/order_base.html:91 #, fuzzy #| msgid "Supplier part" msgid "Supplier part thumbnail" msgstr "供应商商品" -#: order/templates/order/order_base.html:110 -#: order/templates/order/return_order_base.html:102 -#: order/templates/order/sales_order_base.html:107 +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 msgid "Order Reference" msgstr "" -#: order/templates/order/order_base.html:115 -#: order/templates/order/return_order_base.html:107 -#: order/templates/order/sales_order_base.html:112 +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 msgid "Order Description" msgstr "" -#: order/templates/order/order_base.html:122 -#: order/templates/order/return_order_base.html:114 -#: order/templates/order/sales_order_base.html:119 +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 msgid "Order Status" msgstr "" -#: order/templates/order/order_base.html:145 +#: order/templates/order/order_base.html:141 msgid "No suppplier information available" msgstr "" -#: order/templates/order/order_base.html:158 -#: order/templates/order/sales_order_base.html:158 +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" msgstr "" -#: order/templates/order/order_base.html:164 -#: order/templates/order/sales_order_base.html:164 -#: order/templates/order/sales_order_base.html:174 +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 msgid "Incomplete" msgstr "" -#: order/templates/order/order_base.html:183 -#: order/templates/order/return_order_base.html:158 +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" msgstr "" -#: order/templates/order/order_base.html:221 +#: order/templates/order/order_base.html:224 msgid "Total cost" msgstr "" -#: order/templates/order/order_base.html:225 -#: order/templates/order/return_order_base.html:193 -#: order/templates/order/sales_order_base.html:233 +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" msgstr "" -#: order/templates/order/order_base.html:331 +#: order/templates/order/order_base.html:318 #, fuzzy #| msgid "Purchase Orders" msgid "Purchase Order QR Code" msgstr "采购订单" -#: order/templates/order/order_base.html:343 +#: order/templates/order/order_base.html:330 #, fuzzy #| msgid "Create Purchase Order" msgid "Link Barcode to Purchase Order" @@ -5223,13 +5437,13 @@ msgstr "" #: part/templates/part/import_wizard/ajax_match_references.html:42 #: part/templates/part/import_wizard/match_fields.html:71 #: part/templates/part/import_wizard/match_references.html:49 -#: templates/js/translated/bom.js:132 templates/js/translated/build.js:512 -#: templates/js/translated/build.js:2348 -#: templates/js/translated/purchase_order.js:692 -#: templates/js/translated/purchase_order.js:1206 -#: templates/js/translated/return_order.js:494 -#: templates/js/translated/sales_order.js:1097 -#: templates/js/translated/stock.js:681 templates/js/translated/stock.js:850 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 #: templates/patterns/wizard/match_fields.html:70 msgid "Remove row" msgstr "移除行" @@ -5290,9 +5504,9 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 #: order/templates/order/sales_order_detail.html:24 -#: templates/js/translated/purchase_order.js:419 -#: templates/js/translated/return_order.js:447 -#: templates/js/translated/sales_order.js:222 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 msgid "Add Line Item" msgstr "" @@ -5303,32 +5517,25 @@ msgstr "" msgid "Receive Line Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:49 #: order/templates/order/purchase_order_detail.html:50 -#, fuzzy -#| msgid "Delete parameters" -msgid "Delete Line Items" -msgstr "删除参数" - -#: order/templates/order/purchase_order_detail.html:66 -#: order/templates/order/return_order_detail.html:47 -#: order/templates/order/sales_order_detail.html:43 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 msgid "Extra Lines" msgstr "" -#: order/templates/order/purchase_order_detail.html:72 -#: order/templates/order/return_order_detail.html:53 -#: order/templates/order/sales_order_detail.html:49 +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" msgstr "" -#: order/templates/order/purchase_order_detail.html:92 +#: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:117 -#: order/templates/order/return_order_detail.html:89 -#: order/templates/order/sales_order_detail.html:149 +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 msgid "Order Notes" msgstr "" @@ -5337,44 +5544,44 @@ msgstr "" msgid "Customer logo thumbnail" msgstr "" -#: order/templates/order/return_order_base.html:61 +#: order/templates/order/return_order_base.html:60 #, fuzzy #| msgid "Print build order report" msgid "Print return order report" msgstr "打印构建订单报告" -#: order/templates/order/return_order_base.html:65 -#: order/templates/order/sales_order_base.html:65 +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 msgid "Print packing list" msgstr "" -#: order/templates/order/return_order_base.html:139 -#: order/templates/order/sales_order_base.html:152 -#: templates/js/translated/return_order.js:297 -#: templates/js/translated/sales_order.js:785 +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 msgid "Customer Reference" msgstr "" -#: order/templates/order/return_order_base.html:189 -#: order/templates/order/sales_order_base.html:229 +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 #: part/templates/part/part_pricing.html:32 #: part/templates/part/part_pricing.html:58 #: part/templates/part/part_pricing.html:99 #: part/templates/part/part_pricing.html:114 -#: templates/js/translated/part.js:1046 -#: templates/js/translated/purchase_order.js:1712 -#: templates/js/translated/return_order.js:369 -#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 msgid "Total Cost" msgstr "" -#: order/templates/order/return_order_base.html:257 +#: order/templates/order/return_order_base.html:263 #, fuzzy #| msgid "Returned" msgid "Return Order QR Code" msgstr "已退回" -#: order/templates/order/return_order_base.html:269 +#: order/templates/order/return_order_base.html:275 #, fuzzy #| msgid "Create Purchase Order" msgid "Link Barcode to Return Order" @@ -5386,39 +5593,39 @@ msgstr "创建采购订单" msgid "Order Details" msgstr "生产订单详情" -#: order/templates/order/sales_order_base.html:61 +#: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" msgstr "" +#: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 -#: order/templates/order/sales_order_base.html:90 #, fuzzy #| msgid "Match Items" msgid "Ship Items" msgstr "匹配项" -#: order/templates/order/sales_order_base.html:93 -#: templates/js/translated/sales_order.js:469 +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 msgid "Complete Sales Order" msgstr "" -#: order/templates/order/sales_order_base.html:132 +#: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:170 -#: order/templates/order/sales_order_detail.html:105 +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" msgstr "" -#: order/templates/order/sales_order_base.html:306 +#: order/templates/order/sales_order_base.html:312 #, fuzzy #| msgid "Sales Order" msgid "Sales Order QR Code" msgstr "销售订单" -#: order/templates/order/sales_order_base.html:318 +#: order/templates/order/sales_order_base.html:324 #, fuzzy #| msgid "New Sales Order" msgid "Link Barcode to Sales Order" @@ -5428,18 +5635,17 @@ msgstr "新建销售订单" msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:71 -#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:332 +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" msgstr "" -#: order/templates/order/sales_order_detail.html:75 -#: templates/attachment_table.html:6 templates/js/translated/bom.js:1236 -#: templates/js/translated/build.js:2249 +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" -#: order/templates/order/sales_order_detail.html:84 +#: order/templates/order/sales_order_detail.html:80 msgid "New Shipment" msgstr "" @@ -5447,64 +5653,65 @@ msgstr "" msgid "Match Supplier Parts" msgstr "" -#: order/views.py:393 +#: order/views.py:389 msgid "Sales order not found" msgstr "" -#: order/views.py:399 +#: order/views.py:395 msgid "Price not found" msgstr "" -#: order/views.py:402 +#: order/views.py:398 #, python-brace-format msgid "Updated {part} unit-price to {price}" msgstr "" -#: order/views.py:407 +#: order/views.py:403 #, python-brace-format msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:33 part/admin.py:273 part/models.py:3666 part/tasks.py:288 -#: stock/admin.py:101 +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 msgid "Part ID" msgstr "商品ID" -#: part/admin.py:34 part/admin.py:275 part/models.py:3670 part/tasks.py:289 -#: stock/admin.py:102 +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 msgid "Part Name" msgstr "" -#: part/admin.py:35 part/tasks.py:290 +#: part/admin.py:35 part/stocktake.py:219 msgid "Part Description" msgstr "" -#: part/admin.py:36 part/models.py:888 part/templates/part/part_base.html:271 -#: templates/js/translated/part.js:1200 templates/js/translated/part.js:2233 -#: templates/js/translated/stock.js:1795 +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 msgid "IPN" msgstr "" -#: part/admin.py:37 part/models.py:895 part/templates/part/part_base.html:279 -#: report/models.py:179 templates/js/translated/part.js:1205 -#: templates/js/translated/part.js:2239 +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 msgid "Revision" msgstr "" -#: part/admin.py:38 part/admin.py:198 part/models.py:874 -#: part/templates/part/category.html:93 part/templates/part/part_base.html:300 +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" msgstr "关键词" -#: part/admin.py:42 part/admin.py:192 part/tasks.py:291 +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 msgid "Category ID" msgstr "类别 ID" -#: part/admin.py:43 part/admin.py:193 part/tasks.py:292 +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 msgid "Category Name" msgstr "" -#: part/admin.py:44 part/admin.py:197 +#: part/admin.py:44 part/admin.py:194 msgid "Default Location ID" msgstr "" @@ -5512,24 +5719,24 @@ msgstr "" msgid "Default Supplier ID" msgstr "" -#: part/admin.py:46 part/models.py:863 part/templates/part/part_base.html:179 +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 msgid "Variant Of" msgstr "" -#: part/admin.py:47 part/models.py:979 part/templates/part/part_base.html:205 +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 msgid "Minimum Stock" msgstr "最低库存" -#: part/admin.py:61 part/templates/part/part_base.html:199 -#: templates/js/translated/company.js:1299 -#: templates/js/translated/table_filters.js:301 +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 msgid "In Stock" msgstr "" -#: part/admin.py:62 part/bom.py:178 part/templates/part/part_base.html:212 -#: templates/js/translated/bom.js:1167 templates/js/translated/build.js:2191 -#: templates/js/translated/part.js:687 templates/js/translated/part.js:2123 -#: templates/js/translated/table_filters.js:140 +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" @@ -5537,115 +5744,108 @@ msgstr "" msgid "Used In" msgstr "" -#: part/admin.py:64 templates/js/translated/build.js:2203 -#: templates/js/translated/build.js:2465 templates/js/translated/build.js:3052 -#: templates/js/translated/sales_order.js:1906 -#: templates/js/translated/table_filters.js:488 -msgid "Allocated" -msgstr "" - -#: part/admin.py:65 part/templates/part/part_base.html:243 stock/admin.py:124 -#: templates/js/translated/part.js:692 templates/js/translated/part.js:2127 +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 msgid "Building" msgstr "" -#: part/admin.py:66 part/models.py:2929 templates/js/translated/part.js:943 +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 msgid "Minimum Cost" msgstr "" -#: part/admin.py:67 part/models.py:2935 templates/js/translated/part.js:953 +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 msgid "Maximum Cost" msgstr "" -#: part/admin.py:195 part/admin.py:270 stock/admin.py:42 stock/admin.py:116 +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 msgid "Parent ID" msgstr "" -#: part/admin.py:196 part/admin.py:272 stock/admin.py:43 +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 msgid "Parent Name" msgstr "" -#: part/admin.py:199 part/templates/part/category.html:87 -#: part/templates/part/category.html:100 +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 msgid "Category Path" msgstr "类别路径" -#: part/admin.py:202 part/models.py:391 part/templates/part/cat_link.html:3 -#: part/templates/part/category.html:23 part/templates/part/category.html:140 -#: part/templates/part/category.html:160 +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:86 templates/InvenTree/search.html:84 -#: templates/InvenTree/settings/sidebar.html:45 -#: templates/js/translated/part.js:2754 templates/js/translated/search.js:172 -#: templates/navbar.html:24 users/models.py:38 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 msgid "Parts" msgstr "商品" -#: part/admin.py:265 +#: part/admin.py:261 msgid "BOM Level" msgstr "" -#: part/admin.py:267 +#: part/admin.py:263 msgid "BOM Item ID" msgstr "" -#: part/admin.py:271 +#: part/admin.py:267 msgid "Parent IPN" msgstr "" -#: part/admin.py:274 part/models.py:3674 +#: part/admin.py:270 part/models.py:3679 msgid "Part IPN" msgstr "" -#: part/admin.py:280 templates/js/translated/pricing.js:358 -#: templates/js/translated/pricing.js:1010 +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:281 templates/js/translated/pricing.js:353 -#: templates/js/translated/pricing.js:1018 +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 msgid "Maximum Price" msgstr "" -#: part/api.py:497 +#: part/api.py:505 msgid "Incoming Purchase Order" msgstr "" -#: part/api.py:517 +#: part/api.py:525 msgid "Outgoing Sales Order" msgstr "" -#: part/api.py:535 +#: part/api.py:543 msgid "Stock produced by Build Order" msgstr "" -#: part/api.py:621 +#: part/api.py:629 msgid "Stock required for Build Order" msgstr "" -#: part/api.py:769 +#: part/api.py:774 msgid "Valid" msgstr "" -#: part/api.py:770 +#: part/api.py:775 msgid "Validate entire Bill of Materials" msgstr "" -#: part/api.py:776 +#: part/api.py:781 msgid "This option must be selected" msgstr "" -#: part/bom.py:175 part/models.py:126 part/models.py:922 -#: part/templates/part/category.html:115 part/templates/part/part_base.html:369 +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "默认仓储地点" -#: part/bom.py:176 templates/email/low_stock_notification.html:16 +#: part/bom.py:175 templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" -#: part/bom.py:177 part/templates/part/part_base.html:194 -#: templates/js/translated/sales_order.js:1873 +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 msgid "Available Stock" msgstr "可用库存" @@ -5653,481 +5853,491 @@ msgstr "可用库存" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:74 part/models.py:3615 part/templates/part/category.html:16 +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "商品类别" -#: part/models.py:75 part/templates/part/category.html:135 -#: templates/InvenTree/search.html:97 templates/js/translated/search.js:200 -#: users/models.py:37 +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 msgid "Part Categories" msgstr "商品类别" -#: part/models.py:127 +#: part/models.py:98 msgid "Default location for parts in this category" msgstr "此类别商品的默认仓储地点" -#: part/models.py:132 stock/models.py:124 templates/js/translated/stock.js:2520 -#: templates/js/translated/table_filters.js:209 -#: templates/js/translated/table_filters.js:229 +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 msgid "Structural" msgstr "" -#: part/models.py:134 +#: part/models.py:105 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." msgstr "" -#: part/models.py:138 +#: part/models.py:109 msgid "Default keywords" msgstr "" -#: part/models.py:138 +#: part/models.py:109 msgid "Default keywords for parts in this category" msgstr "此类别商品的默认关键字" -#: part/models.py:143 stock/models.py:113 +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 msgid "Icon" msgstr "" -#: part/models.py:144 stock/models.py:114 +#: part/models.py:115 stock/models.py:143 msgid "Icon (optional)" msgstr "" -#: part/models.py:163 +#: part/models.py:134 msgid "You cannot make this part category structural because some parts are already assigned to it!" msgstr "" -#: part/models.py:474 +#: part/models.py:451 msgid "Invalid choice for parent part" msgstr "" -#: part/models.py:516 part/models.py:528 +#: part/models.py:494 part/models.py:497 #, python-brace-format -msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" msgstr "" -#: part/models.py:600 +#: part/models.py:506 #, python-brace-format -msgid "IPN must match regex pattern {pat}" +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" + +#: part/models.py:573 +#, fuzzy, python-brace-format +#| msgid "IPN must match regex pattern {pat}" +msgid "IPN must match regex pattern {pattern}" msgstr "IPN 必须匹配正则表达式 {pat}" -#: part/models.py:671 +#: part/models.py:643 msgid "Stock item with this serial number already exists" msgstr "" -#: part/models.py:802 +#: part/models.py:770 msgid "Duplicate IPN not allowed in part settings" msgstr "在商品设置中不允许重复的IPN" -#: part/models.py:807 +#: part/models.py:775 msgid "Part with this Name, IPN and Revision already exists." msgstr "" -#: part/models.py:821 +#: part/models.py:789 msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:845 part/models.py:3671 +#: part/models.py:813 part/models.py:3676 msgid "Part name" msgstr "商品名称" -#: part/models.py:851 +#: part/models.py:819 msgid "Is Template" msgstr "" -#: part/models.py:852 +#: part/models.py:820 msgid "Is this part a template part?" msgstr "" -#: part/models.py:862 +#: part/models.py:830 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:869 +#: part/models.py:837 #, fuzzy #| msgid "Description (optional)" msgid "Part description (optional)" msgstr "描述 (可选)" -#: part/models.py:875 +#: part/models.py:843 msgid "Part keywords to improve visibility in search results" msgstr "提高搜索结果可见性的关键字" -#: part/models.py:882 part/models.py:3197 part/models.py:3614 -#: part/serializers.py:848 part/templates/part/part_base.html:262 -#: templates/InvenTree/settings/settings_staff_js.html:204 -#: templates/js/translated/notification.js:59 -#: templates/js/translated/part.js:2269 templates/js/translated/part.js:2481 +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 msgid "Category" msgstr "类别" -#: part/models.py:883 +#: part/models.py:851 msgid "Part category" msgstr "商品类别" -#: part/models.py:889 +#: part/models.py:857 msgid "Internal Part Number" msgstr "内部商品编号" -#: part/models.py:894 +#: part/models.py:862 msgid "Part revision or version number" msgstr "商品版本号" -#: part/models.py:920 +#: part/models.py:888 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:965 part/templates/part/part_base.html:378 +#: part/models.py:933 part/templates/part/part_base.html:376 msgid "Default Supplier" msgstr "" -#: part/models.py:966 +#: part/models.py:934 msgid "Default supplier part" msgstr "默认供应商商品" -#: part/models.py:973 +#: part/models.py:941 msgid "Default Expiry" msgstr "" -#: part/models.py:974 +#: part/models.py:942 msgid "Expiry time (in days) for stock items of this part" msgstr "" -#: part/models.py:980 +#: part/models.py:949 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:987 +#: part/models.py:956 msgid "Units of measure for this part" msgstr "" -#: part/models.py:996 +#: part/models.py:965 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:1002 +#: part/models.py:971 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:1008 +#: part/models.py:977 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:1013 +#: part/models.py:982 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:1018 +#: part/models.py:987 msgid "Can this part be sold to customers?" msgstr "此商品可以销售给客户吗?" -#: part/models.py:1023 +#: part/models.py:992 msgid "Is this part active?" msgstr "" -#: part/models.py:1028 +#: part/models.py:997 msgid "Is this a virtual part, such as a software product or license?" msgstr "这是一个虚拟商品,如软件产品或许可证吗?" -#: part/models.py:1030 +#: part/models.py:999 msgid "BOM checksum" msgstr "" -#: part/models.py:1030 +#: part/models.py:999 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1033 +#: part/models.py:1002 msgid "BOM checked by" msgstr "" -#: part/models.py:1035 +#: part/models.py:1004 msgid "BOM checked date" msgstr "" -#: part/models.py:1039 +#: part/models.py:1008 msgid "Creation User" msgstr "新建用户" -#: part/models.py:1041 -msgid "User responsible for this part" -msgstr "" +#: part/models.py:1014 +#, fuzzy +#| msgid "User or group responsible for this order" +msgid "Owner responsible for this part" +msgstr "负责此订单的用户或群组" -#: part/models.py:1045 part/templates/part/part_base.html:341 -#: stock/templates/stock/item_base.html:447 -#: templates/js/translated/part.js:2331 +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 msgid "Last Stocktake" msgstr "" -#: part/models.py:1920 +#: part/models.py:1891 msgid "Sell multiple" msgstr "" -#: part/models.py:2852 +#: part/models.py:2857 msgid "Currency used to cache pricing calculations" msgstr "" -#: part/models.py:2869 +#: part/models.py:2874 msgid "Minimum BOM Cost" msgstr "" -#: part/models.py:2870 +#: part/models.py:2875 msgid "Minimum cost of component parts" msgstr "" -#: part/models.py:2875 +#: part/models.py:2880 msgid "Maximum BOM Cost" msgstr "" -#: part/models.py:2876 +#: part/models.py:2881 msgid "Maximum cost of component parts" msgstr "" -#: part/models.py:2881 +#: part/models.py:2886 msgid "Minimum Purchase Cost" msgstr "" -#: part/models.py:2882 +#: part/models.py:2887 msgid "Minimum historical purchase cost" msgstr "" -#: part/models.py:2887 +#: part/models.py:2892 msgid "Maximum Purchase Cost" msgstr "" -#: part/models.py:2888 +#: part/models.py:2893 msgid "Maximum historical purchase cost" msgstr "" -#: part/models.py:2893 +#: part/models.py:2898 msgid "Minimum Internal Price" msgstr "" -#: part/models.py:2894 +#: part/models.py:2899 msgid "Minimum cost based on internal price breaks" msgstr "" -#: part/models.py:2899 +#: part/models.py:2904 msgid "Maximum Internal Price" msgstr "" -#: part/models.py:2900 +#: part/models.py:2905 msgid "Maximum cost based on internal price breaks" msgstr "" -#: part/models.py:2905 +#: part/models.py:2910 msgid "Minimum Supplier Price" msgstr "" -#: part/models.py:2906 +#: part/models.py:2911 msgid "Minimum price of part from external suppliers" msgstr "" -#: part/models.py:2911 +#: part/models.py:2916 msgid "Maximum Supplier Price" msgstr "" -#: part/models.py:2912 +#: part/models.py:2917 msgid "Maximum price of part from external suppliers" msgstr "" -#: part/models.py:2917 +#: part/models.py:2922 msgid "Minimum Variant Cost" msgstr "" -#: part/models.py:2918 +#: part/models.py:2923 msgid "Calculated minimum cost of variant parts" msgstr "" -#: part/models.py:2923 +#: part/models.py:2928 msgid "Maximum Variant Cost" msgstr "" -#: part/models.py:2924 +#: part/models.py:2929 msgid "Calculated maximum cost of variant parts" msgstr "" -#: part/models.py:2930 +#: part/models.py:2935 msgid "Calculated overall minimum cost" msgstr "" -#: part/models.py:2936 +#: part/models.py:2941 msgid "Calculated overall maximum cost" msgstr "" -#: part/models.py:2941 +#: part/models.py:2946 msgid "Minimum Sale Price" msgstr "" -#: part/models.py:2942 +#: part/models.py:2947 msgid "Minimum sale price based on price breaks" msgstr "" -#: part/models.py:2947 +#: part/models.py:2952 msgid "Maximum Sale Price" msgstr "" -#: part/models.py:2948 +#: part/models.py:2953 msgid "Maximum sale price based on price breaks" msgstr "" -#: part/models.py:2953 +#: part/models.py:2958 msgid "Minimum Sale Cost" msgstr "" -#: part/models.py:2954 +#: part/models.py:2959 msgid "Minimum historical sale price" msgstr "" -#: part/models.py:2959 +#: part/models.py:2964 msgid "Maximum Sale Cost" msgstr "" -#: part/models.py:2960 +#: part/models.py:2965 msgid "Maximum historical sale price" msgstr "" -#: part/models.py:2979 +#: part/models.py:2984 msgid "Part for stocktake" msgstr "" -#: part/models.py:2984 +#: part/models.py:2989 msgid "Item Count" msgstr "" -#: part/models.py:2985 +#: part/models.py:2990 msgid "Number of individual stock entries at time of stocktake" msgstr "" -#: part/models.py:2992 +#: part/models.py:2997 msgid "Total available stock at time of stocktake" msgstr "" -#: part/models.py:2996 part/models.py:3079 +#: part/models.py:3001 part/models.py:3081 #: part/templates/part/part_scheduling.html:13 #: report/templates/report/inventree_test_report_base.html:106 #: templates/InvenTree/settings/plugin_settings.html:37 -#: templates/InvenTree/settings/settings_staff_js.html:360 -#: templates/js/translated/part.js:1059 templates/js/translated/pricing.js:812 -#: templates/js/translated/pricing.js:936 -#: templates/js/translated/purchase_order.js:1691 -#: templates/js/translated/stock.js:2558 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 msgid "Date" msgstr "" -#: part/models.py:2997 +#: part/models.py:3002 msgid "Date stocktake was performed" msgstr "" -#: part/models.py:3005 +#: part/models.py:3010 msgid "Additional notes" msgstr "" -#: part/models.py:3013 +#: part/models.py:3018 msgid "User who performed this stocktake" msgstr "" -#: part/models.py:3018 +#: part/models.py:3023 msgid "Minimum Stock Cost" msgstr "" -#: part/models.py:3019 +#: part/models.py:3024 msgid "Estimated minimum cost of stock on hand" msgstr "" -#: part/models.py:3024 +#: part/models.py:3029 msgid "Maximum Stock Cost" msgstr "" -#: part/models.py:3025 +#: part/models.py:3030 msgid "Estimated maximum cost of stock on hand" msgstr "" -#: part/models.py:3086 templates/InvenTree/settings/settings_staff_js.html:349 +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 msgid "Report" msgstr "" -#: part/models.py:3087 +#: part/models.py:3089 msgid "Stocktake report file (generated internally)" msgstr "" -#: part/models.py:3092 templates/InvenTree/settings/settings_staff_js.html:356 +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 msgid "Part Count" msgstr "" -#: part/models.py:3093 +#: part/models.py:3095 msgid "Number of parts covered by stocktake" msgstr "" -#: part/models.py:3101 +#: part/models.py:3103 msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3237 +#: part/models.py:3239 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3254 +#: part/models.py:3256 msgid "Test with this name already exists for this part" msgstr "" -#: part/models.py:3274 templates/js/translated/part.js:2821 +#: part/models.py:3276 templates/js/translated/part.js:2863 msgid "Test Name" msgstr "" -#: part/models.py:3275 +#: part/models.py:3277 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3280 +#: part/models.py:3282 msgid "Test Description" msgstr "" -#: part/models.py:3281 +#: part/models.py:3283 msgid "Enter description for this test" msgstr "" -#: part/models.py:3286 templates/js/translated/part.js:2830 -#: templates/js/translated/table_filters.js:423 +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3287 +#: part/models.py:3289 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3292 templates/js/translated/part.js:2838 +#: part/models.py:3294 templates/js/translated/part.js:2880 msgid "Requires Value" msgstr "" -#: part/models.py:3293 +#: part/models.py:3295 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3298 templates/js/translated/part.js:2845 +#: part/models.py:3300 templates/js/translated/part.js:2887 msgid "Requires Attachment" msgstr "" -#: part/models.py:3299 +#: part/models.py:3301 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3345 +#: part/models.py:3346 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3350 +#: part/models.py:3351 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3368 +#: part/models.py:3369 #, fuzzy #| msgid "Key string must be unique" msgid "Choices must be unique" msgstr "关键字必须是唯一的" -#: part/models.py:3384 +#: part/models.py:3385 msgid "Parameter template name must be unique" msgstr "" @@ -6143,8 +6353,8 @@ msgstr "" msgid "Parameter description" msgstr "" -#: part/models.py:3422 templates/js/translated/part.js:1600 -#: templates/js/translated/table_filters.js:734 +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 msgid "Checkbox" msgstr "" @@ -6152,7 +6362,7 @@ msgstr "" msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3428 templates/js/translated/part.js:1609 +#: part/models.py:3428 templates/js/translated/part.js:1633 msgid "Choices" msgstr "" @@ -6160,451 +6370,471 @@ msgstr "" msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3510 +#: part/models.py:3503 #, fuzzy #| msgid "Invalid choice for parent build" msgid "Invalid choice for parameter value" msgstr "上级生产选项无效" -#: part/models.py:3554 +#: part/models.py:3545 msgid "Parent Part" msgstr "" -#: part/models.py:3559 part/models.py:3620 part/models.py:3621 -#: templates/InvenTree/settings/settings_staff_js.html:199 +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 msgid "Parameter Template" msgstr "参数模板" -#: part/models.py:3564 +#: part/models.py:3555 msgid "Data" msgstr "" -#: part/models.py:3564 +#: part/models.py:3555 msgid "Parameter Value" msgstr "" -#: part/models.py:3625 templates/InvenTree/settings/settings_staff_js.html:208 +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 msgid "Default Value" msgstr "默认值" -#: part/models.py:3626 +#: part/models.py:3631 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3663 +#: part/models.py:3668 msgid "Part ID or part name" msgstr "" -#: part/models.py:3667 +#: part/models.py:3672 msgid "Unique part ID value" msgstr "" -#: part/models.py:3675 +#: part/models.py:3680 msgid "Part IPN value" msgstr "" -#: part/models.py:3678 +#: part/models.py:3683 msgid "Level" msgstr "" -#: part/models.py:3679 +#: part/models.py:3684 msgid "BOM level" msgstr "" -#: part/models.py:3763 +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "BOM项" + +#: part/models.py:3771 msgid "Select parent part" msgstr "" -#: part/models.py:3771 +#: part/models.py:3779 msgid "Sub part" msgstr "" -#: part/models.py:3772 +#: part/models.py:3780 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:3778 +#: part/models.py:3786 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:3782 part/templates/part/upload_bom.html:58 -#: templates/js/translated/bom.js:971 templates/js/translated/bom.js:998 -#: templates/js/translated/build.js:2113 -#: templates/js/translated/table_filters.js:156 -#: templates/js/translated/table_filters.js:185 -#: templates/js/translated/table_filters.js:500 -msgid "Optional" -msgstr "可选项" - -#: part/models.py:3783 +#: part/models.py:3791 msgid "This BOM item is optional" msgstr "" -#: part/models.py:3788 templates/js/translated/bom.js:967 -#: templates/js/translated/bom.js:1007 templates/js/translated/build.js:2104 -#: templates/js/translated/table_filters.js:160 -#: templates/js/translated/table_filters.js:496 -msgid "Consumable" -msgstr "" - -#: part/models.py:3789 +#: part/models.py:3797 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:3793 part/templates/part/upload_bom.html:55 +#: part/models.py:3801 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:3794 +#: part/models.py:3802 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:3797 +#: part/models.py:3805 msgid "BOM item reference" msgstr "" -#: part/models.py:3800 +#: part/models.py:3808 msgid "BOM item notes" msgstr "" -#: part/models.py:3804 +#: part/models.py:3812 msgid "Checksum" msgstr "" -#: part/models.py:3804 +#: part/models.py:3812 msgid "BOM line checksum" msgstr "" -#: part/models.py:3809 templates/js/translated/table_filters.js:144 +#: part/models.py:3817 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:3810 +#: part/models.py:3818 #, fuzzy #| msgid "Some stock items have been overallocated" msgid "This BOM item has been validated" msgstr "一些库存项已被过度分配" -#: part/models.py:3815 part/templates/part/upload_bom.html:57 -#: templates/js/translated/bom.js:1024 -#: templates/js/translated/table_filters.js:148 -#: templates/js/translated/table_filters.js:181 +#: part/models.py:3823 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:3816 +#: part/models.py:3824 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:3821 part/templates/part/upload_bom.html:56 -#: templates/js/translated/bom.js:1016 +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:3822 +#: part/models.py:3830 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:3908 stock/models.py:577 +#: part/models.py:3916 stock/models.py:613 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:3917 part/models.py:3919 +#: part/models.py:3925 part/models.py:3927 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4035 +#: part/models.py:4052 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4056 +#: part/models.py:4073 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4069 +#: part/models.py:4086 msgid "Parent BOM item" msgstr "" -#: part/models.py:4077 +#: part/models.py:4094 msgid "Substitute part" msgstr "" -#: part/models.py:4092 +#: part/models.py:4109 msgid "Part 1" msgstr "" -#: part/models.py:4096 +#: part/models.py:4113 msgid "Part 2" msgstr "" -#: part/models.py:4096 +#: part/models.py:4113 msgid "Select Related Part" msgstr "" -#: part/models.py:4114 +#: part/models.py:4130 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4118 +#: part/models.py:4134 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:152 part/serializers.py:175 stock/serializers.py:257 +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:302 +#: part/serializers.py:346 +#, fuzzy +#| msgid "Rejected" +msgid "No parts selected" +msgstr "已拒绝" + +#: part/serializers.py:354 +#, fuzzy +#| msgid "Set category" +msgid "Select category" +msgstr "设置类别" + +#: part/serializers.py:384 msgid "Original Part" msgstr "" -#: part/serializers.py:302 +#: part/serializers.py:384 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy Image" msgstr "" -#: part/serializers.py:307 +#: part/serializers.py:389 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:312 part/templates/part/detail.html:296 +#: part/serializers.py:394 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:312 +#: part/serializers.py:394 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:317 +#: part/serializers.py:399 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:327 +#: part/serializers.py:404 +#, fuzzy +#| msgid "Company Notes" +msgid "Copy Notes" +msgstr "公司备注" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:327 +#: part/serializers.py:414 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:333 +#: part/serializers.py:420 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:343 +#: part/serializers.py:430 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:354 +#: part/serializers.py:441 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:360 +#: part/serializers.py:447 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:367 +#: part/serializers.py:453 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:375 +#: part/serializers.py:460 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:387 +#: part/serializers.py:471 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:395 +#: part/serializers.py:479 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:620 part/templates/part/copy_part.html:9 -#: templates/js/translated/part.js:449 +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 msgid "Duplicate Part" msgstr "复制部件" -#: part/serializers.py:620 +#: part/serializers.py:738 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:625 templates/js/translated/part.js:103 +#: part/serializers.py:743 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:625 +#: part/serializers.py:743 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Supplier Information" msgstr "" -#: part/serializers.py:630 +#: part/serializers.py:748 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:636 +#: part/serializers.py:754 msgid "Copy Category Parameters" msgstr "复制类别参数" -#: part/serializers.py:637 +#: part/serializers.py:755 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:842 +#: part/serializers.py:961 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:848 +#: part/serializers.py:967 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:854 +#: part/serializers.py:973 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:859 +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +#, fuzzy +#| msgid "Exclude stock items from this selected location" +msgid "Exclude stock items in external locations" +msgstr "从该选定的仓储地点排除库存项" + +#: part/serializers.py:984 msgid "Generate Report" msgstr "" -#: part/serializers.py:860 +#: part/serializers.py:985 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:865 +#: part/serializers.py:990 msgid "Update Parts" msgstr "" -#: part/serializers.py:866 +#: part/serializers.py:991 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:874 +#: part/serializers.py:998 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:963 +#: part/serializers.py:1087 msgid "Update" msgstr "" -#: part/serializers.py:964 +#: part/serializers.py:1088 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1246 +#: part/serializers.py:1395 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1254 +#: part/serializers.py:1403 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1255 +#: part/serializers.py:1404 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1260 +#: part/serializers.py:1409 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1261 +#: part/serializers.py:1410 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1266 +#: part/serializers.py:1415 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1267 +#: part/serializers.py:1416 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1421 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1422 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1313 +#: part/serializers.py:1462 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1314 +#: part/serializers.py:1463 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1344 +#: part/serializers.py:1493 msgid "No part column specified" msgstr "" -#: part/serializers.py:1387 +#: part/serializers.py:1537 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1390 +#: part/serializers.py:1540 msgid "No matching part found" msgstr "" -#: part/serializers.py:1393 +#: part/serializers.py:1543 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1402 +#: part/serializers.py:1552 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1410 +#: part/serializers.py:1560 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1431 +#: part/serializers.py:1581 msgid "At least one BOM item is required" msgstr "" -#: part/tasks.py:39 -msgid "Low stock notification" -msgstr "" - -#: part/tasks.py:40 -#, python-brace-format -msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "" - -#: part/tasks.py:294 templates/js/translated/part.js:1040 -#: templates/js/translated/part.js:1793 templates/js/translated/part.js:1848 -#: templates/js/translated/purchase_order.js:2052 +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 msgid "Total Quantity" msgstr "" -#: part/tasks.py:295 +#: part/stocktake.py:224 msgid "Total Cost Min" msgstr "" -#: part/tasks.py:296 +#: part/stocktake.py:225 msgid "Total Cost Max" msgstr "" -#: part/tasks.py:360 +#: part/stocktake.py:289 msgid "Stocktake Report Available" msgstr "" -#: part/tasks.py:361 +#: part/stocktake.py:290 msgid "A new stocktake report is available for download" msgstr "" +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." msgstr "" @@ -6625,90 +6855,70 @@ msgstr "" msgid "The BOM for %(part)s has not been validated." msgstr "" -#: part/templates/part/bom.html:30 part/templates/part/detail.html:291 -msgid "BOM actions" -msgstr "" - -#: part/templates/part/bom.html:34 -msgid "Delete Items" -msgstr "" - -#: part/templates/part/category.html:34 +#: part/templates/part/category.html:35 msgid "Perform stocktake for this part category" msgstr "" -#: part/templates/part/category.html:40 part/templates/part/category.html:44 +#: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" msgstr "" -#: part/templates/part/category.html:48 +#: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" msgstr "" -#: part/templates/part/category.html:54 +#: part/templates/part/category.html:55 msgid "Category Actions" msgstr "" -#: part/templates/part/category.html:59 +#: part/templates/part/category.html:60 msgid "Edit category" msgstr "" -#: part/templates/part/category.html:60 +#: part/templates/part/category.html:61 msgid "Edit Category" msgstr "" -#: part/templates/part/category.html:64 +#: part/templates/part/category.html:65 msgid "Delete category" msgstr "" -#: part/templates/part/category.html:65 +#: part/templates/part/category.html:66 msgid "Delete Category" msgstr "" -#: part/templates/part/category.html:101 +#: part/templates/part/category.html:102 msgid "Top level part category" msgstr "" -#: part/templates/part/category.html:121 part/templates/part/category.html:225 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "子类别" -#: part/templates/part/category.html:126 +#: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" msgstr "商品 (包括子类别)" -#: part/templates/part/category.html:164 +#: part/templates/part/category.html:165 msgid "Create new part" msgstr "新建商品" -#: part/templates/part/category.html:165 templates/js/translated/bom.js:443 +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" msgstr "新商品" -#: part/templates/part/category.html:175 part/templates/part/detail.html:390 -#: part/templates/part/detail.html:421 -msgid "Options" -msgstr "选项" - -#: part/templates/part/category.html:179 -msgid "Set category" -msgstr "设置类别" - -#: part/templates/part/category.html:180 -msgid "Set Category" -msgstr "设置类别" - -#: part/templates/part/category.html:208 -#: templates/InvenTree/settings/sidebar.html:47 +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" msgstr "商品参数" -#: part/templates/part/category.html:229 +#: part/templates/part/category.html:211 msgid "Create new part category" msgstr "新建商品类别" -#: part/templates/part/category.html:230 +#: part/templates/part/category.html:212 msgid "New Category" msgstr "" @@ -6745,7 +6955,7 @@ msgid "Refresh scheduling data" msgstr "" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 -#: templates/js/translated/tables.js:584 +#: templates/js/translated/tables.js:552 msgid "Refresh" msgstr "" @@ -6754,9 +6964,9 @@ msgid "Add stocktake information" msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 -#: stock/admin.py:130 templates/InvenTree/settings/part_stocktake.html:29 -#: templates/InvenTree/settings/sidebar.html:51 -#: templates/js/translated/stock.js:1952 users/models.py:39 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 msgid "Stocktake" msgstr "" @@ -6768,101 +6978,101 @@ msgstr "" msgid "Add Test Template" msgstr "" -#: part/templates/part/detail.html:145 stock/templates/stock/item.html:53 +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" msgstr "" -#: part/templates/part/detail.html:165 +#: part/templates/part/detail.html:156 msgid "Part Notes" msgstr "" -#: part/templates/part/detail.html:180 +#: part/templates/part/detail.html:171 msgid "Part Variants" msgstr "" -#: part/templates/part/detail.html:184 +#: part/templates/part/detail.html:175 msgid "Create new variant" msgstr "" -#: part/templates/part/detail.html:185 +#: part/templates/part/detail.html:176 msgid "New Variant" msgstr "" -#: part/templates/part/detail.html:212 +#: part/templates/part/detail.html:199 msgid "Add new parameter" msgstr "" -#: part/templates/part/detail.html:249 part/templates/part/part_sidebar.html:58 +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" msgstr "" -#: part/templates/part/detail.html:253 part/templates/part/detail.html:254 +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" msgstr "" -#: part/templates/part/detail.html:274 part/templates/part/part_sidebar.html:17 +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 msgid "Bill of Materials" msgstr "" -#: part/templates/part/detail.html:279 +#: part/templates/part/detail.html:260 msgid "Export actions" msgstr "" -#: part/templates/part/detail.html:283 templates/js/translated/bom.js:339 +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" msgstr "" -#: part/templates/part/detail.html:285 +#: part/templates/part/detail.html:266 msgid "Print BOM Report" msgstr "" -#: part/templates/part/detail.html:295 +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 msgid "Upload BOM" msgstr "" -#: part/templates/part/detail.html:297 +#: part/templates/part/detail.html:278 msgid "Validate BOM" msgstr "" -#: part/templates/part/detail.html:302 part/templates/part/detail.html:303 -#: templates/js/translated/bom.js:1279 templates/js/translated/bom.js:1280 +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 msgid "Add BOM Item" msgstr "" -#: part/templates/part/detail.html:316 +#: part/templates/part/detail.html:297 msgid "Assemblies" msgstr "" -#: part/templates/part/detail.html:334 +#: part/templates/part/detail.html:313 msgid "Part Builds" msgstr "" -#: part/templates/part/detail.html:361 stock/templates/stock/item.html:38 +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" msgstr "" -#: part/templates/part/detail.html:377 +#: part/templates/part/detail.html:352 msgid "Part Suppliers" msgstr "商品供应商" -#: part/templates/part/detail.html:407 +#: part/templates/part/detail.html:372 msgid "Part Manufacturers" msgstr "商品制造商" -#: part/templates/part/detail.html:423 -msgid "Delete manufacturer parts" -msgstr "删除制造商商品" - -#: part/templates/part/detail.html:707 +#: part/templates/part/detail.html:659 msgid "Related Part" msgstr "" -#: part/templates/part/detail.html:715 +#: part/templates/part/detail.html:667 msgid "Add Related Part" msgstr "" -#: part/templates/part/detail.html:800 +#: part/templates/part/detail.html:752 msgid "Add Test Result Template" msgstr "" @@ -6896,13 +7106,13 @@ msgid "Download Part Import Template" msgstr "" #: part/templates/part/import_wizard/part_upload.html:92 -#: templates/js/translated/bom.js:308 templates/js/translated/bom.js:342 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 #: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 msgid "Format" msgstr "" #: part/templates/part/import_wizard/part_upload.html:93 -#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 #: templates/js/translated/order.js:130 msgid "Select file format" msgstr "" @@ -6911,162 +7121,162 @@ msgstr "" msgid "Part List" msgstr "商品列表" -#: part/templates/part/part_base.html:27 part/templates/part/part_base.html:31 +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 msgid "You are subscribed to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:35 +#: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" msgstr "" -#: part/templates/part/part_base.html:54 -#: stock/templates/stock/item_base.html:63 -#: stock/templates/stock/location.html:73 +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 msgid "Print Label" msgstr "打印标签" -#: part/templates/part/part_base.html:60 +#: part/templates/part/part_base.html:58 msgid "Show pricing information" msgstr "" -#: part/templates/part/part_base.html:65 -#: stock/templates/stock/item_base.html:111 -#: stock/templates/stock/location.html:81 +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 msgid "Stock actions" msgstr "" -#: part/templates/part/part_base.html:72 +#: part/templates/part/part_base.html:70 msgid "Count part stock" msgstr "清点商品库存" -#: part/templates/part/part_base.html:78 +#: part/templates/part/part_base.html:76 msgid "Transfer part stock" msgstr "" -#: part/templates/part/part_base.html:93 +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 msgid "Part actions" msgstr "" -#: part/templates/part/part_base.html:96 +#: part/templates/part/part_base.html:94 msgid "Duplicate part" msgstr "重复的商品" -#: part/templates/part/part_base.html:99 +#: part/templates/part/part_base.html:97 msgid "Edit part" msgstr "编辑商品" -#: part/templates/part/part_base.html:102 +#: part/templates/part/part_base.html:100 msgid "Delete part" msgstr "删除商品" -#: part/templates/part/part_base.html:121 +#: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" msgstr "" -#: part/templates/part/part_base.html:125 +#: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" msgstr "商品可以由其他部件组装" -#: part/templates/part/part_base.html:129 +#: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" msgstr "商品可以用于组装成品" -#: part/templates/part/part_base.html:133 +#: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" msgstr "" -#: part/templates/part/part_base.html:137 +#: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" msgstr "商品可以从外部供应商处购买" -#: part/templates/part/part_base.html:141 +#: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" msgstr "商品可以销售给客户" -#: part/templates/part/part_base.html:147 +#: part/templates/part/part_base.html:145 #, fuzzy #| msgid "Print actions" msgid "Part is not active" msgstr "打印操作" -#: part/templates/part/part_base.html:148 -#: templates/js/translated/company.js:945 -#: templates/js/translated/company.js:1185 -#: templates/js/translated/model_renderers.js:273 -#: templates/js/translated/part.js:792 templates/js/translated/part.js:1192 +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 msgid "Inactive" msgstr "" -#: part/templates/part/part_base.html:155 +#: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" msgstr "商品是虚拟的(不是实体零件)" -#: part/templates/part/part_base.html:165 -#: part/templates/part/part_base.html:684 +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 msgid "Show Part Details" msgstr "" -#: part/templates/part/part_base.html:220 -#: stock/templates/stock/item_base.html:384 +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 msgid "Allocated to Build Orders" msgstr "" -#: part/templates/part/part_base.html:229 -#: stock/templates/stock/item_base.html:377 +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:237 templates/js/translated/bom.js:1178 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 msgid "Can Build" msgstr "" -#: part/templates/part/part_base.html:293 +#: part/templates/part/part_base.html:291 msgid "Minimum stock level" msgstr "" -#: part/templates/part/part_base.html:324 templates/js/translated/bom.js:1041 -#: templates/js/translated/part.js:1238 templates/js/translated/part.js:2304 +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 #: templates/js/translated/pricing.js:391 -#: templates/js/translated/pricing.js:1040 +#: templates/js/translated/pricing.js:1054 msgid "Price Range" msgstr "" -#: part/templates/part/part_base.html:354 +#: part/templates/part/part_base.html:352 msgid "Latest Serial Number" msgstr "" -#: part/templates/part/part_base.html:358 -#: stock/templates/stock/item_base.html:323 +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 msgid "Search for serial number" msgstr "" -#: part/templates/part/part_base.html:446 +#: part/templates/part/part_base.html:444 msgid "Part QR Code" msgstr "商品二维码" -#: part/templates/part/part_base.html:463 +#: part/templates/part/part_base.html:461 msgid "Link Barcode to Part" msgstr "" -#: part/templates/part/part_base.html:474 templates/js/translated/part.js:2191 +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 #, fuzzy #| msgid "Edit part" msgid "part" msgstr "编辑商品" -#: part/templates/part/part_base.html:514 +#: part/templates/part/part_base.html:512 msgid "Calculate" msgstr "" -#: part/templates/part/part_base.html:531 +#: part/templates/part/part_base.html:529 msgid "Remove associated image from this part" msgstr "" -#: part/templates/part/part_base.html:582 +#: part/templates/part/part_base.html:580 msgid "No matching images found" msgstr "" -#: part/templates/part/part_base.html:678 +#: part/templates/part/part_base.html:676 msgid "Hide Part Details" msgstr "" @@ -7123,15 +7333,15 @@ msgstr "" #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 #: stock/templates/stock/stock_app_base.html:10 #: templates/InvenTree/search.html:153 -#: templates/InvenTree/settings/sidebar.html:49 -#: templates/js/translated/part.js:1216 templates/js/translated/part.js:2120 -#: templates/js/translated/part.js:2284 templates/js/translated/stock.js:1022 -#: templates/js/translated/stock.js:1829 templates/navbar.html:31 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 msgid "Stock" msgstr "库存" #: part/templates/part/part_sidebar.html:30 -#: templates/InvenTree/settings/sidebar.html:37 +#: templates/InvenTree/settings/sidebar.html:39 msgid "Pricing" msgstr "定价" @@ -7155,11 +7365,11 @@ msgstr "" msgid "Refresh Part Pricing" msgstr "" -#: part/templates/part/prices.html:25 stock/admin.py:129 -#: stock/templates/stock/item_base.html:442 -#: templates/js/translated/company.js:1313 -#: templates/js/translated/company.js:1323 -#: templates/js/translated/stock.js:1982 +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 msgid "Last Updated" msgstr "" @@ -7222,12 +7432,12 @@ msgstr "" msgid "Add Sell Price Break" msgstr "" -#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:682 -#: templates/js/translated/part.js:2115 templates/js/translated/part.js:2117 +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 msgid "No Stock" msgstr "" -#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:167 +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" msgstr "" @@ -7276,37 +7486,36 @@ msgstr "" msgid "Create a new variant part from this template" msgstr "" -#: part/templatetags/inventree_extras.py:189 +#: part/templatetags/inventree_extras.py:185 msgid "Unknown database" msgstr "" -#: part/templatetags/inventree_extras.py:241 -#, python-brace-format -msgid "{title} v{version}" +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" msgstr "" #: part/views.py:110 msgid "Match References" msgstr "" -#: part/views.py:238 +#: part/views.py:242 #, python-brace-format -msgid "Can't import part {name} because there is no category assigned" +msgid "Can't import part {new_part.name} because there is no category assigned" msgstr "" -#: part/views.py:379 +#: part/views.py:383 msgid "Select Part Image" msgstr "选择商品图像" -#: part/views.py:405 +#: part/views.py:409 msgid "Updated part image" msgstr "更新商品图像" -#: part/views.py:408 +#: part/views.py:412 msgid "Part image not found" msgstr "未找到商品图像" -#: part/views.py:503 +#: part/views.py:507 msgid "Part Pricing" msgstr "商品价格" @@ -7318,20 +7527,21 @@ msgstr "未指定操作" msgid "No matching action found" msgstr "未找到指定操作" -#: plugin/base/barcodes/api.py:54 plugin/base/barcodes/api.py:110 +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 msgid "Missing barcode data" msgstr "" -#: plugin/base/barcodes/api.py:80 +#: plugin/base/barcodes/api.py:82 msgid "No match found for barcode data" msgstr "未找到匹配条形码数据" -#: plugin/base/barcodes/api.py:84 +#: plugin/base/barcodes/api.py:86 msgid "Match found for barcode data" msgstr "找到匹配条形码数据" -#: plugin/base/barcodes/api.py:120 -#: templates/js/translated/purchase_order.js:1372 +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 msgid "Barcode matches existing item" msgstr "" @@ -7339,7 +7549,63 @@ msgstr "" msgid "No match found for provided value" msgstr "" -#: plugin/base/label/label.py:60 +#: plugin/base/barcodes/api.py:275 +#, fuzzy +#| msgid "Create new purchase order" +msgid "Invalid purchase order" +msgstr "新建采购订单" + +#: plugin/base/barcodes/api.py:281 +#, fuzzy +#| msgid "Stock Location" +msgid "Invalid stock location" +msgstr "仓储地点" + +#: plugin/base/barcodes/api.py:292 +#, fuzzy +#| msgid "This build output has already been completed" +msgid "Item has already been received" +msgstr "此生产产出已经完成" + +#: plugin/base/barcodes/api.py:314 +#, fuzzy +#| msgid "Enter barcode data" +msgid "Invalid supplier barcode" +msgstr "输入条形码数据" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +#, fuzzy +#| msgid "Received against purchase order" +msgid "Received purchase order line item" +msgstr "收到定购单" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 msgid "Label printing failed" msgstr "" @@ -7353,6 +7619,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 msgid "InvenTree contributors" msgstr "" @@ -7390,242 +7661,438 @@ msgstr "" msgid "URL that is used to send messages to a slack channel" msgstr "" -#: plugin/builtin/integration/core_notifications.py:163 +#: plugin/builtin/integration/core_notifications.py:162 msgid "Open link" msgstr "" -#: plugin/models.py:27 -msgid "Plugin Configuration" +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +#, fuzzy +#| msgid "Default currency used for this company" +msgid "Default currency exchange integration" +msgstr "该公司使用的默认货币" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +#, fuzzy +#| msgid "Part(s) must be selected before printing labels" +msgid "Provides native support for printing PDF labels" +msgstr "打印标签前必须选择商品" + +#: plugin/builtin/labels/inventree_label.py:29 +#, fuzzy +#| msgid "Debug Mode" +msgid "Debug mode" +msgstr "调试模式" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +#, fuzzy +#| msgid "Default page size for PDF reports" +msgid "Page size for the label sheet" +msgstr "PDF 报表默认页面大小" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +#, fuzzy +#| msgid "Part(s) must be selected before printing labels" +msgid "Provides support for scanning DigiKey barcodes" +msgstr "打印标签前必须选择商品" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +#, fuzzy +#| msgid "Supplier part description" +msgid "Supplier Integration - LCSC" +msgstr "供应商商品描述" + +#: plugin/builtin/suppliers/lcsc.py:23 +#, fuzzy +#| msgid "Part(s) must be selected before printing labels" +msgid "Provides support for scanning LCSC barcodes" +msgstr "打印标签前必须选择商品" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +#, fuzzy +#| msgid "Part(s) must be selected before printing labels" +msgid "Provides support for scanning Mouser barcodes" +msgstr "打印标签前必须选择商品" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +#, fuzzy +#| msgid "Supplier part description" +msgid "Supplier Integration - TME" +msgstr "供应商商品描述" + +#: plugin/builtin/suppliers/tme.py:23 +#, fuzzy +#| msgid "Part(s) must be selected before printing labels" +msgid "Provides support for scanning TME barcodes" +msgstr "打印标签前必须选择商品" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +#, fuzzy +#| msgid "Installed into assembly" +msgid "Installed plugin successfully" +msgstr "安装到组装中" + +#: plugin/installer.py:192 +#, fuzzy, python-brace-format +#| msgid "Installed into assembly" +msgid "Installed plugin into {path}" +msgstr "安装到组装中" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" msgstr "" #: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 msgid "Plugin Configurations" msgstr "" -#: plugin/models.py:33 +#: plugin/models.py:34 users/models.py:73 msgid "Key" msgstr "" -#: plugin/models.py:34 +#: plugin/models.py:35 msgid "Key of plugin" msgstr "" -#: plugin/models.py:42 +#: plugin/models.py:43 msgid "PluginName of the plugin" msgstr "" -#: plugin/models.py:48 +#: plugin/models.py:49 msgid "Is the plugin active" msgstr "" -#: plugin/models.py:124 +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 msgid "Sample plugin" msgstr "" -#: plugin/models.py:133 +#: plugin/models.py:146 msgid "Builtin Plugin" msgstr "" -#: plugin/models.py:159 templates/InvenTree/settings/plugin_settings.html:9 +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 msgid "Plugin" msgstr "" -#: plugin/models.py:210 +#: plugin/models.py:222 msgid "Method" msgstr "" -#: plugin/plugin.py:267 +#: plugin/plugin.py:265 msgid "No author found" msgstr "" -#: plugin/registry.py:462 +#: plugin/registry.py:510 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" msgstr "" -#: plugin/registry.py:464 +#: plugin/registry.py:512 #, python-brace-format msgid "Plugin requires at least version {v}" msgstr "" -#: plugin/registry.py:466 +#: plugin/registry.py:514 #, python-brace-format msgid "Plugin requires at most version {v}" msgstr "" -#: plugin/samples/integration/sample.py:39 +#: plugin/samples/integration/sample.py:50 msgid "Enable PO" msgstr "" -#: plugin/samples/integration/sample.py:40 +#: plugin/samples/integration/sample.py:51 msgid "Enable PO functionality in InvenTree interface" msgstr "" -#: plugin/samples/integration/sample.py:45 +#: plugin/samples/integration/sample.py:56 msgid "API Key" msgstr "" -#: plugin/samples/integration/sample.py:46 +#: plugin/samples/integration/sample.py:57 msgid "Key required for accessing external API" msgstr "" -#: plugin/samples/integration/sample.py:49 +#: plugin/samples/integration/sample.py:61 msgid "Numerical" msgstr "" -#: plugin/samples/integration/sample.py:50 +#: plugin/samples/integration/sample.py:62 msgid "A numerical setting" msgstr "" -#: plugin/samples/integration/sample.py:55 +#: plugin/samples/integration/sample.py:67 msgid "Choice Setting" msgstr "" -#: plugin/samples/integration/sample.py:56 +#: plugin/samples/integration/sample.py:68 msgid "A setting with multiple choices" msgstr "" -#: plugin/serializers.py:90 +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +#, fuzzy +#| msgid "About InvenTree" +msgid "InvenTree Contributors" +msgstr "关于 InventTree" + +#: plugin/serializers.py:87 msgid "Source URL" msgstr "" -#: plugin/serializers.py:91 +#: plugin/serializers.py:88 msgid "Source for the package - this can be a custom registry or a VCS path" msgstr "" -#: plugin/serializers.py:96 +#: plugin/serializers.py:93 msgid "Package Name" msgstr "" -#: plugin/serializers.py:97 +#: plugin/serializers.py:94 msgid "Name for the Plugin Package - can also contain a version indicator" msgstr "" -#: plugin/serializers.py:100 +#: plugin/serializers.py:97 msgid "Confirm plugin installation" msgstr "" -#: plugin/serializers.py:101 +#: plugin/serializers.py:98 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." msgstr "" -#: plugin/serializers.py:113 +#: plugin/serializers.py:110 msgid "Installation not confirmed" msgstr "" -#: plugin/serializers.py:115 +#: plugin/serializers.py:112 msgid "Either packagename of URL must be provided" msgstr "" -#: plugin/serializers.py:193 +#: plugin/serializers.py:141 msgid "Activate Plugin" msgstr "" -#: plugin/serializers.py:194 +#: plugin/serializers.py:142 msgid "Activate this plugin" msgstr "" -#: report/api.py:171 +#: report/api.py:172 msgid "No valid objects provided to template" msgstr "没有为模板提供有效对象" -#: report/api.py:207 report/api.py:243 +#: report/api.py:209 report/api.py:245 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:310 +#: report/api.py:322 msgid "Test report" msgstr "" -#: report/models.py:161 +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 msgid "Template name" msgstr "" -#: report/models.py:167 +#: report/models.py:177 msgid "Report template file" msgstr "" -#: report/models.py:174 +#: report/models.py:184 msgid "Report template description" msgstr "" -#: report/models.py:180 +#: report/models.py:190 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:267 +#: report/models.py:198 +#, fuzzy +#| msgid "Default page size for PDF reports" +msgid "Page size for PDF reports" +msgstr "PDF 报表默认页面大小" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:274 +#: report/models.py:312 msgid "Report template is enabled" msgstr "" -#: report/models.py:295 +#: report/models.py:333 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:303 +#: report/models.py:341 msgid "Include Installed Tests" msgstr "" -#: report/models.py:304 +#: report/models.py:342 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:378 +#: report/models.py:402 msgid "Build Filters" msgstr "" -#: report/models.py:379 +#: report/models.py:403 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:418 +#: report/models.py:444 msgid "Part Filters" msgstr "商品过滤器" -#: report/models.py:419 +#: report/models.py:445 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:453 +#: report/models.py:479 msgid "Purchase order query filters" msgstr "" -#: report/models.py:491 +#: report/models.py:517 msgid "Sales order query filters" msgstr "" -#: report/models.py:529 +#: report/models.py:555 msgid "Return order query filters" msgstr "" -#: report/models.py:582 +#: report/models.py:606 msgid "Snippet" msgstr "" -#: report/models.py:583 +#: report/models.py:607 msgid "Report snippet file" msgstr "" -#: report/models.py:587 +#: report/models.py:611 msgid "Snippet file description" msgstr "" -#: report/models.py:624 +#: report/models.py:647 msgid "Asset" msgstr "" -#: report/models.py:625 +#: report/models.py:648 msgid "Report asset file" msgstr "" -#: report/models.py:632 +#: report/models.py:655 msgid "Asset file description" msgstr "" +#: report/models.py:676 +#, fuzzy +#| msgid "Query filters (comma-separated list of key=value pairs)," +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "查询筛选器 (逗号分隔的键值对列表)" + #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" msgstr "" @@ -7642,9 +8109,9 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:30 #: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 #: templates/js/translated/pricing.js:596 -#: templates/js/translated/pricing.js:820 -#: templates/js/translated/purchase_order.js:2083 -#: templates/js/translated/sales_order.js:1817 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 msgid "Unit Price" msgstr "单价" @@ -7658,26 +8125,32 @@ 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:1985 -#: templates/js/translated/sales_order.js:1792 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 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:725 stock/templates/stock/item_base.html:312 -#: templates/js/translated/build.js:502 templates/js/translated/build.js:1423 -#: templates/js/translated/build.js:1989 -#: templates/js/translated/model_renderers.js:201 -#: templates/js/translated/return_order.js:528 -#: templates/js/translated/return_order.js:708 -#: templates/js/translated/sales_order.js:300 -#: templates/js/translated/sales_order.js:1597 -#: templates/js/translated/sales_order.js:1682 -#: templates/js/translated/stock.js:563 +#: stock/models.py:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 msgid "Serial Number" msgstr "序列号" +#: report/templates/report/inventree_slr_report.html:97 +#, fuzzy +#| msgid "Stock item created" +msgid "Stock location items" +msgstr "库存项已创建" + #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" msgstr "" @@ -7687,12 +8160,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: stock/models.py:2242 templates/js/translated/stock.js:1419 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2248 +#: stock/models.py:2306 msgid "Result" msgstr "" @@ -7720,493 +8193,569 @@ msgid "Installed Items" msgstr "" #: report/templates/report/inventree_test_report_base.html:168 -#: stock/admin.py:104 templates/js/translated/stock.js:667 -#: templates/js/translated/stock.js:838 templates/js/translated/stock.js:2849 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 msgid "Serial" msgstr "" -#: stock/admin.py:39 stock/admin.py:108 +#: stock/admin.py:40 stock/admin.py:126 msgid "Location ID" msgstr "" -#: stock/admin.py:40 stock/admin.py:109 +#: stock/admin.py:41 stock/admin.py:127 msgid "Location Name" msgstr "" -#: stock/admin.py:44 stock/templates/stock/location.html:129 -#: stock/templates/stock/location.html:135 +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 msgid "Location Path" msgstr "" -#: stock/admin.py:100 +#: stock/admin.py:118 msgid "Stock Item ID" msgstr "" -#: stock/admin.py:107 +#: stock/admin.py:125 #, fuzzy #| msgid "Status" msgid "Status Code" msgstr "状态" -#: stock/admin.py:110 +#: stock/admin.py:128 msgid "Supplier Part ID" msgstr "供应商商品ID" -#: stock/admin.py:111 +#: stock/admin.py:129 msgid "Supplier ID" msgstr "" -#: stock/admin.py:112 +#: stock/admin.py:130 msgid "Supplier Name" msgstr "" -#: stock/admin.py:113 +#: stock/admin.py:131 msgid "Customer ID" msgstr "" -#: stock/admin.py:114 stock/models.py:708 -#: stock/templates/stock/item_base.html:355 +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 msgid "Installed In" msgstr "" -#: stock/admin.py:115 +#: stock/admin.py:133 msgid "Build ID" msgstr "" -#: stock/admin.py:117 +#: stock/admin.py:135 msgid "Sales Order ID" msgstr "" -#: stock/admin.py:118 +#: stock/admin.py:136 msgid "Purchase Order ID" msgstr "" -#: stock/admin.py:125 +#: stock/admin.py:143 msgid "Review Needed" msgstr "" -#: stock/admin.py:126 +#: stock/admin.py:144 #, fuzzy #| msgid "Delete Template" msgid "Delete on Deplete" msgstr "删除模板" -#: stock/admin.py:131 stock/models.py:789 -#: stock/templates/stock/item_base.html:429 -#: templates/js/translated/stock.js:1966 +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 msgid "Expiry Date" msgstr "" -#: stock/api.py:419 templates/js/translated/table_filters.js:373 +#: stock/api.py:499 templates/js/translated/table_filters.js:427 msgid "External Location" msgstr "" -#: stock/api.py:581 +#: stock/api.py:693 msgid "Quantity is required" msgstr "" -#: stock/api.py:588 +#: stock/api.py:700 msgid "Valid part must be supplied" msgstr "" -#: stock/api.py:614 +#: stock/api.py:728 msgid "The given supplier part does not exist" msgstr "" -#: stock/api.py:623 +#: stock/api.py:737 msgid "The supplier part has a pack size defined, but flag use_pack_size not set" msgstr "" -#: stock/api.py:641 +#: stock/api.py:760 msgid "Serial numbers cannot be supplied for a non-trackable part" msgstr "" -#: stock/models.py:54 stock/models.py:692 +#: stock/models.py:56 +#, fuzzy +#| msgid "Stock Location" +msgid "Stock Location type" +msgstr "仓储地点" + +#: stock/models.py:57 +#, fuzzy +#| msgid "Stock Locations" +msgid "Stock Location types" +msgstr "仓储地点" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 #: stock/templates/stock/location.html:17 #: stock/templates/stock/stock_app_base.html:8 msgid "Stock Location" msgstr "仓储地点" -#: stock/models.py:55 stock/templates/stock/location.html:177 -#: templates/InvenTree/search.html:166 templates/js/translated/search.js:220 -#: users/models.py:40 +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 msgid "Stock Locations" msgstr "仓储地点" -#: stock/models.py:118 stock/models.py:828 -#: stock/templates/stock/item_base.html:248 +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 msgid "Owner" msgstr "" -#: stock/models.py:119 stock/models.py:829 +#: stock/models.py:149 stock/models.py:863 msgid "Select Owner" msgstr "" -#: stock/models.py:126 +#: stock/models.py:156 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:132 templates/js/translated/stock.js:2529 -#: templates/js/translated/table_filters.js:213 +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" -#: stock/models.py:133 +#: stock/models.py:163 msgid "This is an external stock location" msgstr "" -#: stock/models.py:175 +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +#, fuzzy +#| msgid "Location" +msgid "Location type" +msgstr "地点" + +#: stock/models.py:172 +#, fuzzy +#| msgid "Stock item created" +msgid "Stock location type of this location" +msgstr "库存项已创建" + +#: stock/models.py:237 msgid "You cannot make this stock location structural because some stock items are already located into it!" msgstr "" -#: stock/models.py:557 +#: stock/models.py:593 msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:583 stock/serializers.py:174 +#: stock/models.py:619 stock/serializers.py:229 msgid "Stock item cannot be created for virtual parts" msgstr "" -#: stock/models.py:600 -#, python-brace-format -msgid "Part type ('{pf}') must be {pe}" +#: stock/models.py:636 +#, fuzzy, python-brace-format +#| msgid "Part type ('{pf}') must be {pe}" +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" msgstr "商品类型 ('{pf}') 必须是 {pe}" -#: stock/models.py:610 stock/models.py:619 +#: stock/models.py:644 stock/models.py:653 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:611 +#: stock/models.py:645 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:633 +#: stock/models.py:667 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:639 +#: stock/models.py:673 msgid "Item must have a build reference if is_building=True" msgstr "" -#: stock/models.py:653 +#: stock/models.py:687 msgid "Build reference does not point to the same part object" msgstr "" -#: stock/models.py:667 +#: stock/models.py:701 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:677 +#: stock/models.py:711 msgid "Base part" msgstr "" -#: stock/models.py:685 +#: stock/models.py:719 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:695 +#: stock/models.py:729 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:702 +#: stock/models.py:736 stock/serializers.py:1298 msgid "Packaging this stock item is stored in" msgstr "" -#: stock/models.py:711 +#: stock/models.py:745 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:727 +#: stock/models.py:761 msgid "Serial number for this item" msgstr "" -#: stock/models.py:741 +#: stock/models.py:775 stock/serializers.py:1283 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:746 +#: stock/models.py:780 msgid "Stock Quantity" msgstr "" -#: stock/models.py:753 +#: stock/models.py:787 msgid "Source Build" msgstr "" -#: stock/models.py:755 +#: stock/models.py:789 msgid "Build for this stock item" msgstr "" -#: stock/models.py:761 stock/templates/stock/item_base.html:364 +#: stock/models.py:795 stock/templates/stock/item_base.html:363 #, fuzzy #| msgid "Issued By" msgid "Consumed By" msgstr "发布者" -#: stock/models.py:763 +#: stock/models.py:797 #, fuzzy #| msgid "BuildOrder to which this build is allocated" msgid "Build order which consumed this stock item" msgstr "此次生产匹配的订单" -#: stock/models.py:774 +#: stock/models.py:808 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:777 +#: stock/models.py:811 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:783 +#: stock/models.py:817 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:790 +#: stock/models.py:824 msgid "Expiry date for stock item. Stock will be considered expired after this date" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete on deplete" msgstr "" -#: stock/models.py:805 +#: stock/models.py:839 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:824 +#: stock/models.py:858 msgid "Single unit purchase price at time of purchase" msgstr "" -#: stock/models.py:852 +#: stock/models.py:886 msgid "Converted to part" msgstr "" -#: stock/models.py:1377 +#: stock/models.py:1411 msgid "Part is not set as trackable" msgstr "" -#: stock/models.py:1383 +#: stock/models.py:1417 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:1389 -#, python-brace-format -msgid "Quantity must not exceed available stock quantity ({n})" -msgstr "" +#: stock/models.py:1423 +#, fuzzy, python-brace-format +#| msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})" -#: stock/models.py:1392 +#: stock/models.py:1426 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:1395 +#: stock/models.py:1429 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1402 stock/serializers.py:374 +#: stock/models.py:1436 stock/serializers.py:449 msgid "Serial numbers already exist" msgstr "序列号已存在" -#: stock/models.py:1473 +#: stock/models.py:1507 msgid "Stock item has been assigned to a sales order" msgstr "" -#: stock/models.py:1476 +#: stock/models.py:1510 msgid "Stock item is installed in another item" msgstr "" -#: stock/models.py:1479 +#: stock/models.py:1513 msgid "Stock item contains other items" msgstr "" -#: stock/models.py:1482 +#: stock/models.py:1516 msgid "Stock item has been assigned to a customer" msgstr "" -#: stock/models.py:1485 +#: stock/models.py:1519 msgid "Stock item is currently in production" msgstr "" -#: stock/models.py:1488 +#: stock/models.py:1522 msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1495 stock/serializers.py:975 +#: stock/models.py:1529 stock/serializers.py:1194 msgid "Duplicate stock items" msgstr "" -#: stock/models.py:1499 +#: stock/models.py:1533 msgid "Stock items must refer to the same part" msgstr "" -#: stock/models.py:1503 +#: stock/models.py:1537 msgid "Stock items must refer to the same supplier part" msgstr "" -#: stock/models.py:1507 +#: stock/models.py:1541 msgid "Stock status codes must match" msgstr "" -#: stock/models.py:1678 +#: stock/models.py:1735 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:2160 +#: stock/models.py:2218 msgid "Entry notes" msgstr "" -#: stock/models.py:2218 +#: stock/models.py:2276 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2224 +#: stock/models.py:2282 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2243 +#: stock/models.py:2301 msgid "Test name" msgstr "" -#: stock/models.py:2249 +#: stock/models.py:2307 msgid "Test result" msgstr "" -#: stock/models.py:2255 +#: stock/models.py:2313 msgid "Test output value" msgstr "" -#: stock/models.py:2262 +#: stock/models.py:2320 msgid "Test result attachment" msgstr "" -#: stock/models.py:2268 +#: stock/models.py:2326 msgid "Test notes" msgstr "" -#: stock/serializers.py:76 +#: stock/serializers.py:121 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:166 +#: stock/serializers.py:222 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:254 +#: stock/serializers.py:321 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:307 +#: stock/serializers.py:382 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:319 +#: stock/serializers.py:394 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:325 +#: stock/serializers.py:400 msgid "Enter serial numbers for new items" msgstr "输入新项目的序列号" -#: stock/serializers.py:336 stock/serializers.py:932 stock/serializers.py:1174 +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 msgid "Destination stock location" msgstr "目标库存位置" -#: stock/serializers.py:343 +#: stock/serializers.py:418 msgid "Optional note field" msgstr "" -#: stock/serializers.py:353 +#: stock/serializers.py:428 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:414 +#: stock/serializers.py:489 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:427 -msgid "Stock item is unavailable" +#: stock/serializers.py:496 +msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:434 -msgid "Selected part is not in the Bill of Materials" -msgstr "" +#: stock/serializers.py:497 +#, fuzzy +#| msgid "Enter quantity for build output" +msgid "Enter the quantity of items to install" +msgstr "输入生产产出数量" -#: stock/serializers.py:471 -msgid "Destination location for uninstalled item" -msgstr "" - -#: stock/serializers.py:476 stock/serializers.py:557 +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 msgid "Add transaction note (optional)" msgstr "添加交易备注 (可选)" -#: stock/serializers.py:510 +#: stock/serializers.py:511 +#, fuzzy +#| msgid "Quantity must be a positive number" +msgid "Quantity to install must be at least 1" +msgstr "数量必须大于0" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +#, fuzzy +#| msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgid "Quantity to install must not exceed available quantity" +msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:521 +#: stock/serializers.py:625 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:787 +#: stock/serializers.py:713 +#, fuzzy +#| msgid "Selected stock item not found in BOM" +msgid "Select stock items to change status" +msgstr "在BOM中找不到选定的库存项" + +#: stock/serializers.py:719 +#, fuzzy +#| msgid "Stock item created" +msgid "No stock items selected" +msgstr "库存项已创建" + +#: stock/serializers.py:1006 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:791 +#: stock/serializers.py:1010 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:795 +#: stock/serializers.py:1014 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:826 +#: stock/serializers.py:1045 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:832 +#: stock/serializers.py:1051 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:840 +#: stock/serializers.py:1059 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:850 stock/serializers.py:1081 +#: stock/serializers.py:1069 stock/serializers.py:1329 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:939 +#: stock/serializers.py:1158 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:944 +#: stock/serializers.py:1163 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:945 +#: stock/serializers.py:1164 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:950 +#: stock/serializers.py:1169 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:951 +#: stock/serializers.py:1170 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:961 +#: stock/serializers.py:1180 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1043 +#: stock/serializers.py:1269 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1071 +#: stock/serializers.py:1290 +#, fuzzy +#| msgid "Stock item created" +msgid "Stock item status code" +msgstr "库存项已创建" + +#: stock/serializers.py:1319 msgid "Stock transaction notes" msgstr "" @@ -8214,267 +8763,275 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item.html:69 +#: stock/templates/stock/item.html:63 msgid "Child Stock Items" msgstr "" -#: stock/templates/stock/item.html:77 +#: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" msgstr "" -#: stock/templates/stock/item.html:86 +#: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" msgstr "" -#: stock/templates/stock/item.html:90 stock/templates/stock/item_base.html:66 +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:94 stock/templates/stock/item.html:288 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 msgid "Delete Test Data" msgstr "" -#: stock/templates/stock/item.html:98 +#: stock/templates/stock/item.html:93 msgid "Add Test Data" msgstr "" -#: stock/templates/stock/item.html:132 +#: stock/templates/stock/item.html:125 msgid "Stock Item Notes" msgstr "" -#: stock/templates/stock/item.html:147 +#: stock/templates/stock/item.html:140 msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:152 templates/js/translated/stock.js:2996 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:276 +#: stock/templates/stock/item.html:267 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:305 templates/js/translated/stock.js:1611 +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 msgid "Add Test Result" msgstr "" -#: stock/templates/stock/item_base.html:34 +#: stock/templates/stock/item_base.html:33 msgid "Locate stock item" msgstr "" -#: stock/templates/stock/item_base.html:52 templates/stock_table.html:21 +#: stock/templates/stock/item_base.html:51 msgid "Scan to Location" msgstr "" -#: stock/templates/stock/item_base.html:60 -#: stock/templates/stock/location.html:69 -#: templates/js/translated/filters.js:322 +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 msgid "Printing actions" msgstr "" -#: stock/templates/stock/item_base.html:76 +#: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" msgstr "" -#: stock/templates/stock/item_base.html:80 -#: stock/templates/stock/location.html:88 templates/stock_table.html:35 +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 msgid "Count stock" msgstr "" -#: stock/templates/stock/item_base.html:82 templates/stock_table.html:33 +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 msgid "Add stock" msgstr "" -#: stock/templates/stock/item_base.html:83 templates/stock_table.html:34 +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 msgid "Remove stock" msgstr "" -#: stock/templates/stock/item_base.html:86 +#: stock/templates/stock/item_base.html:85 msgid "Serialize stock" msgstr "" -#: stock/templates/stock/item_base.html:89 -#: stock/templates/stock/location.html:94 templates/stock_table.html:36 +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 msgid "Transfer stock" msgstr "" -#: stock/templates/stock/item_base.html:92 templates/stock_table.html:39 +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 msgid "Assign to customer" msgstr "" -#: stock/templates/stock/item_base.html:95 +#: stock/templates/stock/item_base.html:94 msgid "Return to stock" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" msgstr "" -#: stock/templates/stock/item_base.html:98 +#: stock/templates/stock/item_base.html:97 msgid "Uninstall" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install stock item" msgstr "" -#: stock/templates/stock/item_base.html:102 +#: stock/templates/stock/item_base.html:101 msgid "Install" msgstr "" -#: stock/templates/stock/item_base.html:116 +#: stock/templates/stock/item_base.html:115 msgid "Convert to variant" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" msgstr "" -#: stock/templates/stock/item_base.html:121 +#: stock/templates/stock/item_base.html:120 msgid "Edit stock item" msgstr "" -#: stock/templates/stock/item_base.html:124 +#: stock/templates/stock/item_base.html:123 msgid "Delete stock item" msgstr "" -#: stock/templates/stock/item_base.html:194 +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "生产" + +#: stock/templates/stock/item_base.html:193 msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" msgstr "" -#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/item_base.html:251 msgid "You are not in the list of owners of this item. This stock item cannot be edited." msgstr "" -#: stock/templates/stock/item_base.html:253 -#: stock/templates/stock/location.html:147 +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 msgid "Read only" msgstr "" -#: stock/templates/stock/item_base.html:266 +#: stock/templates/stock/item_base.html:265 #, fuzzy #| msgid "Stock item is over-allocated" msgid "This stock item is unavailable" msgstr "库存物品分配过度!" -#: stock/templates/stock/item_base.html:272 +#: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." msgstr "此库存项目正在生产中,无法编辑。" -#: stock/templates/stock/item_base.html:273 +#: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." msgstr "" -#: stock/templates/stock/item_base.html:288 +#: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" msgstr "" -#: stock/templates/stock/item_base.html:296 +#: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" msgstr "" -#: stock/templates/stock/item_base.html:312 +#: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "previous page" msgstr "" -#: stock/templates/stock/item_base.html:318 +#: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "next page" msgstr "" -#: stock/templates/stock/item_base.html:327 +#: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" msgstr "" -#: stock/templates/stock/item_base.html:341 +#: stock/templates/stock/item_base.html:340 msgid "Available Quantity" msgstr "" -#: stock/templates/stock/item_base.html:394 -#: templates/js/translated/build.js:2015 +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 msgid "No location set" msgstr "未设置仓储地点" -#: stock/templates/stock/item_base.html:409 +#: stock/templates/stock/item_base.html:413 msgid "Tests" msgstr "" -#: stock/templates/stock/item_base.html:415 +#: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" msgstr "" -#: stock/templates/stock/item_base.html:433 +#: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:433 -#: templates/js/translated/table_filters.js:381 +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 msgid "Expired" msgstr "" -#: stock/templates/stock/item_base.html:435 +#: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" msgstr "" -#: stock/templates/stock/item_base.html:435 -#: templates/js/translated/table_filters.js:387 +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 msgid "Stale" msgstr "" -#: stock/templates/stock/item_base.html:451 +#: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "" -#: stock/templates/stock/item_base.html:503 -#: templates/js/translated/stock.js:1745 +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 #, fuzzy #| msgid "Stock Item" msgid "stock item" msgstr "库存项" -#: stock/templates/stock/item_base.html:528 +#: stock/templates/stock/item_base.html:532 msgid "Edit Stock Status" msgstr "" -#: stock/templates/stock/item_base.html:537 +#: stock/templates/stock/item_base.html:541 msgid "Stock Item QR Code" msgstr "" -#: stock/templates/stock/item_base.html:548 +#: stock/templates/stock/item_base.html:552 msgid "Link Barcode to Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:612 +#: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." msgstr "" -#: stock/templates/stock/item_base.html:615 +#: stock/templates/stock/item_base.html:619 msgid "Warning" msgstr "警告" -#: stock/templates/stock/item_base.html:616 +#: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" msgstr "" -#: stock/templates/stock/item_base.html:624 +#: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" msgstr "" -#: stock/templates/stock/item_base.html:654 +#: stock/templates/stock/item_base.html:662 msgid "Return to Stock" msgstr "" @@ -8486,84 +9043,90 @@ msgstr "" msgid "Select quantity to serialize, and unique serial numbers." msgstr "" -#: stock/templates/stock/location.html:37 +#: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" msgstr "" -#: stock/templates/stock/location.html:44 +#: stock/templates/stock/location.html:45 msgid "Locate stock location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" msgstr "" -#: stock/templates/stock/location.html:62 +#: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" msgstr "" -#: stock/templates/stock/location.html:63 +#: stock/templates/stock/location.html:64 msgid "Scan In Container" msgstr "" -#: stock/templates/stock/location.html:102 +#: stock/templates/stock/location.html:75 +#, fuzzy +#| msgid "Print Order Reports" +msgid "Print Location Report" +msgstr "打印订单报表" + +#: stock/templates/stock/location.html:104 msgid "Location actions" msgstr "仓储地操作" -#: stock/templates/stock/location.html:104 +#: stock/templates/stock/location.html:106 msgid "Edit location" msgstr "编辑仓储地" -#: stock/templates/stock/location.html:106 +#: stock/templates/stock/location.html:108 msgid "Delete location" msgstr "删除仓储地" -#: stock/templates/stock/location.html:136 +#: stock/templates/stock/location.html:138 msgid "Top level stock location" msgstr "" -#: stock/templates/stock/location.html:142 +#: stock/templates/stock/location.html:144 msgid "Location Owner" msgstr "" -#: stock/templates/stock/location.html:146 +#: stock/templates/stock/location.html:148 msgid "You are not in the list of owners of this location. This stock location cannot be edited." msgstr "您不在此仓储地的所有者列表中,无法编辑此仓储地。" -#: stock/templates/stock/location.html:163 -#: stock/templates/stock/location.html:211 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/templates/stock/location.html:215 +#: stock/templates/stock/location.html:217 msgid "Create new stock location" msgstr "新建仓储地点" -#: stock/templates/stock/location.html:216 +#: stock/templates/stock/location.html:218 msgid "New Location" msgstr "新建仓储地点" -#: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2318 +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 #, fuzzy #| msgid "Stock Location" msgid "stock location" msgstr "仓储地点" -#: stock/templates/stock/location.html:304 +#: stock/templates/stock/location.html:317 msgid "Scanned stock container into this location" msgstr "" -#: stock/templates/stock/location.html:377 +#: stock/templates/stock/location.html:390 msgid "Stock Location QR Code" msgstr "" -#: stock/templates/stock/location.html:388 +#: stock/templates/stock/location.html:401 msgid "Link Barcode to Stock Location" msgstr "" @@ -8600,7 +9163,7 @@ msgid "You have been logged out from InvenTree." msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 -#: templates/navbar.html:147 +#: templates/navbar.html:150 msgid "Login" msgstr "" @@ -8637,71 +9200,71 @@ msgstr "" msgid "Index" msgstr "" -#: templates/InvenTree/index.html:89 +#: templates/InvenTree/index.html:39 msgid "Subscribed Parts" msgstr "" -#: templates/InvenTree/index.html:102 +#: templates/InvenTree/index.html:52 msgid "Subscribed Categories" msgstr "" -#: templates/InvenTree/index.html:112 +#: templates/InvenTree/index.html:62 msgid "Latest Parts" msgstr "最近商品" -#: templates/InvenTree/index.html:126 +#: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" msgstr "" -#: templates/InvenTree/index.html:155 +#: templates/InvenTree/index.html:106 msgid "Recently Updated" msgstr "" -#: templates/InvenTree/index.html:180 +#: templates/InvenTree/index.html:134 msgid "Depleted Stock" msgstr "" -#: templates/InvenTree/index.html:193 +#: templates/InvenTree/index.html:148 msgid "Required for Build Orders" msgstr "" -#: templates/InvenTree/index.html:208 +#: templates/InvenTree/index.html:156 msgid "Expired Stock" msgstr "" -#: templates/InvenTree/index.html:222 +#: templates/InvenTree/index.html:172 msgid "Stale Stock" msgstr "" -#: templates/InvenTree/index.html:247 +#: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" msgstr "" -#: templates/InvenTree/index.html:258 +#: templates/InvenTree/index.html:210 msgid "Overdue Build Orders" msgstr "" -#: templates/InvenTree/index.html:278 +#: templates/InvenTree/index.html:230 msgid "Outstanding Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:289 +#: templates/InvenTree/index.html:241 msgid "Overdue Purchase Orders" msgstr "" -#: templates/InvenTree/index.html:310 +#: templates/InvenTree/index.html:262 msgid "Outstanding Sales Orders" msgstr "" -#: templates/InvenTree/index.html:321 +#: templates/InvenTree/index.html:273 msgid "Overdue Sales Orders" msgstr "" -#: templates/InvenTree/index.html:347 +#: templates/InvenTree/index.html:299 msgid "InvenTree News" msgstr "" -#: templates/InvenTree/index.html:349 +#: templates/InvenTree/index.html:301 msgid "Current News" msgstr "" @@ -8727,7 +9290,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 #: templates/InvenTree/settings/sidebar.html:17 -#: templates/InvenTree/settings/sidebar.html:35 templates/notifications.html:5 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 msgid "Notifications" msgstr "" @@ -8744,7 +9307,7 @@ msgid "Delete all read notifications" msgstr "" #: templates/InvenTree/notifications/notifications.html:89 -#: templates/js/translated/notification.js:84 +#: templates/js/translated/notification.js:85 msgid "Delete Notification" msgstr "" @@ -8799,7 +9362,7 @@ msgid "Single Sign On" msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 -#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:144 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" msgstr "设置" @@ -8837,7 +9400,7 @@ msgstr "商品导入" msgid "Import Part" msgstr "导入商品" -#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" msgstr "商品参数模板" @@ -8845,12 +9408,25 @@ msgstr "商品参数模板" msgid "Stocktake Settings" msgstr "" -#: templates/InvenTree/settings/part_stocktake.html:24 +#: templates/InvenTree/settings/part_stocktake.html:25 msgid "Stocktake Reports" msgstr "" +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +#, fuzzy +#| msgid "Invalid value" +msgid "Physical Units" +msgstr "无效值" + +#: templates/InvenTree/settings/physical_units.html:12 +#, fuzzy +#| msgid "Contact" +msgid "Add Unit" +msgstr "联系人" + #: templates/InvenTree/settings/plugin.html:9 -#: templates/InvenTree/settings/sidebar.html:62 +#: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" msgstr "" @@ -8858,30 +9434,30 @@ 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:37 -#: templates/InvenTree/settings/sidebar.html:64 +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" msgstr "" -#: templates/InvenTree/settings/plugin.html:43 -#: templates/js/translated/plugin.js:151 +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 msgid "Install Plugin" msgstr "" -#: templates/InvenTree/settings/plugin.html:51 +#: templates/InvenTree/settings/plugin.html:49 msgid "External plugins are not enabled for this InvenTree installation" msgstr "" -#: templates/InvenTree/settings/plugin.html:70 +#: templates/InvenTree/settings/plugin.html:64 msgid "Plugin Error Stack" msgstr "" -#: templates/InvenTree/settings/plugin.html:79 +#: templates/InvenTree/settings/plugin.html:73 msgid "Stage" msgstr "" -#: templates/InvenTree/settings/plugin.html:81 -#: templates/js/translated/notification.js:75 +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 msgid "Message" msgstr "" @@ -8890,7 +9466,7 @@ msgid "Plugin information" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:42 -#: templates/js/translated/plugin.js:89 +#: templates/js/translated/plugin.js:85 msgid "Version" msgstr "" @@ -8927,7 +9503,8 @@ msgid "Installation path" msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 -#: templates/js/translated/plugin.js:77 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 msgid "Builtin" msgstr "" @@ -8935,32 +9512,34 @@ msgstr "" msgid "This is a builtin plugin which cannot be disabled" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:106 +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:110 +#: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:114 +#: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:118 +#: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" msgstr "" -#: templates/InvenTree/settings/plugin_settings.html:126 -msgid "Sign Status" -msgstr "" - -#: templates/InvenTree/settings/plugin_settings.html:131 -msgid "Sign Key" -msgstr "" - #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" msgstr "采购订单设置" @@ -9000,7 +9579,7 @@ msgid "Project Codes" msgstr "商品二维码" #: templates/InvenTree/settings/project_codes.html:25 -#: templates/InvenTree/settings/settings_staff_js.html:120 +#: templates/InvenTree/settings/settings_staff_js.html:196 #, fuzzy #| msgid "New Parameter" msgid "New Project Code" @@ -9021,7 +9600,7 @@ msgstr "生产订单设置" msgid "No value set" msgstr "未设置值" -#: templates/InvenTree/settings/setting.html:44 +#: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" msgstr "编辑设置" @@ -9045,58 +9624,129 @@ msgstr "" msgid "Rate" msgstr "" -#: templates/InvenTree/settings/settings_staff_js.html:64 +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "编辑" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "删除" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +#, fuzzy +#| msgid "Edited stock item" +msgid "Edit Custom Unit" +msgstr "已编辑库存项" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +#, fuzzy +#| msgid "Delete Company" +msgid "Delete Custom Unit" +msgstr "删除该公司" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +#, fuzzy +#| msgid "New Customer" +msgid "New Custom Unit" +msgstr "新建客户" + +#: templates/InvenTree/settings/settings_staff_js.html:140 #, fuzzy #| msgid "No parameters found" msgid "No project codes found" msgstr "无指定参数" -#: templates/InvenTree/settings/settings_staff_js.html:80 -#: templates/InvenTree/settings/settings_staff_js.html:94 +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 #, fuzzy #| msgid "Edit Parameter" msgid "Edit Project Code" msgstr "编辑参数" -#: templates/InvenTree/settings/settings_staff_js.html:81 -#: templates/InvenTree/settings/settings_staff_js.html:107 +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 #, fuzzy #| msgid "Delete Parameter" msgid "Delete Project Code" msgstr "删除参数" -#: templates/InvenTree/settings/settings_staff_js.html:189 +#: templates/InvenTree/settings/settings_staff_js.html:265 msgid "No category parameter templates found" msgstr "未找到类别参数模板" -#: templates/InvenTree/settings/settings_staff_js.html:212 -#: templates/js/translated/part.js:1618 +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 msgid "Edit Template" msgstr "编辑模板" -#: templates/InvenTree/settings/settings_staff_js.html:213 -#: templates/js/translated/part.js:1619 +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 msgid "Delete Template" msgstr "删除模板" -#: templates/InvenTree/settings/settings_staff_js.html:230 +#: templates/InvenTree/settings/settings_staff_js.html:306 #, fuzzy #| msgid "Delete Category Parameter Template" msgid "Edit Category Parameter Template" msgstr "删除类别参数模板" -#: templates/InvenTree/settings/settings_staff_js.html:253 +#: templates/InvenTree/settings/settings_staff_js.html:333 msgid "Delete Category Parameter Template" msgstr "删除类别参数模板" -#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/InvenTree/settings/settings_staff_js.html:368 msgid "Create Category Parameter Template" msgstr "创建类别参数模板" -#: templates/InvenTree/settings/settings_staff_js.html:314 +#: templates/InvenTree/settings/settings_staff_js.html:398 msgid "Create Part Parameter Template" msgstr "" +#: templates/InvenTree/settings/settings_staff_js.html:420 +#, fuzzy +#| msgid "No stock location set" +msgid "No stock location types found" +msgstr "未设置仓储地点" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +#, fuzzy +#| msgid "Location actions" +msgid "Location count" +msgstr "仓储地操作" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +#, fuzzy +#| msgid "Edit location" +msgid "Edit Location Type" +msgstr "编辑仓储地" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +#, fuzzy +#| msgid "Delete location" +msgid "Delete Location type" +msgstr "删除仓储地" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +#, fuzzy +#| msgid "Delete location" +msgid "Delete Location Type" +msgstr "删除仓储地" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +#, fuzzy +#| msgid "New Location" +msgid "New Location Type" +msgstr "新建仓储地点" + #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" @@ -9117,14 +9767,14 @@ msgid "Home Page" msgstr "" #: templates/InvenTree/settings/sidebar.html:15 -#: templates/js/translated/tables.js:575 templates/navbar.html:107 -#: templates/search.html:8 templates/search_form.html:6 -#: templates/search_form.html:7 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 msgid "Search" msgstr "搜索" #: templates/InvenTree/settings/sidebar.html:19 -#: templates/InvenTree/settings/sidebar.html:41 +#: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" msgstr "" @@ -9136,13 +9786,13 @@ msgstr "" msgid "Server" msgstr "" -#: templates/InvenTree/settings/sidebar.html:39 +#: templates/InvenTree/settings/sidebar.html:41 #, fuzzy #| msgid "Label" msgid "Labels" msgstr "标签" -#: templates/InvenTree/settings/sidebar.html:43 +#: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" msgstr "" @@ -9154,6 +9804,12 @@ msgstr "销售订单设置" msgid "Stock Settings" msgstr "库存设置" +#: templates/InvenTree/settings/stock.html:31 +#, fuzzy +#| msgid "Stock Locations" +msgid "Stock Location Types" +msgstr "仓储地点" + #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" msgstr "帐户设置" @@ -9164,13 +9820,6 @@ msgstr "帐户设置" msgid "Change Password" msgstr "更改密码" -#: templates/InvenTree/settings/user.html:24 -#: templates/js/translated/helpers.js:100 -#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 -#: templates/notes_buttons.html:4 -msgid "Edit" -msgstr "编辑" - #: templates/InvenTree/settings/user.html:33 msgid "Username" msgstr "用户名" @@ -9196,6 +9845,7 @@ msgid "Unverified" msgstr "" #: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 msgid "Primary" msgstr "" @@ -9412,44 +10062,48 @@ msgstr "" msgid "Update Available" msgstr "" -#: templates/about.html:42 +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 msgid "InvenTree Documentation" msgstr "" -#: templates/about.html:47 +#: templates/about.html:54 msgid "API Version" msgstr "" -#: templates/about.html:52 +#: templates/about.html:59 msgid "Python Version" msgstr "" -#: templates/about.html:57 +#: templates/about.html:64 msgid "Django Version" msgstr "" -#: templates/about.html:62 +#: templates/about.html:69 msgid "View Code on GitHub" msgstr "" -#: templates/about.html:67 +#: templates/about.html:74 msgid "Credits" msgstr "" -#: templates/about.html:72 +#: templates/about.html:79 msgid "Mobile App" msgstr "" -#: templates/about.html:77 +#: templates/about.html:84 msgid "Submit Bug Report" msgstr "" -#: templates/about.html:84 templates/clip.html:4 +#: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" msgstr "" -#: templates/about.html:84 +#: templates/about.html:91 msgid "copy version information" msgstr "" @@ -9469,7 +10123,7 @@ msgstr "" msgid "Please confirm that %(email)s is an email address for user %(user_display)s." msgstr "" -#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:726 +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 msgid "Confirm" msgstr "确认" @@ -9645,30 +10299,30 @@ msgstr "" msgid "Add Attachment" msgstr "添加附件" -#: templates/attachment_table.html:11 -msgid "Delete selected attachments" -msgstr "" - -#: templates/attachment_table.html:12 templates/js/translated/attachment.js:129 -msgid "Delete Attachments" -msgstr "" - #: templates/barcode_data.html:5 msgid "Barcode Identifier" msgstr "" -#: templates/base.html:102 +#: templates/base.html:103 msgid "Server Restart Required" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" msgstr "" -#: templates/base.html:105 +#: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" msgstr "" +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + #: templates/email/build_order_completed.html:9 #: templates/email/new_order_assigned.html:9 #: templates/email/overdue_build_order.html:9 @@ -9697,7 +10351,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1633 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 msgid "Required Quantity" msgstr "" @@ -9711,15 +10365,15 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3140 +#: templates/js/translated/part.js:3182 msgid "Minimum Quantity" msgstr "" -#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1124 +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" msgstr "" -#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1125 +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 msgid "No response from the InvenTree server" msgstr "" @@ -9731,27 +10385,27 @@ msgstr "" msgid "API request returned error code 400" msgstr "" -#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1134 +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" msgstr "" -#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1135 +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" msgstr "" -#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1139 +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" msgstr "" -#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1140 +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" msgstr "" -#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1144 +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" msgstr "" -#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1145 +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" msgstr "" @@ -9763,19 +10417,29 @@ msgstr "" msgid "HTTP method not allowed at URL" msgstr "" -#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1149 +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" msgstr "" -#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1150 +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" msgstr "" #: templates/js/translated/api.js:261 -msgid "Unhandled Error Code" +msgid "Error 503: Service Unavailable" msgstr "" #: templates/js/translated/api.js:262 +#, fuzzy +#| msgid "Stock item is over-allocated" +msgid "The server is currently unavailable" +msgstr "库存物品分配过度!" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 msgid "Error code" msgstr "" @@ -9783,23 +10447,39 @@ msgstr "" msgid "All selected attachments will be deleted" msgstr "" -#: templates/js/translated/attachment.js:255 +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +#, fuzzy +#| msgid "Delete parameters" +msgid "Delete attachments" +msgstr "删除参数" + +#: templates/js/translated/attachment.js:253 +#, fuzzy +#| msgid "Attachments" +msgid "Attachment actions" +msgstr "附件" + +#: templates/js/translated/attachment.js:275 msgid "No attachments found" msgstr "" -#: templates/js/translated/attachment.js:285 +#: templates/js/translated/attachment.js:315 msgid "Edit Attachment" msgstr "编辑附件" -#: templates/js/translated/attachment.js:326 +#: templates/js/translated/attachment.js:346 msgid "Upload Date" msgstr "" -#: templates/js/translated/attachment.js:346 +#: templates/js/translated/attachment.js:366 msgid "Edit attachment" msgstr "" -#: templates/js/translated/attachment.js:354 +#: templates/js/translated/attachment.js:374 msgid "Delete attachment" msgstr "" @@ -9832,7 +10512,7 @@ msgid "Unknown response from server" msgstr "" #: templates/js/translated/barcode.js:252 -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "Invalid server response" msgstr "" @@ -9856,7 +10536,7 @@ msgstr "" msgid "Unlink" msgstr "" -#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1118 +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 msgid "Remove stock item" msgstr "" @@ -9914,783 +10594,927 @@ msgstr "" msgid "Barcode does not match a valid location" msgstr "" -#: templates/js/translated/bom.js:77 +#: templates/js/translated/bom.js:78 msgid "Create BOM Item" msgstr "" -#: templates/js/translated/bom.js:131 +#: templates/js/translated/bom.js:132 msgid "Display row data" msgstr "" -#: templates/js/translated/bom.js:187 +#: templates/js/translated/bom.js:188 msgid "Row Data" msgstr "" -#: templates/js/translated/bom.js:188 templates/js/translated/bom.js:699 -#: templates/js/translated/modals.js:71 templates/js/translated/modals.js:622 -#: templates/js/translated/modals.js:746 templates/js/translated/modals.js:1054 -#: templates/js/translated/purchase_order.js:791 templates/modals.html:15 +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 #: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 msgid "Close" msgstr "" -#: templates/js/translated/bom.js:305 +#: templates/js/translated/bom.js:306 msgid "Download BOM Template" msgstr "" -#: templates/js/translated/bom.js:350 +#: templates/js/translated/bom.js:351 msgid "Multi Level BOM" msgstr "" -#: templates/js/translated/bom.js:351 +#: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" msgstr "" -#: templates/js/translated/bom.js:356 +#: templates/js/translated/bom.js:357 msgid "Levels" msgstr "等级" -#: templates/js/translated/bom.js:357 +#: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" msgstr "" -#: templates/js/translated/bom.js:364 +#: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" msgstr "" -#: templates/js/translated/bom.js:365 +#: templates/js/translated/bom.js:366 msgid "Include alternative parts in exported BOM" msgstr "" -#: templates/js/translated/bom.js:370 +#: templates/js/translated/bom.js:371 msgid "Include Parameter Data" msgstr "包含参数数据" -#: templates/js/translated/bom.js:371 +#: templates/js/translated/bom.js:372 msgid "Include part parameter data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:376 +#: templates/js/translated/bom.js:377 msgid "Include Stock Data" msgstr "包括库存数据" -#: templates/js/translated/bom.js:377 +#: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" msgstr "在导出 BOM 中包括库存数据" -#: templates/js/translated/bom.js:382 +#: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" msgstr "包括制造商数据" -#: templates/js/translated/bom.js:383 +#: templates/js/translated/bom.js:384 msgid "Include part manufacturer data in exported BOM" msgstr "在导出 BOM 中包含制造商数据" -#: templates/js/translated/bom.js:388 +#: templates/js/translated/bom.js:389 msgid "Include Supplier Data" msgstr "包含供应商数据" -#: templates/js/translated/bom.js:389 +#: templates/js/translated/bom.js:390 msgid "Include part supplier data in exported BOM" msgstr "在导出 BOM 中包含供应商数据" -#: templates/js/translated/bom.js:394 +#: templates/js/translated/bom.js:395 msgid "Include Pricing Data" msgstr "" -#: templates/js/translated/bom.js:395 +#: templates/js/translated/bom.js:396 msgid "Include part pricing data in exported BOM" msgstr "" -#: templates/js/translated/bom.js:590 +#: templates/js/translated/bom.js:591 msgid "Remove substitute part" msgstr "" -#: templates/js/translated/bom.js:644 +#: templates/js/translated/bom.js:645 msgid "Select and add a new substitute part using the input below" msgstr "" -#: templates/js/translated/bom.js:655 +#: templates/js/translated/bom.js:656 msgid "Are you sure you wish to remove this substitute part link?" msgstr "" -#: templates/js/translated/bom.js:661 +#: templates/js/translated/bom.js:662 msgid "Remove Substitute Part" msgstr "" -#: templates/js/translated/bom.js:700 +#: templates/js/translated/bom.js:701 msgid "Add Substitute" msgstr "" -#: templates/js/translated/bom.js:701 +#: templates/js/translated/bom.js:702 msgid "Edit BOM Item Substitutes" msgstr "" -#: templates/js/translated/bom.js:763 +#: templates/js/translated/bom.js:764 msgid "All selected BOM items will be deleted" msgstr "" -#: templates/js/translated/bom.js:779 +#: templates/js/translated/bom.js:780 msgid "Delete selected BOM items?" msgstr "" -#: templates/js/translated/bom.js:906 +#: templates/js/translated/bom.js:826 +#, fuzzy +#| msgid "Delete parameters" +msgid "Delete items" +msgstr "删除参数" + +#: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" msgstr "" -#: templates/js/translated/bom.js:916 +#: templates/js/translated/bom.js:946 msgid "Substitutes Available" msgstr "" -#: templates/js/translated/bom.js:920 templates/js/translated/build.js:2090 +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 msgid "Variant stock allowed" msgstr "" -#: templates/js/translated/bom.js:984 +#: templates/js/translated/bom.js:1014 msgid "Substitutes" msgstr "" -#: templates/js/translated/bom.js:1104 +#: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" msgstr "" -#: templates/js/translated/bom.js:1109 +#: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" msgstr "" -#: templates/js/translated/bom.js:1116 +#: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1147 templates/js/translated/build.js:2173 -#: templates/js/translated/sales_order.js:1887 +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1152 templates/js/translated/build.js:2177 +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1154 templates/js/translated/build.js:2179 -#: templates/js/translated/part.js:1230 +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1156 templates/js/translated/build.js:2181 +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2164 -#: templates/js/translated/build.js:2255 +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1244 +#: templates/js/translated/bom.js:1279 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1246 +#: templates/js/translated/bom.js:1281 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1248 +#: templates/js/translated/bom.js:1283 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1250 templates/js/translated/bom.js:1445 +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1252 +#: templates/js/translated/bom.js:1287 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1272 +#: templates/js/translated/bom.js:1307 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1356 templates/js/translated/build.js:1927 +#: templates/js/translated/bom.js:1391 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1616 templates/js/translated/build.js:2073 +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1642 +#: templates/js/translated/bom.js:1677 msgid "Inherited from parent BOM" msgstr "" -#: templates/js/translated/build.js:126 +#: templates/js/translated/build.js:139 msgid "Edit Build Order" msgstr "" -#: templates/js/translated/build.js:169 +#: templates/js/translated/build.js:182 msgid "Create Build Order" msgstr "" -#: templates/js/translated/build.js:202 +#: templates/js/translated/build.js:214 msgid "Cancel Build Order" msgstr "" -#: templates/js/translated/build.js:211 +#: templates/js/translated/build.js:223 msgid "Are you sure you wish to cancel this build?" msgstr "是否确定取消生产?" -#: templates/js/translated/build.js:217 +#: templates/js/translated/build.js:229 msgid "Stock items have been allocated to this build order" msgstr "" -#: templates/js/translated/build.js:224 +#: templates/js/translated/build.js:236 msgid "There are incomplete outputs remaining for this build order" msgstr "" -#: templates/js/translated/build.js:276 +#: templates/js/translated/build.js:288 msgid "Build order is ready to be completed" msgstr "" -#: templates/js/translated/build.js:284 +#: templates/js/translated/build.js:296 msgid "This build order cannot be completed as there are incomplete outputs" msgstr "" -#: templates/js/translated/build.js:289 +#: templates/js/translated/build.js:301 msgid "Build Order is incomplete" msgstr "生产订单未完成" -#: templates/js/translated/build.js:307 +#: templates/js/translated/build.js:319 msgid "Complete Build Order" msgstr "生产订单完成" -#: templates/js/translated/build.js:348 templates/js/translated/stock.js:119 -#: templates/js/translated/stock.js:265 +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 msgid "Next available serial number" msgstr "" -#: templates/js/translated/build.js:350 templates/js/translated/stock.js:121 -#: templates/js/translated/stock.js:267 +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 msgid "Latest serial number" msgstr "" -#: templates/js/translated/build.js:359 +#: templates/js/translated/build.js:371 msgid "The Bill of Materials contains trackable parts" msgstr "" -#: templates/js/translated/build.js:360 +#: templates/js/translated/build.js:372 msgid "Build outputs must be generated individually" msgstr "" -#: templates/js/translated/build.js:368 +#: templates/js/translated/build.js:380 msgid "Trackable parts can have serial numbers specified" msgstr "可追踪商品可以指定序列号" -#: templates/js/translated/build.js:369 +#: templates/js/translated/build.js:381 msgid "Enter serial numbers to generate multiple single build outputs" msgstr "" -#: templates/js/translated/build.js:376 +#: templates/js/translated/build.js:388 msgid "Create Build Output" msgstr "创建创建生产产出" -#: templates/js/translated/build.js:407 +#: templates/js/translated/build.js:419 msgid "Allocate stock items to this build output" msgstr "" -#: templates/js/translated/build.js:418 -msgid "Unallocate stock from build output" -msgstr "" - #: templates/js/translated/build.js:427 +#, fuzzy +#| msgid "Manually allocate stock to build" +msgid "Deallocate stock from build output" +msgstr "手动分配存货进行生成" + +#: templates/js/translated/build.js:436 msgid "Complete build output" msgstr "" -#: templates/js/translated/build.js:435 +#: templates/js/translated/build.js:444 #, fuzzy #| msgid "Build output" msgid "Scrap build output" msgstr "生产产出" -#: templates/js/translated/build.js:442 +#: templates/js/translated/build.js:451 msgid "Delete build output" msgstr "" -#: templates/js/translated/build.js:462 -msgid "Are you sure you wish to unallocate stock items from this build?" -msgstr "" +#: templates/js/translated/build.js:471 +#, fuzzy +#| msgid "Are you sure you wish to cancel this build?" +msgid "Are you sure you wish to deallocate the selected stock items from this build?" +msgstr "是否确定取消生产?" -#: templates/js/translated/build.js:480 -msgid "Unallocate Stock Items" -msgstr "" +#: templates/js/translated/build.js:489 +#, fuzzy +#| msgid "Select Stock Items" +msgid "Deallocate Stock Items" +msgstr "选择库存项" -#: templates/js/translated/build.js:566 templates/js/translated/build.js:690 -#: templates/js/translated/build.js:812 +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 msgid "Select Build Outputs" msgstr "" -#: templates/js/translated/build.js:567 templates/js/translated/build.js:691 -#: templates/js/translated/build.js:813 +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 msgid "At least one build output must be selected" msgstr "" -#: templates/js/translated/build.js:581 +#: templates/js/translated/build.js:590 #, fuzzy #| msgid "Delete any build outputs which have not been completed" msgid "Selected build outputs will be marked as complete" msgstr "删除所有未完成的生产产出" -#: templates/js/translated/build.js:585 templates/js/translated/build.js:715 -#: templates/js/translated/build.js:835 +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 msgid "Output" msgstr "" -#: templates/js/translated/build.js:609 +#: templates/js/translated/build.js:622 msgid "Complete Build Outputs" msgstr "" -#: templates/js/translated/build.js:706 +#: templates/js/translated/build.js:719 #, fuzzy #| msgid "Delete any build outputs which have not been completed" msgid "Selected build outputs will be marked as scrapped" msgstr "删除所有未完成的生产产出" -#: templates/js/translated/build.js:708 +#: templates/js/translated/build.js:721 #, fuzzy #| msgid "Delete any build outputs which have not been completed" msgid "Scrapped output are marked as rejected" msgstr "删除所有未完成的生产产出" -#: templates/js/translated/build.js:709 +#: templates/js/translated/build.js:722 #, fuzzy #| msgid "Stock item is over-allocated" msgid "Allocated stock items will no longer be available" msgstr "库存物品分配过度!" -#: templates/js/translated/build.js:710 +#: templates/js/translated/build.js:723 msgid "The completion status of the build order will not be adjusted" msgstr "" -#: templates/js/translated/build.js:737 +#: templates/js/translated/build.js:754 #, fuzzy #| msgid "Create Build Output" msgid "Scrap Build Outputs" msgstr "创建创建生产产出" -#: templates/js/translated/build.js:827 +#: templates/js/translated/build.js:844 #, fuzzy #| msgid "All selected supplier parts will be deleted" msgid "Selected build outputs will be deleted" msgstr "删除所有选定的供应商商品" -#: templates/js/translated/build.js:829 +#: templates/js/translated/build.js:846 #, fuzzy #| msgid "Build output is already completed" msgid "Build output data will be permanently deleted" msgstr "生产产出已完成" -#: templates/js/translated/build.js:830 +#: templates/js/translated/build.js:847 #, fuzzy #| msgid "All selected supplier parts will be deleted" msgid "Allocated stock items will be returned to stock" msgstr "删除所有选定的供应商商品" -#: templates/js/translated/build.js:848 +#: templates/js/translated/build.js:865 msgid "Delete Build Outputs" msgstr "" -#: templates/js/translated/build.js:934 +#: templates/js/translated/build.js:952 msgid "No build order allocations found" msgstr "" -#: templates/js/translated/build.js:971 +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +#, fuzzy +#| msgid "Allocated Parts" +msgid "Allocated Quantity" +msgstr "已分配的部件" + +#: templates/js/translated/build.js:995 msgid "Location not specified" msgstr "未指定仓储地点" -#: templates/js/translated/build.js:1047 +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "已完成输出" + +#: templates/js/translated/build.js:1035 +#, fuzzy +#| msgid "Complete outputs" +msgid "Scrap outputs" +msgstr "已完成输出" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "删除输出" + +#: templates/js/translated/build.js:1107 #, fuzzy #| msgid "Build output" msgid "build output" msgstr "生产产出" -#: templates/js/translated/build.js:1048 +#: templates/js/translated/build.js:1108 #, fuzzy #| msgid "Build output" msgid "build outputs" msgstr "生产产出" -#: templates/js/translated/build.js:1383 +#: templates/js/translated/build.js:1112 +#, fuzzy +#| msgid "Build actions" +msgid "Build output actions" +msgstr "生产操作" + +#: templates/js/translated/build.js:1281 msgid "No active build outputs found" msgstr "" -#: templates/js/translated/build.js:1457 -msgid "Allocated Stock" +#: templates/js/translated/build.js:1374 +#, fuzzy +#| msgid "Allocated Parts" +msgid "Allocated Lines" +msgstr "已分配的部件" + +#: templates/js/translated/build.js:1388 +msgid "Required Tests" msgstr "" -#: templates/js/translated/build.js:1464 -msgid "No tracked BOM items for this build" -msgstr "" - -#: templates/js/translated/build.js:1486 -msgid "Completed Tests" -msgstr "" - -#: templates/js/translated/build.js:1491 -msgid "No required tests for this build" -msgstr "" - -#: templates/js/translated/build.js:2032 templates/js/translated/build.js:3056 -#: templates/js/translated/sales_order.js:1632 -msgid "Edit stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2034 templates/js/translated/build.js:3057 -#: templates/js/translated/sales_order.js:1633 -msgid "Delete stock allocation" -msgstr "" - -#: templates/js/translated/build.js:2050 -msgid "Edit Allocation" -msgstr "" - -#: templates/js/translated/build.js:2060 -msgid "Remove Allocation" -msgstr "" - -#: templates/js/translated/build.js:2086 -msgid "Substitute parts available" -msgstr "" - -#: templates/js/translated/build.js:2122 -msgid "Quantity Per" -msgstr "" - -#: templates/js/translated/build.js:2167 -#: templates/js/translated/sales_order.js:1894 -msgid "Insufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2169 -#: templates/js/translated/sales_order.js:1892 -msgid "Sufficient stock available" -msgstr "" - -#: templates/js/translated/build.js:2263 -#: templates/js/translated/sales_order.js:1993 -msgid "Build stock" -msgstr "" - -#: templates/js/translated/build.js:2267 templates/stock_table.html:38 -msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2270 -#: templates/js/translated/sales_order.js:1987 -msgid "Allocate stock" -msgstr "" - -#: templates/js/translated/build.js:2310 -#: templates/js/translated/purchase_order.js:616 -#: templates/js/translated/sales_order.js:1159 +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 msgid "Select Parts" msgstr "选择商品" -#: templates/js/translated/build.js:2311 -#: templates/js/translated/sales_order.js:1160 +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 msgid "You must select at least one part to allocate" msgstr "" -#: templates/js/translated/build.js:2359 -#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 msgid "Specify stock allocation quantity" msgstr "" -#: templates/js/translated/build.js:2438 +#: templates/js/translated/build.js:1701 msgid "All Parts Allocated" msgstr "" -#: templates/js/translated/build.js:2439 +#: templates/js/translated/build.js:1702 msgid "All selected parts have been fully allocated" msgstr "" -#: templates/js/translated/build.js:2453 -#: templates/js/translated/sales_order.js:1174 +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 msgid "Select source location (leave blank to take from all locations)" msgstr "" -#: templates/js/translated/build.js:2481 +#: templates/js/translated/build.js:1744 msgid "Allocate Stock Items to Build Order" msgstr "" -#: templates/js/translated/build.js:2492 -#: templates/js/translated/sales_order.js:1271 +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 msgid "No matching stock locations" msgstr "" -#: templates/js/translated/build.js:2565 -#: templates/js/translated/sales_order.js:1348 +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 msgid "No matching stock items" msgstr "" -#: templates/js/translated/build.js:2662 +#: templates/js/translated/build.js:1925 msgid "Automatic Stock Allocation" msgstr "" -#: templates/js/translated/build.js:2663 +#: templates/js/translated/build.js:1926 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" msgstr "" -#: templates/js/translated/build.js:2665 +#: templates/js/translated/build.js:1928 msgid "If a location is specified, stock will only be allocated from that location" msgstr "" -#: templates/js/translated/build.js:2666 +#: templates/js/translated/build.js:1929 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" msgstr "" -#: templates/js/translated/build.js:2667 +#: templates/js/translated/build.js:1930 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:2694 +#: templates/js/translated/build.js:1961 msgid "Allocate Stock Items" msgstr "" -#: templates/js/translated/build.js:2800 +#: templates/js/translated/build.js:2067 msgid "No builds matching query" msgstr "" -#: templates/js/translated/build.js:2835 templates/js/translated/part.js:2208 -#: templates/js/translated/part.js:2692 templates/js/translated/stock.js:1759 -#: templates/js/translated/stock.js:2458 +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 msgid "Select" msgstr "" -#: templates/js/translated/build.js:2849 +#: templates/js/translated/build.js:2116 msgid "Build order is overdue" msgstr "" -#: templates/js/translated/build.js:2883 +#: templates/js/translated/build.js:2162 msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2919 templates/js/translated/stock.js:2779 +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 msgid "No user information" msgstr "没有用户信息" -#: templates/js/translated/build.js:2934 +#: templates/js/translated/build.js:2213 msgid "group" msgstr "" -#: templates/js/translated/build.js:3033 -msgid "No parts allocated for" +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" msgstr "" -#: templates/js/translated/company.js:87 +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +#, fuzzy +#| msgid "Build actions" +msgid "build line" +msgstr "生产操作" + +#: templates/js/translated/build.js:2444 +#, fuzzy +#| msgid "Build actions" +msgid "build lines" +msgstr "生产操作" + +#: templates/js/translated/build.js:2462 +#, fuzzy +#| msgid "Subcategories" +msgid "No build lines found" +msgstr "子类别" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "可追溯商品" + +#: templates/js/translated/build.js:2527 +#, fuzzy +#| msgid "Quantity" +msgid "Unit Quantity" +msgstr "数量" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +#, fuzzy +#| msgid "Minimum Stock" +msgid "Consumable Item" +msgstr "最低库存" + +#: templates/js/translated/build.js:2630 +#, fuzzy +#| msgid "Stock Item" +msgid "Tracked item" +msgstr "库存项" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +#, fuzzy +#| msgid "Confirm stock allocation" +msgid "Remove stock allocation" +msgstr "确认库存分配" + +#: templates/js/translated/company.js:98 msgid "Add Manufacturer" msgstr "添加制造商" -#: templates/js/translated/company.js:100 -#: templates/js/translated/company.js:202 +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 msgid "Add Manufacturer Part" msgstr "添加制造商商品" -#: templates/js/translated/company.js:121 +#: templates/js/translated/company.js:132 msgid "Edit Manufacturer Part" msgstr "编辑制造商商品" -#: templates/js/translated/company.js:190 -#: templates/js/translated/purchase_order.js:94 +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 msgid "Add Supplier" msgstr "添加供应商" -#: templates/js/translated/company.js:232 -#: templates/js/translated/purchase_order.js:338 +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 msgid "Add Supplier Part" msgstr "添加供应商商品" -#: templates/js/translated/company.js:333 +#: templates/js/translated/company.js:344 msgid "All selected supplier parts will be deleted" msgstr "删除所有选定的供应商商品" -#: templates/js/translated/company.js:349 +#: templates/js/translated/company.js:360 msgid "Delete Supplier Parts" msgstr "" -#: templates/js/translated/company.js:457 +#: templates/js/translated/company.js:465 msgid "Add new Company" msgstr "增加新的公司信息" -#: templates/js/translated/company.js:528 +#: templates/js/translated/company.js:536 msgid "Parts Supplied" msgstr "" -#: templates/js/translated/company.js:537 +#: templates/js/translated/company.js:545 msgid "Parts Manufactured" msgstr "" -#: templates/js/translated/company.js:552 +#: templates/js/translated/company.js:560 msgid "No company information found" msgstr "未找到该公司信息" -#: templates/js/translated/company.js:601 +#: templates/js/translated/company.js:609 #, fuzzy #| msgid "Create new part" msgid "Create New Contact" msgstr "新建商品" -#: templates/js/translated/company.js:617 -#: templates/js/translated/company.js:740 +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 #, fuzzy #| msgid "Contact" msgid "Edit Contact" msgstr "联系人" -#: templates/js/translated/company.js:654 +#: templates/js/translated/company.js:662 #, fuzzy #| msgid "All selected supplier parts will be deleted" msgid "All selected contacts will be deleted" msgstr "删除所有选定的供应商商品" -#: templates/js/translated/company.js:660 -#: templates/js/translated/company.js:724 +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 msgid "Role" msgstr "" -#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:676 #, fuzzy #| msgid "Delete outputs" msgid "Delete Contacts" msgstr "删除输出" -#: templates/js/translated/company.js:699 +#: templates/js/translated/company.js:707 #, fuzzy #| msgid "No matching action found" msgid "No contacts found" msgstr "未找到指定操作" -#: templates/js/translated/company.js:712 +#: templates/js/translated/company.js:720 #, fuzzy #| msgid "Phone number" msgid "Phone Number" msgstr "电话号码" -#: templates/js/translated/company.js:718 +#: templates/js/translated/company.js:726 #, fuzzy #| msgid "Address" msgid "Email Address" msgstr "地址" -#: templates/js/translated/company.js:744 +#: templates/js/translated/company.js:752 #, fuzzy #| msgid "Delete part" msgid "Delete Contact" msgstr "删除商品" -#: templates/js/translated/company.js:818 +#: templates/js/translated/company.js:849 +#, fuzzy +#| msgid "Create new part" +msgid "Create New Address" +msgstr "新建商品" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +#, fuzzy +#| msgid "Address" +msgid "Edit Address" +msgstr "地址" + +#: templates/js/translated/company.js:899 +#, fuzzy +#| msgid "All selected supplier parts will be deleted" +msgid "All selected addresses will be deleted" +msgstr "删除所有选定的供应商商品" + +#: templates/js/translated/company.js:913 +#, fuzzy +#| msgid "Delete parameters" +msgid "Delete Addresses" +msgstr "删除参数" + +#: templates/js/translated/company.js:940 +#, fuzzy +#| msgid "No parameters found" +msgid "No addresses found" +msgstr "无指定参数" + +#: templates/js/translated/company.js:979 +#, fuzzy +#| msgid "Install into" +msgid "Postal city" +msgstr "安装到" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +#, fuzzy +#| msgid "Internal Prices" +msgid "Internal notes" +msgstr "内部价格" + +#: templates/js/translated/company.js:1029 +#, fuzzy +#| msgid "Delete parts" +msgid "Delete Address" +msgstr "删除商品" + +#: templates/js/translated/company.js:1102 msgid "All selected manufacturer parts will be deleted" msgstr "" -#: templates/js/translated/company.js:833 +#: templates/js/translated/company.js:1117 msgid "Delete Manufacturer Parts" msgstr "删除制造商商品" -#: templates/js/translated/company.js:867 +#: templates/js/translated/company.js:1151 msgid "All selected parameters will be deleted" msgstr "" -#: templates/js/translated/company.js:881 +#: templates/js/translated/company.js:1165 msgid "Delete Parameters" msgstr "删除参数" -#: templates/js/translated/company.js:917 +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "订购商品" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "删除制造商商品" + +#: templates/js/translated/company.js:1230 +#, fuzzy +#| msgid "Manufacturer part description" +msgid "Manufacturer part actions" +msgstr "制造商商品描述" + +#: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" msgstr "" -#: templates/js/translated/company.js:937 -#: templates/js/translated/company.js:1177 templates/js/translated/part.js:776 -#: templates/js/translated/part.js:1184 +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 msgid "Template part" msgstr "" -#: templates/js/translated/company.js:941 -#: templates/js/translated/company.js:1181 templates/js/translated/part.js:780 -#: templates/js/translated/part.js:1188 +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 msgid "Assembled part" msgstr "" -#: templates/js/translated/company.js:1061 templates/js/translated/part.js:1437 +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 msgid "No parameters found" msgstr "无指定参数" -#: templates/js/translated/company.js:1096 templates/js/translated/part.js:1500 +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 msgid "Edit parameter" msgstr "编辑参数" -#: templates/js/translated/company.js:1097 templates/js/translated/part.js:1501 +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 msgid "Delete parameter" msgstr "删除参数" -#: templates/js/translated/company.js:1114 templates/js/translated/part.js:1407 +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 msgid "Edit Parameter" msgstr "编辑参数" -#: templates/js/translated/company.js:1123 templates/js/translated/part.js:1522 +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 msgid "Delete Parameter" msgstr "删除参数" -#: templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "删除供应商商品" + +#: templates/js/translated/company.js:1536 msgid "No supplier parts found" msgstr "未找到供应商商品" -#: templates/js/translated/company.js:1274 +#: templates/js/translated/company.js:1654 #, fuzzy #| msgid "Units" msgid "Base Units" msgstr "单位" -#: templates/js/translated/company.js:1304 +#: templates/js/translated/company.js:1684 msgid "Availability" msgstr "" -#: templates/js/translated/company.js:1335 +#: templates/js/translated/company.js:1715 msgid "Edit supplier part" msgstr "编辑供应商商品" -#: templates/js/translated/company.js:1336 +#: templates/js/translated/company.js:1716 msgid "Delete supplier part" msgstr "删除供应商商品" -#: templates/js/translated/company.js:1389 +#: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" msgstr "" -#: templates/js/translated/company.js:1399 +#: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" msgstr "" -#: templates/js/translated/company.js:1414 +#: templates/js/translated/company.js:1794 msgid "No price break information found" msgstr "" -#: templates/js/translated/company.js:1443 +#: templates/js/translated/company.js:1823 msgid "Last updated" msgstr "" -#: templates/js/translated/company.js:1450 +#: templates/js/translated/company.js:1830 msgid "Edit price break" msgstr "" -#: templates/js/translated/company.js:1451 +#: templates/js/translated/company.js:1831 msgid "Delete price break" msgstr "" #: templates/js/translated/filters.js:186 -#: templates/js/translated/filters.js:550 +#: templates/js/translated/filters.js:672 msgid "true" msgstr "" #: templates/js/translated/filters.js:190 -#: templates/js/translated/filters.js:551 +#: templates/js/translated/filters.js:673 msgid "false" msgstr "" @@ -10698,93 +11522,93 @@ msgstr "" msgid "Select filter" msgstr "选择筛选项" -#: templates/js/translated/filters.js:328 +#: templates/js/translated/filters.js:437 msgid "Print Labels" msgstr "打印标签" -#: templates/js/translated/filters.js:332 +#: templates/js/translated/filters.js:441 #, fuzzy #| msgid "Print Order Reports" msgid "Print Reports" msgstr "打印订单报表" -#: templates/js/translated/filters.js:344 +#: templates/js/translated/filters.js:453 #, fuzzy #| msgid "Download Image" msgid "Download table data" msgstr "下载图片" -#: templates/js/translated/filters.js:351 +#: templates/js/translated/filters.js:460 msgid "Reload table data" msgstr "" -#: templates/js/translated/filters.js:360 +#: templates/js/translated/filters.js:469 msgid "Add new filter" msgstr "" -#: templates/js/translated/filters.js:368 +#: templates/js/translated/filters.js:477 msgid "Clear all filters" msgstr "" -#: templates/js/translated/filters.js:460 +#: templates/js/translated/filters.js:582 msgid "Create filter" msgstr "" -#: templates/js/translated/forms.js:369 templates/js/translated/forms.js:384 -#: templates/js/translated/forms.js:398 templates/js/translated/forms.js:412 +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 msgid "Action Prohibited" msgstr "" -#: templates/js/translated/forms.js:371 +#: templates/js/translated/forms.js:376 msgid "Create operation not allowed" msgstr "" -#: templates/js/translated/forms.js:386 +#: templates/js/translated/forms.js:391 msgid "Update operation not allowed" msgstr "" -#: templates/js/translated/forms.js:400 +#: templates/js/translated/forms.js:405 msgid "Delete operation not allowed" msgstr "" -#: templates/js/translated/forms.js:414 +#: templates/js/translated/forms.js:419 msgid "View operation not allowed" msgstr "" -#: templates/js/translated/forms.js:752 +#: templates/js/translated/forms.js:772 msgid "Keep this form open" msgstr "" -#: templates/js/translated/forms.js:853 +#: templates/js/translated/forms.js:874 msgid "Enter a valid number" msgstr "" -#: templates/js/translated/forms.js:1401 templates/modals.html:19 +#: templates/js/translated/forms.js:1422 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" msgstr "" -#: templates/js/translated/forms.js:1855 +#: templates/js/translated/forms.js:1876 msgid "No results found" msgstr "" -#: templates/js/translated/forms.js:2071 templates/js/translated/search.js:281 +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 msgid "Searching" msgstr "" -#: templates/js/translated/forms.js:2276 +#: templates/js/translated/forms.js:2394 msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:2733 +#: templates/js/translated/forms.js:2851 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:2745 +#: templates/js/translated/forms.js:2863 msgid "Select Columns" msgstr "" @@ -10804,106 +11628,138 @@ msgstr "" msgid "False" msgstr "" -#: templates/js/translated/label.js:58 -msgid "Select Printer" -msgstr "" - -#: templates/js/translated/label.js:62 -msgid "Export to PDF" -msgstr "" - -#: templates/js/translated/label.js:114 +#: templates/js/translated/index.js:104 #, fuzzy -#| msgid "Rejected" -msgid "selected" -msgstr "已拒绝" +#| msgid "Stock required for build order" +msgid "No parts required for builds" +msgstr "生产订单所需的库存" -#: templates/js/translated/label.js:122 templates/js/translated/label.js:139 -msgid "Select Label Template" -msgstr "选择标签模板" +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" -#: templates/js/translated/label.js:178 templates/js/translated/report.js:123 +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 #, fuzzy #| msgid "Select Stock Items" msgid "Select Items" msgstr "选择库存项" -#: templates/js/translated/label.js:179 +#: templates/js/translated/label.js:54 #, fuzzy #| msgid "Stock item(s) must be selected before printing labels" msgid "No items selected for printing" msgstr "打印标签前必须选择库存项目" -#: templates/js/translated/label.js:195 +#: templates/js/translated/label.js:72 msgid "No Labels Found" msgstr "未找到标签" -#: templates/js/translated/label.js:196 +#: templates/js/translated/label.js:73 #, fuzzy #| msgid "No labels found which match the selected part(s)" msgid "No label templates found which match the selected items" msgstr "没有找到与所选商品相匹配的标签" -#: templates/js/translated/label.js:215 +#: templates/js/translated/label.js:97 +#, fuzzy +#| msgid "Rejected" +msgid "selected" +msgstr "已拒绝" + +#: templates/js/translated/label.js:133 +#, fuzzy +#| msgid "Print actions" +msgid "Printing Options" +msgstr "打印操作" + +#: templates/js/translated/label.js:143 +#, fuzzy +#| msgid "Print labels" +msgid "Print label" +msgstr "打印标签" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "打印标签" + +#: templates/js/translated/label.js:144 +#, fuzzy +#| msgid "Print Label" +msgid "Print" +msgstr "打印标签" + +#: templates/js/translated/label.js:150 +#, fuzzy +#| msgid "Select Label Template" +msgid "Select label template" +msgstr "选择标签模板" + +#: templates/js/translated/label.js:163 +#, fuzzy +#| msgid "Select supplier" +msgid "Select plugin" +msgstr "选择供应商" + +#: templates/js/translated/label.js:182 msgid "Labels sent to printer" msgstr "" -#: templates/js/translated/modals.js:55 templates/js/translated/modals.js:152 -#: templates/js/translated/modals.js:677 +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 msgid "Cancel" msgstr "取消" -#: templates/js/translated/modals.js:60 templates/js/translated/modals.js:151 -#: templates/js/translated/modals.js:745 templates/js/translated/modals.js:1053 +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" msgstr "" -#: templates/js/translated/modals.js:150 +#: templates/js/translated/modals.js:156 msgid "Form Title" msgstr "" -#: templates/js/translated/modals.js:439 +#: templates/js/translated/modals.js:445 msgid "Waiting for server..." msgstr "" -#: templates/js/translated/modals.js:590 +#: templates/js/translated/modals.js:596 msgid "Show Error Information" msgstr "" -#: templates/js/translated/modals.js:676 +#: templates/js/translated/modals.js:682 msgid "Accept" msgstr "" -#: templates/js/translated/modals.js:734 +#: templates/js/translated/modals.js:740 msgid "Loading Data" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Invalid response from server" msgstr "" -#: templates/js/translated/modals.js:1005 +#: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" msgstr "" -#: templates/js/translated/modals.js:1017 +#: templates/js/translated/modals.js:1023 msgid "Error posting form data" msgstr "" -#: templates/js/translated/modals.js:1114 +#: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" msgstr "" -#: templates/js/translated/modals.js:1129 +#: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" msgstr "" -#: templates/js/translated/modals.js:1130 +#: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" msgstr "" -#: templates/js/translated/modals.js:1153 +#: templates/js/translated/modals.js:1159 msgid "Error requesting form data" msgstr "" @@ -10912,32 +11768,32 @@ msgid "No news found" msgstr "" #: templates/js/translated/news.js:38 -#: templates/js/translated/notification.js:45 -#: templates/js/translated/part.js:1577 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 msgid "ID" msgstr "" -#: templates/js/translated/notification.js:51 +#: templates/js/translated/notification.js:52 msgid "Age" msgstr "" -#: templates/js/translated/notification.js:64 +#: templates/js/translated/notification.js:65 msgid "Notification" msgstr "" -#: templates/js/translated/notification.js:223 +#: templates/js/translated/notification.js:224 msgid "Mark as unread" msgstr "" -#: templates/js/translated/notification.js:227 +#: templates/js/translated/notification.js:228 msgid "Mark as read" msgstr "" -#: templates/js/translated/notification.js:253 +#: templates/js/translated/notification.js:254 msgid "No unread notifications" msgstr "" -#: templates/js/translated/notification.js:295 templates/notifications.html:12 +#: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" msgstr "" @@ -10962,7 +11818,7 @@ msgid "Delete Line" msgstr "" #: templates/js/translated/order.js:281 -#: templates/js/translated/purchase_order.js:1958 +#: templates/js/translated/purchase_order.js:1981 msgid "No line items found" msgstr "" @@ -10978,371 +11834,363 @@ msgstr "" msgid "Delete line" msgstr "" -#: templates/js/translated/part.js:91 +#: templates/js/translated/part.js:90 msgid "Part Attributes" msgstr "商品属性" -#: templates/js/translated/part.js:95 +#: templates/js/translated/part.js:94 msgid "Part Creation Options" msgstr "商品创建选项" -#: templates/js/translated/part.js:99 +#: templates/js/translated/part.js:98 msgid "Part Duplication Options" msgstr "商品重复选项" -#: templates/js/translated/part.js:122 +#: templates/js/translated/part.js:121 msgid "Add Part Category" msgstr "增加商品类别" -#: templates/js/translated/part.js:294 +#: templates/js/translated/part.js:305 msgid "Parent part category" msgstr "" -#: templates/js/translated/part.js:310 templates/js/translated/stock.js:147 +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" msgstr "" -#: templates/js/translated/part.js:330 +#: templates/js/translated/part.js:349 msgid "Create Part Category" msgstr "创建商品类别" -#: templates/js/translated/part.js:333 +#: templates/js/translated/part.js:352 #, fuzzy #| msgid "Create new part category" msgid "Create new category after this one" msgstr "新建商品类别" -#: templates/js/translated/part.js:334 +#: templates/js/translated/part.js:353 #, fuzzy #| msgid "Part category" msgid "Part category created" msgstr "商品类别" -#: templates/js/translated/part.js:348 +#: templates/js/translated/part.js:367 msgid "Edit Part Category" msgstr "编辑商品类别" -#: templates/js/translated/part.js:361 +#: templates/js/translated/part.js:380 msgid "Are you sure you want to delete this part category?" msgstr "" -#: templates/js/translated/part.js:366 +#: templates/js/translated/part.js:385 msgid "Move to parent category" msgstr "" -#: templates/js/translated/part.js:375 +#: templates/js/translated/part.js:394 msgid "Delete Part Category" msgstr "删除商品类别" -#: templates/js/translated/part.js:379 +#: templates/js/translated/part.js:398 msgid "Action for parts in this category" msgstr "" -#: templates/js/translated/part.js:384 +#: templates/js/translated/part.js:403 msgid "Action for child categories" msgstr "" -#: templates/js/translated/part.js:408 +#: templates/js/translated/part.js:427 msgid "Create Part" msgstr "创建商品" -#: templates/js/translated/part.js:410 +#: templates/js/translated/part.js:429 msgid "Create another part after this one" msgstr "" -#: templates/js/translated/part.js:411 +#: templates/js/translated/part.js:430 msgid "Part created successfully" msgstr "" -#: templates/js/translated/part.js:439 +#: templates/js/translated/part.js:458 msgid "Edit Part" msgstr "编辑商品" -#: templates/js/translated/part.js:441 +#: templates/js/translated/part.js:460 msgid "Part edited" msgstr "" -#: templates/js/translated/part.js:452 +#: templates/js/translated/part.js:471 msgid "Create Part Variant" msgstr "" -#: templates/js/translated/part.js:509 +#: templates/js/translated/part.js:528 msgid "Active Part" msgstr "" -#: templates/js/translated/part.js:510 +#: templates/js/translated/part.js:529 msgid "Part cannot be deleted as it is currently active" msgstr "" -#: templates/js/translated/part.js:524 +#: templates/js/translated/part.js:543 msgid "Deleting this part cannot be reversed" msgstr "" -#: templates/js/translated/part.js:526 +#: templates/js/translated/part.js:545 msgid "Any stock items for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:527 +#: templates/js/translated/part.js:546 msgid "This part will be removed from any Bills of Material" msgstr "" -#: templates/js/translated/part.js:528 +#: templates/js/translated/part.js:547 msgid "All manufacturer and supplier information for this part will be deleted" msgstr "" -#: templates/js/translated/part.js:535 +#: templates/js/translated/part.js:554 msgid "Delete Part" msgstr "" -#: templates/js/translated/part.js:571 +#: templates/js/translated/part.js:590 msgid "You are subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:573 +#: templates/js/translated/part.js:592 msgid "You have subscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:578 +#: templates/js/translated/part.js:597 msgid "Subscribe to notifications for this item" msgstr "" -#: templates/js/translated/part.js:580 +#: templates/js/translated/part.js:599 msgid "You have unsubscribed to notifications for this item" msgstr "" -#: templates/js/translated/part.js:597 +#: templates/js/translated/part.js:616 msgid "Validating the BOM will mark each line item as valid" msgstr "" -#: templates/js/translated/part.js:607 +#: templates/js/translated/part.js:626 msgid "Validate Bill of Materials" msgstr "" -#: templates/js/translated/part.js:610 +#: templates/js/translated/part.js:629 msgid "Validated Bill of Materials" msgstr "" -#: templates/js/translated/part.js:635 +#: templates/js/translated/part.js:654 msgid "Copy Bill of Materials" msgstr "" -#: templates/js/translated/part.js:663 -#: templates/js/translated/table_filters.js:660 +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 msgid "Low stock" msgstr "" -#: templates/js/translated/part.js:666 +#: templates/js/translated/part.js:685 msgid "No stock available" msgstr "" -#: templates/js/translated/part.js:726 +#: templates/js/translated/part.js:745 msgid "Demand" msgstr "" -#: templates/js/translated/part.js:749 +#: templates/js/translated/part.js:768 msgid "Unit" msgstr "" -#: templates/js/translated/part.js:768 templates/js/translated/part.js:1176 -msgid "Trackable part" -msgstr "可追溯商品" - -#: templates/js/translated/part.js:772 templates/js/translated/part.js:1180 +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 msgid "Virtual part" msgstr "虚拟商品" -#: templates/js/translated/part.js:784 +#: templates/js/translated/part.js:803 msgid "Subscribed part" msgstr "" -#: templates/js/translated/part.js:788 +#: templates/js/translated/part.js:807 msgid "Salable part" msgstr "可销售商品" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Schedule generation of a new stocktake report." msgstr "" -#: templates/js/translated/part.js:863 +#: templates/js/translated/part.js:886 msgid "Once complete, the stocktake report will be available for download." msgstr "" -#: templates/js/translated/part.js:871 +#: templates/js/translated/part.js:894 msgid "Generate Stocktake Report" msgstr "" -#: templates/js/translated/part.js:875 +#: templates/js/translated/part.js:898 msgid "Stocktake report scheduled" msgstr "" -#: templates/js/translated/part.js:1024 +#: templates/js/translated/part.js:1047 msgid "No stocktake information available" msgstr "" -#: templates/js/translated/part.js:1082 templates/js/translated/part.js:1118 +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 msgid "Edit Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1086 templates/js/translated/part.js:1128 +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 msgid "Delete Stocktake Entry" msgstr "" -#: templates/js/translated/part.js:1255 +#: templates/js/translated/part.js:1278 msgid "No variants found" msgstr "" -#: templates/js/translated/part.js:1572 +#: templates/js/translated/part.js:1596 msgid "No part parameter templates found" msgstr "未找到商品参数模板" -#: templates/js/translated/part.js:1635 +#: templates/js/translated/part.js:1659 msgid "Edit Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1647 +#: templates/js/translated/part.js:1671 msgid "Any parameters which reference this template will also be deleted" msgstr "" -#: templates/js/translated/part.js:1655 +#: templates/js/translated/part.js:1679 msgid "Delete Part Parameter Template" msgstr "" -#: templates/js/translated/part.js:1689 -#: templates/js/translated/purchase_order.js:1618 +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 msgid "No purchase orders found" msgstr "" -#: templates/js/translated/part.js:1832 -#: templates/js/translated/purchase_order.js:2121 -#: templates/js/translated/return_order.js:740 -#: templates/js/translated/sales_order.js:1855 +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 msgid "This line item is overdue" msgstr "" -#: templates/js/translated/part.js:1877 -#: templates/js/translated/purchase_order.js:2188 +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 msgid "Receive line item" msgstr "" -#: templates/js/translated/part.js:1944 +#: templates/js/translated/part.js:1964 msgid "Delete part relationship" msgstr "" -#: templates/js/translated/part.js:1966 +#: templates/js/translated/part.js:1986 msgid "Delete Part Relationship" msgstr "" -#: templates/js/translated/part.js:2054 templates/js/translated/part.js:2366 +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 msgid "No parts found" msgstr "" -#: templates/js/translated/part.js:2192 +#: templates/js/translated/part.js:2195 +msgid "Set the part category for the selected parts" +msgstr "" + +#: templates/js/translated/part.js:2200 +msgid "Set Part Category" +msgstr "设置商品类别" + +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "设置类别" + +#: templates/js/translated/part.js:2283 #, fuzzy #| msgid "Parts" msgid "parts" msgstr "商品" -#: templates/js/translated/part.js:2276 +#: templates/js/translated/part.js:2379 msgid "No category" msgstr "没有分类" -#: templates/js/translated/part.js:2390 templates/js/translated/part.js:2611 -#: templates/js/translated/stock.js:2417 +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 msgid "Display as list" msgstr "" -#: templates/js/translated/part.js:2406 +#: templates/js/translated/part.js:2542 msgid "Display as grid" msgstr "" -#: templates/js/translated/part.js:2472 -msgid "Set the part category for the selected parts" -msgstr "" - -#: templates/js/translated/part.js:2477 -msgid "Set Part Category" -msgstr "设置商品类别" - -#: templates/js/translated/part.js:2482 -msgid "Select Part Category" -msgstr "" - -#: templates/js/translated/part.js:2495 -msgid "Category is required" -msgstr "" - -#: templates/js/translated/part.js:2595 +#: templates/js/translated/part.js:2640 #, fuzzy #| msgid "Subcategories" msgid "No subcategories found" msgstr "子类别" -#: templates/js/translated/part.js:2631 templates/js/translated/stock.js:2437 +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 msgid "Display as tree" msgstr "" -#: templates/js/translated/part.js:2711 +#: templates/js/translated/part.js:2756 msgid "Load Subcategories" msgstr "" -#: templates/js/translated/part.js:2727 +#: templates/js/translated/part.js:2772 msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2807 +#: templates/js/translated/part.js:2849 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2858 templates/js/translated/stock.js:1380 +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2859 templates/js/translated/stock.js:1381 -#: templates/js/translated/stock.js:1643 +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2863 +#: templates/js/translated/part.js:2905 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2879 +#: templates/js/translated/part.js:2921 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2893 +#: templates/js/translated/part.js:2935 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:2972 templates/js/translated/part.js:2973 +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:2975 +#: templates/js/translated/part.js:3017 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:2981 +#: templates/js/translated/part.js:3023 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3031 +#: templates/js/translated/part.js:3073 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3037 +#: templates/js/translated/part.js:3079 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3133 +#: templates/js/translated/part.js:3175 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3149 +#: templates/js/translated/part.js:3191 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3194 +#: templates/js/translated/part.js:3236 msgid "Minimum Stock Level" msgstr "" @@ -11352,65 +12200,61 @@ msgstr "" msgid "No plugins found" msgstr "子类别" -#: templates/js/translated/plugin.js:54 +#: templates/js/translated/plugin.js:57 +#, fuzzy +#| msgid "Print actions" +msgid "This plugin is no longer installed" +msgstr "打印操作" + +#: templates/js/translated/plugin.js:59 msgid "This plugin is active" msgstr "" -#: templates/js/translated/plugin.js:56 +#: templates/js/translated/plugin.js:61 #, fuzzy #| msgid "Print actions" -msgid "This plugin is not active" +msgid "This plugin is installed but not active" msgstr "打印操作" -#: templates/js/translated/plugin.js:62 -#, fuzzy -#| msgid "Build Description" -msgid "Plugin Description" -msgstr "构建描述" - -#: templates/js/translated/plugin.js:81 -msgid "Sample" -msgstr "" - -#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 msgid "Disable Plugin" msgstr "" -#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:183 +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 #, fuzzy #| msgid "Enabled" msgid "Enable Plugin" msgstr "已启用" -#: templates/js/translated/plugin.js:158 +#: templates/js/translated/plugin.js:157 msgid "The Plugin was installed" msgstr "" -#: templates/js/translated/plugin.js:174 +#: templates/js/translated/plugin.js:176 #, fuzzy #| msgid "Are you sure you want to delete this stock location?" msgid "Are you sure you want to enable this plugin?" msgstr "确实要删除此仓储地点吗?" -#: templates/js/translated/plugin.js:178 +#: templates/js/translated/plugin.js:180 #, fuzzy #| msgid "Are you sure you want to delete this stock location?" msgid "Are you sure you want to disable this plugin?" msgstr "确实要删除此仓储地点吗?" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 #, fuzzy #| msgid "Enabled" msgid "Enable" msgstr "已启用" -#: templates/js/translated/plugin.js:186 +#: templates/js/translated/plugin.js:188 #, fuzzy #| msgid "Available" msgid "Disable" msgstr "空闲" -#: templates/js/translated/plugin.js:200 +#: templates/js/translated/plugin.js:202 msgid "Plugin updated" msgstr "" @@ -11434,270 +12278,270 @@ msgstr "" msgid "No purchase history data available" msgstr "" -#: templates/js/translated/pricing.js:777 +#: templates/js/translated/pricing.js:791 msgid "Purchase Price History" msgstr "" -#: templates/js/translated/pricing.js:880 +#: templates/js/translated/pricing.js:894 msgid "No sales history data available" msgstr "" -#: templates/js/translated/pricing.js:902 +#: templates/js/translated/pricing.js:916 msgid "Sale Price History" msgstr "" -#: templates/js/translated/pricing.js:991 +#: templates/js/translated/pricing.js:1005 msgid "No variant data available" msgstr "" -#: templates/js/translated/pricing.js:1031 +#: templates/js/translated/pricing.js:1045 msgid "Variant Part" msgstr "" -#: templates/js/translated/purchase_order.js:155 +#: templates/js/translated/purchase_order.js:166 msgid "Select purchase order to duplicate" msgstr "" -#: templates/js/translated/purchase_order.js:162 +#: templates/js/translated/purchase_order.js:173 msgid "Duplicate Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:163 +#: templates/js/translated/purchase_order.js:174 msgid "Duplicate all line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:170 +#: templates/js/translated/purchase_order.js:181 msgid "Duplicate Extra Lines" msgstr "" -#: templates/js/translated/purchase_order.js:171 +#: templates/js/translated/purchase_order.js:182 msgid "Duplicate extra line items from the selected order" msgstr "" -#: templates/js/translated/purchase_order.js:192 +#: templates/js/translated/purchase_order.js:203 msgid "Edit Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:209 +#: templates/js/translated/purchase_order.js:220 msgid "Duplication Options" msgstr "" -#: templates/js/translated/purchase_order.js:436 +#: templates/js/translated/purchase_order.js:447 msgid "Complete Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:453 -#: templates/js/translated/return_order.js:195 -#: templates/js/translated/sales_order.js:485 +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 msgid "Mark this order as complete?" msgstr "" -#: templates/js/translated/purchase_order.js:459 +#: templates/js/translated/purchase_order.js:470 msgid "All line items have been received" msgstr "" -#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/purchase_order.js:475 msgid "This order has line items which have not been marked as received." msgstr "" -#: templates/js/translated/purchase_order.js:465 -#: templates/js/translated/sales_order.js:499 +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 msgid "Completing this order means that the order and line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:488 +#: templates/js/translated/purchase_order.js:499 msgid "Cancel Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:493 +#: templates/js/translated/purchase_order.js:504 msgid "Are you sure you wish to cancel this purchase order?" msgstr "" -#: templates/js/translated/purchase_order.js:499 +#: templates/js/translated/purchase_order.js:510 msgid "This purchase order can not be cancelled" msgstr "" -#: templates/js/translated/purchase_order.js:520 -#: templates/js/translated/return_order.js:149 +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 msgid "After placing this order, line items will no longer be editable." msgstr "" -#: templates/js/translated/purchase_order.js:525 +#: templates/js/translated/purchase_order.js:536 msgid "Issue Purchase Order" msgstr "" -#: templates/js/translated/purchase_order.js:617 +#: templates/js/translated/purchase_order.js:628 msgid "At least one purchaseable part must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:642 +#: templates/js/translated/purchase_order.js:653 msgid "Quantity to order" msgstr "" -#: templates/js/translated/purchase_order.js:651 +#: templates/js/translated/purchase_order.js:662 msgid "New supplier part" msgstr "" -#: templates/js/translated/purchase_order.js:669 +#: templates/js/translated/purchase_order.js:680 msgid "New purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:701 +#: templates/js/translated/purchase_order.js:712 msgid "Add to purchase order" msgstr "" -#: templates/js/translated/purchase_order.js:845 +#: templates/js/translated/purchase_order.js:860 msgid "No matching supplier parts" msgstr "" -#: templates/js/translated/purchase_order.js:864 +#: templates/js/translated/purchase_order.js:879 msgid "No matching purchase orders" msgstr "" -#: templates/js/translated/purchase_order.js:1043 +#: templates/js/translated/purchase_order.js:1066 msgid "Select Line Items" msgstr "" -#: templates/js/translated/purchase_order.js:1044 -#: templates/js/translated/return_order.js:480 +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 msgid "At least one line item must be selected" msgstr "" -#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/purchase_order.js:1097 msgid "Received Quantity" msgstr "" -#: templates/js/translated/purchase_order.js:1085 +#: templates/js/translated/purchase_order.js:1108 msgid "Quantity to receive" msgstr "" -#: templates/js/translated/purchase_order.js:1161 +#: templates/js/translated/purchase_order.js:1184 msgid "Stock Status" msgstr "" -#: templates/js/translated/purchase_order.js:1175 +#: templates/js/translated/purchase_order.js:1198 #, fuzzy #| msgid "Barcode" msgid "Add barcode" msgstr "条形码" -#: templates/js/translated/purchase_order.js:1176 +#: templates/js/translated/purchase_order.js:1199 #, fuzzy #| msgid "Remove row" msgid "Remove barcode" msgstr "移除行" -#: templates/js/translated/purchase_order.js:1179 +#: templates/js/translated/purchase_order.js:1202 #, fuzzy #| msgid "Edit location" msgid "Specify location" msgstr "编辑仓储地" -#: templates/js/translated/purchase_order.js:1187 +#: templates/js/translated/purchase_order.js:1210 msgid "Add batch code" msgstr "" -#: templates/js/translated/purchase_order.js:1198 +#: templates/js/translated/purchase_order.js:1221 msgid "Add serial numbers" msgstr "" -#: templates/js/translated/purchase_order.js:1250 +#: templates/js/translated/purchase_order.js:1273 #, fuzzy #| msgid "Serial Numbers" msgid "Serials" msgstr "序列号" -#: templates/js/translated/purchase_order.js:1275 +#: templates/js/translated/purchase_order.js:1298 msgid "Order Code" msgstr "订单编码" -#: templates/js/translated/purchase_order.js:1277 +#: templates/js/translated/purchase_order.js:1300 msgid "Quantity to Receive" msgstr "" -#: templates/js/translated/purchase_order.js:1299 -#: templates/js/translated/return_order.js:545 +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 msgid "Confirm receipt of items" msgstr "" -#: templates/js/translated/purchase_order.js:1300 +#: templates/js/translated/purchase_order.js:1327 msgid "Receive Purchase Order Items" msgstr "" -#: templates/js/translated/purchase_order.js:1368 +#: templates/js/translated/purchase_order.js:1395 #, fuzzy #| msgid "Scan Barcode" msgid "Scan Item Barcode" msgstr "扫描条形码" -#: templates/js/translated/purchase_order.js:1369 +#: templates/js/translated/purchase_order.js:1396 msgid "Scan barcode on incoming item (must not match any existing stock items)" msgstr "" -#: templates/js/translated/purchase_order.js:1383 +#: templates/js/translated/purchase_order.js:1410 #, fuzzy #| msgid "Enter barcode data" msgid "Invalid barcode data" msgstr "输入条形码数据" -#: templates/js/translated/purchase_order.js:1645 -#: templates/js/translated/return_order.js:274 -#: templates/js/translated/sales_order.js:762 -#: templates/js/translated/sales_order.js:986 +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 msgid "Order is overdue" msgstr "" -#: templates/js/translated/purchase_order.js:1707 -#: templates/js/translated/return_order.js:342 -#: templates/js/translated/sales_order.js:839 -#: templates/js/translated/sales_order.js:999 +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 msgid "Items" msgstr "" -#: templates/js/translated/purchase_order.js:1806 +#: templates/js/translated/purchase_order.js:1834 #, fuzzy #| msgid "All selected supplier parts will be deleted" msgid "All selected Line items will be deleted" msgstr "删除所有选定的供应商商品" -#: templates/js/translated/purchase_order.js:1824 +#: templates/js/translated/purchase_order.js:1852 #, fuzzy #| msgid "Allocate selected items" msgid "Delete selected Line items?" msgstr "分配选定项目" -#: templates/js/translated/purchase_order.js:1884 -#: templates/js/translated/sales_order.js:2047 +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 msgid "Duplicate Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1899 -#: templates/js/translated/return_order.js:464 -#: templates/js/translated/return_order.js:653 -#: templates/js/translated/sales_order.js:2060 +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 msgid "Edit Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:1910 -#: templates/js/translated/return_order.js:666 -#: templates/js/translated/sales_order.js:2071 +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 msgid "Delete Line Item" msgstr "" -#: templates/js/translated/purchase_order.js:2192 -#: templates/js/translated/sales_order.js:2001 +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 msgid "Duplicate line item" msgstr "" -#: templates/js/translated/purchase_order.js:2193 -#: templates/js/translated/return_order.js:785 -#: templates/js/translated/sales_order.js:2002 +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 msgid "Edit line item" msgstr "" -#: templates/js/translated/purchase_order.js:2194 -#: templates/js/translated/return_order.js:789 -#: templates/js/translated/sales_order.js:2008 +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 msgid "Delete line item" msgstr "" @@ -11728,264 +12572,264 @@ msgstr "没有找到与所选商品相匹配的标签" msgid "Add Customer" msgstr "" -#: templates/js/translated/return_order.js:119 +#: templates/js/translated/return_order.js:131 #, fuzzy #| msgid "Create Purchase Order" msgid "Create Return Order" msgstr "创建采购订单" -#: templates/js/translated/return_order.js:134 +#: templates/js/translated/return_order.js:146 msgid "Edit Return Order" msgstr "" -#: templates/js/translated/return_order.js:154 +#: templates/js/translated/return_order.js:166 msgid "Issue Return Order" msgstr "" -#: templates/js/translated/return_order.js:171 +#: templates/js/translated/return_order.js:183 #, fuzzy #| msgid "Are you sure you wish to cancel this build?" msgid "Are you sure you wish to cancel this Return Order?" msgstr "是否确定取消生产?" -#: templates/js/translated/return_order.js:178 +#: templates/js/translated/return_order.js:190 #, fuzzy #| msgid "Cancel order" msgid "Cancel Return Order" msgstr "取消订单" -#: templates/js/translated/return_order.js:203 +#: templates/js/translated/return_order.js:215 #, fuzzy #| msgid "Complete Build Order" msgid "Complete Return Order" msgstr "生产订单完成" -#: templates/js/translated/return_order.js:251 +#: templates/js/translated/return_order.js:263 #, fuzzy #| msgid "No parameters found" msgid "No return orders found" msgstr "无指定参数" -#: templates/js/translated/return_order.js:288 -#: templates/js/translated/sales_order.js:776 +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 msgid "Invalid Customer" msgstr "" -#: templates/js/translated/return_order.js:546 +#: templates/js/translated/return_order.js:559 msgid "Receive Return Order Items" msgstr "" -#: templates/js/translated/return_order.js:677 -#: templates/js/translated/sales_order.js:2207 +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 msgid "No matching line items" msgstr "" -#: templates/js/translated/return_order.js:782 +#: templates/js/translated/return_order.js:795 msgid "Mark item as received" msgstr "" -#: templates/js/translated/sales_order.js:146 +#: templates/js/translated/sales_order.js:158 msgid "Create Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:161 +#: templates/js/translated/sales_order.js:173 msgid "Edit Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:276 +#: templates/js/translated/sales_order.js:288 msgid "No stock items have been allocated to this shipment" msgstr "" -#: templates/js/translated/sales_order.js:281 +#: templates/js/translated/sales_order.js:293 msgid "The following stock items will be shipped" msgstr "" -#: templates/js/translated/sales_order.js:321 +#: templates/js/translated/sales_order.js:333 msgid "Complete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:345 +#: templates/js/translated/sales_order.js:357 msgid "Confirm Shipment" msgstr "" -#: templates/js/translated/sales_order.js:401 +#: templates/js/translated/sales_order.js:413 msgid "No pending shipments found" msgstr "" -#: templates/js/translated/sales_order.js:405 +#: templates/js/translated/sales_order.js:417 msgid "No stock items have been allocated to pending shipments" msgstr "" -#: templates/js/translated/sales_order.js:415 +#: templates/js/translated/sales_order.js:427 msgid "Complete Shipments" msgstr "" -#: templates/js/translated/sales_order.js:437 +#: templates/js/translated/sales_order.js:449 msgid "Skip" msgstr "" -#: templates/js/translated/sales_order.js:498 +#: templates/js/translated/sales_order.js:510 msgid "This order has line items which have not been completed." msgstr "" -#: templates/js/translated/sales_order.js:520 +#: templates/js/translated/sales_order.js:532 #, fuzzy #| msgid "New Sales Order" msgid "Issue this Sales Order?" msgstr "新建销售订单" -#: templates/js/translated/sales_order.js:525 +#: templates/js/translated/sales_order.js:537 #, fuzzy #| msgid "New Sales Order" msgid "Issue Sales Order" msgstr "新建销售订单" -#: templates/js/translated/sales_order.js:544 +#: templates/js/translated/sales_order.js:556 msgid "Cancel Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:549 +#: templates/js/translated/sales_order.js:561 msgid "Cancelling this order means that the order will no longer be editable." msgstr "" -#: templates/js/translated/sales_order.js:603 +#: templates/js/translated/sales_order.js:615 msgid "Create New Shipment" msgstr "" -#: templates/js/translated/sales_order.js:713 +#: templates/js/translated/sales_order.js:725 msgid "No sales orders found" msgstr "" -#: templates/js/translated/sales_order.js:896 +#: templates/js/translated/sales_order.js:905 msgid "Edit shipment" msgstr "" -#: templates/js/translated/sales_order.js:899 +#: templates/js/translated/sales_order.js:908 msgid "Complete shipment" msgstr "" -#: templates/js/translated/sales_order.js:904 +#: templates/js/translated/sales_order.js:913 msgid "Delete shipment" msgstr "" -#: templates/js/translated/sales_order.js:921 +#: templates/js/translated/sales_order.js:930 msgid "Edit Shipment" msgstr "" -#: templates/js/translated/sales_order.js:936 +#: templates/js/translated/sales_order.js:945 msgid "Delete Shipment" msgstr "" -#: templates/js/translated/sales_order.js:969 +#: templates/js/translated/sales_order.js:978 msgid "No matching shipments found" msgstr "" -#: templates/js/translated/sales_order.js:994 +#: templates/js/translated/sales_order.js:1003 msgid "Shipment Reference" msgstr "" -#: templates/js/translated/sales_order.js:1018 -#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 msgid "Not shipped" msgstr "" -#: templates/js/translated/sales_order.js:1036 +#: templates/js/translated/sales_order.js:1045 msgid "Tracking" msgstr "" -#: templates/js/translated/sales_order.js:1040 +#: templates/js/translated/sales_order.js:1049 msgid "Invoice" msgstr "" -#: templates/js/translated/sales_order.js:1207 +#: templates/js/translated/sales_order.js:1216 msgid "Add Shipment" msgstr "" -#: templates/js/translated/sales_order.js:1258 +#: templates/js/translated/sales_order.js:1267 msgid "Confirm stock allocation" msgstr "确认库存分配" -#: templates/js/translated/sales_order.js:1259 +#: templates/js/translated/sales_order.js:1268 msgid "Allocate Stock Items to Sales Order" msgstr "" -#: templates/js/translated/sales_order.js:1463 +#: templates/js/translated/sales_order.js:1474 msgid "No sales order allocations found" msgstr "" -#: templates/js/translated/sales_order.js:1555 +#: templates/js/translated/sales_order.js:1566 msgid "Edit Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1569 +#: templates/js/translated/sales_order.js:1580 msgid "Confirm Delete Operation" msgstr "确认删除操作" -#: templates/js/translated/sales_order.js:1570 +#: templates/js/translated/sales_order.js:1581 msgid "Delete Stock Allocation" msgstr "" -#: templates/js/translated/sales_order.js:1609 -#: templates/js/translated/sales_order.js:1696 -#: templates/js/translated/stock.js:1688 +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 msgid "Shipped to customer" msgstr "" -#: templates/js/translated/sales_order.js:1617 -#: templates/js/translated/sales_order.js:1705 +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 msgid "Stock location not specified" msgstr "" -#: templates/js/translated/sales_order.js:1985 +#: templates/js/translated/sales_order.js:2005 msgid "Allocate serial numbers" msgstr "" -#: templates/js/translated/sales_order.js:1989 +#: templates/js/translated/sales_order.js:2009 msgid "Purchase stock" msgstr "" -#: templates/js/translated/sales_order.js:1998 -#: templates/js/translated/sales_order.js:2185 +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 msgid "Calculate price" msgstr "" -#: templates/js/translated/sales_order.js:2012 +#: templates/js/translated/sales_order.js:2032 msgid "Cannot be deleted as items have been shipped" msgstr "" -#: templates/js/translated/sales_order.js:2015 +#: templates/js/translated/sales_order.js:2035 msgid "Cannot be deleted as items have been allocated" msgstr "" -#: templates/js/translated/sales_order.js:2086 +#: templates/js/translated/sales_order.js:2106 msgid "Allocate Serial Numbers" msgstr "" -#: templates/js/translated/sales_order.js:2193 +#: templates/js/translated/sales_order.js:2213 msgid "Update Unit Price" msgstr "" -#: templates/js/translated/search.js:312 +#: templates/js/translated/search.js:270 msgid "No results" msgstr "" -#: templates/js/translated/search.js:334 templates/search.html:25 +#: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "result" msgstr "" -#: templates/js/translated/search.js:384 +#: templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/search.js:394 +#: templates/js/translated/search.js:352 msgid "Minimize results" msgstr "" -#: templates/js/translated/search.js:397 +#: templates/js/translated/search.js:355 msgid "Remove results" msgstr "" @@ -11997,706 +12841,764 @@ msgstr "" msgid "Confirm Stock Serialization" msgstr "" -#: templates/js/translated/stock.js:138 +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 msgid "Parent stock location" msgstr "" -#: templates/js/translated/stock.js:173 +#: templates/js/translated/stock.js:166 +#, fuzzy +#| msgid "Location" +msgid "Add Location type" +msgstr "地点" + +#: templates/js/translated/stock.js:202 msgid "Edit Stock Location" msgstr "编辑仓储地点" -#: templates/js/translated/stock.js:188 +#: templates/js/translated/stock.js:217 msgid "New Stock Location" msgstr "" -#: templates/js/translated/stock.js:190 +#: templates/js/translated/stock.js:219 msgid "Create another location after this one" msgstr "" -#: templates/js/translated/stock.js:191 +#: templates/js/translated/stock.js:220 #, fuzzy #| msgid "Stock item created" msgid "Stock location created" msgstr "库存项已创建" -#: templates/js/translated/stock.js:205 +#: templates/js/translated/stock.js:234 msgid "Are you sure you want to delete this stock location?" msgstr "确实要删除此仓储地点吗?" -#: templates/js/translated/stock.js:212 +#: templates/js/translated/stock.js:241 msgid "Move to parent stock location" msgstr "" -#: templates/js/translated/stock.js:221 +#: templates/js/translated/stock.js:250 msgid "Delete Stock Location" msgstr "删除仓储地点" -#: templates/js/translated/stock.js:225 +#: templates/js/translated/stock.js:254 msgid "Action for stock items in this stock location" msgstr "" -#: templates/js/translated/stock.js:230 +#: templates/js/translated/stock.js:259 msgid "Action for sub-locations" msgstr "" -#: templates/js/translated/stock.js:284 +#: templates/js/translated/stock.js:313 msgid "This part cannot be serialized" msgstr "" -#: templates/js/translated/stock.js:320 +#: templates/js/translated/stock.js:349 msgid "Add given quantity as packs instead of individual items" msgstr "" -#: templates/js/translated/stock.js:329 +#: templates/js/translated/stock.js:362 msgid "Enter initial quantity for this stock item" msgstr "" -#: templates/js/translated/stock.js:335 +#: templates/js/translated/stock.js:368 msgid "Enter serial numbers for new stock (or leave blank)" msgstr "" -#: templates/js/translated/stock.js:406 +#: templates/js/translated/stock.js:439 msgid "Stock item duplicated" msgstr "" -#: templates/js/translated/stock.js:426 +#: templates/js/translated/stock.js:459 msgid "Duplicate Stock Item" msgstr "" -#: templates/js/translated/stock.js:442 +#: templates/js/translated/stock.js:475 msgid "Are you sure you want to delete this stock item?" msgstr "" -#: templates/js/translated/stock.js:447 +#: templates/js/translated/stock.js:480 msgid "Delete Stock Item" msgstr "" -#: templates/js/translated/stock.js:468 +#: templates/js/translated/stock.js:501 msgid "Edit Stock Item" msgstr "" -#: templates/js/translated/stock.js:510 +#: templates/js/translated/stock.js:543 msgid "Create another item after this one" msgstr "" -#: templates/js/translated/stock.js:522 +#: templates/js/translated/stock.js:555 msgid "Created new stock item" msgstr "" -#: templates/js/translated/stock.js:535 +#: templates/js/translated/stock.js:568 msgid "Created multiple stock items" msgstr "" -#: templates/js/translated/stock.js:560 +#: templates/js/translated/stock.js:593 msgid "Find Serial Number" msgstr "" -#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:565 +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 msgid "Enter serial number" msgstr "" -#: templates/js/translated/stock.js:581 +#: templates/js/translated/stock.js:614 msgid "Enter a serial number" msgstr "" -#: templates/js/translated/stock.js:601 +#: templates/js/translated/stock.js:634 msgid "No matching serial number" msgstr "" -#: templates/js/translated/stock.js:610 +#: templates/js/translated/stock.js:643 msgid "More than one matching result found" msgstr "" -#: templates/js/translated/stock.js:718 +#: templates/js/translated/stock.js:751 msgid "Confirm stock assignment" msgstr "" -#: templates/js/translated/stock.js:719 +#: templates/js/translated/stock.js:752 msgid "Assign Stock to Customer" msgstr "" -#: templates/js/translated/stock.js:796 +#: templates/js/translated/stock.js:829 msgid "Warning: Merge operation cannot be reversed" msgstr "" -#: templates/js/translated/stock.js:797 +#: templates/js/translated/stock.js:830 msgid "Some information will be lost when merging stock items" msgstr "" -#: templates/js/translated/stock.js:799 +#: templates/js/translated/stock.js:832 msgid "Stock transaction history will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:800 +#: templates/js/translated/stock.js:833 msgid "Supplier part information will be deleted for merged items" msgstr "" -#: templates/js/translated/stock.js:891 +#: templates/js/translated/stock.js:928 msgid "Confirm stock item merge" msgstr "" -#: templates/js/translated/stock.js:892 +#: templates/js/translated/stock.js:929 msgid "Merge Stock Items" msgstr "" -#: templates/js/translated/stock.js:987 +#: templates/js/translated/stock.js:1024 msgid "Transfer Stock" msgstr "" -#: templates/js/translated/stock.js:988 +#: templates/js/translated/stock.js:1025 msgid "Move" msgstr "" -#: templates/js/translated/stock.js:994 +#: templates/js/translated/stock.js:1031 msgid "Count Stock" msgstr "" -#: templates/js/translated/stock.js:995 +#: templates/js/translated/stock.js:1032 msgid "Count" msgstr "" -#: templates/js/translated/stock.js:999 +#: templates/js/translated/stock.js:1036 msgid "Remove Stock" msgstr "" -#: templates/js/translated/stock.js:1000 +#: templates/js/translated/stock.js:1037 msgid "Take" msgstr "" -#: templates/js/translated/stock.js:1004 +#: templates/js/translated/stock.js:1041 msgid "Add Stock" msgstr "" -#: templates/js/translated/stock.js:1005 users/models.py:243 +#: templates/js/translated/stock.js:1042 users/models.py:389 msgid "Add" msgstr "添加" -#: templates/js/translated/stock.js:1009 +#: templates/js/translated/stock.js:1046 msgid "Delete Stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Quantity cannot be adjusted for serialized stock" msgstr "" -#: templates/js/translated/stock.js:1106 +#: templates/js/translated/stock.js:1143 msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1140 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 msgid "Select Stock Items" msgstr "选择库存项" -#: templates/js/translated/stock.js:1141 -msgid "You must select at least one available stock item" +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" msgstr "" -#: templates/js/translated/stock.js:1168 +#: templates/js/translated/stock.js:1224 msgid "Confirm stock adjustment" msgstr "" -#: templates/js/translated/stock.js:1304 +#: templates/js/translated/stock.js:1360 msgid "PASS" msgstr "" -#: templates/js/translated/stock.js:1306 +#: templates/js/translated/stock.js:1362 msgid "FAIL" msgstr "" -#: templates/js/translated/stock.js:1311 +#: templates/js/translated/stock.js:1367 msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1373 +#: templates/js/translated/stock.js:1429 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1376 +#: templates/js/translated/stock.js:1432 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1400 +#: templates/js/translated/stock.js:1456 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1464 +#: templates/js/translated/stock.js:1520 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1626 +#: templates/js/translated/stock.js:1682 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1648 +#: templates/js/translated/stock.js:1704 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1680 +#: templates/js/translated/stock.js:1736 msgid "In production" msgstr "正在生产" -#: templates/js/translated/stock.js:1684 +#: templates/js/translated/stock.js:1740 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/stock.js:1748 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1698 +#: templates/js/translated/stock.js:1754 msgid "No stock location set" msgstr "未设置仓储地点" -#: templates/js/translated/stock.js:1746 +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "" + +#: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 #, fuzzy #| msgid "Stock Items" msgid "stock items" msgstr "库存项" -#: templates/js/translated/stock.js:1850 +#: templates/js/translated/stock.js:1928 +#, fuzzy +#| msgid "Stock Location" +msgid "Scan to location" +msgstr "仓储地点" + +#: templates/js/translated/stock.js:1939 +#, fuzzy +#| msgid "Stock Locations" +msgid "Stock Actions" +msgstr "仓储地点" + +#: templates/js/translated/stock.js:1983 +#, fuzzy +#| msgid "Installed into assembly" +msgid "Load installed items" +msgstr "安装到组装中" + +#: templates/js/translated/stock.js:2061 msgid "Stock item is in production" msgstr "库存品正在生产" -#: templates/js/translated/stock.js:1855 +#: templates/js/translated/stock.js:2066 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:1858 +#: templates/js/translated/stock.js:2069 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:2072 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:1863 +#: templates/js/translated/stock.js:2074 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:1865 +#: templates/js/translated/stock.js:2076 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:1868 +#: templates/js/translated/stock.js:2079 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:1870 +#: templates/js/translated/stock.js:2081 #, fuzzy #| msgid "Accept as consumed by this build order" msgid "Stock item has been consumed by a build order" msgstr "接受此构建订单所消耗的内容" -#: templates/js/translated/stock.js:1874 +#: templates/js/translated/stock.js:2085 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:1876 +#: templates/js/translated/stock.js:2087 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:1881 +#: templates/js/translated/stock.js:2092 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:1883 +#: templates/js/translated/stock.js:2094 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:1885 +#: templates/js/translated/stock.js:2096 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:1889 -#: templates/js/translated/table_filters.js:296 +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2031 +#: templates/js/translated/stock.js:2265 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2312 #, fuzzy #| msgid "Stock Source" msgid "Stock Value" msgstr "库存来源" -#: templates/js/translated/stock.js:2170 +#: templates/js/translated/stock.js:2440 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2319 +#: templates/js/translated/stock.js:2544 #, fuzzy #| msgid "Stock Locations" msgid "stock locations" msgstr "仓储地点" -#: templates/js/translated/stock.js:2476 -msgid "Load Subloactions" -msgstr "" +#: templates/js/translated/stock.js:2699 +#, fuzzy +#| msgid "Stock Locations" +msgid "Load Sublocations" +msgstr "仓储地点" -#: templates/js/translated/stock.js:2583 +#: templates/js/translated/stock.js:2817 msgid "Details" msgstr "详情" -#: templates/js/translated/stock.js:2587 +#: templates/js/translated/stock.js:2821 #, fuzzy #| msgid "Change" msgid "No changes" msgstr "更改" -#: templates/js/translated/stock.js:2599 +#: templates/js/translated/stock.js:2833 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2621 +#: templates/js/translated/stock.js:2855 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2638 +#: templates/js/translated/stock.js:2872 #, fuzzy #| msgid "Sales Order Settings" msgid "Build order no longer exists" msgstr "销售订单设置" -#: templates/js/translated/stock.js:2653 +#: templates/js/translated/stock.js:2887 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2670 +#: templates/js/translated/stock.js:2904 #, fuzzy #| msgid "Sales Order Settings" msgid "Sales Order no longer exists" msgstr "销售订单设置" -#: templates/js/translated/stock.js:2687 +#: templates/js/translated/stock.js:2921 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2706 +#: templates/js/translated/stock.js:2940 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2724 +#: templates/js/translated/stock.js:2958 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2742 +#: templates/js/translated/stock.js:2976 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2750 +#: templates/js/translated/stock.js:2984 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:3056 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:2876 templates/js/translated/stock.js:2911 +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:2929 +#: templates/js/translated/stock.js:3165 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:2950 +#: templates/js/translated/stock.js:3186 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:3187 msgid "Stock items can only be installed if they meet the following criteria" msgstr "" -#: templates/js/translated/stock.js:2953 +#: templates/js/translated/stock.js:3189 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "" -#: templates/js/translated/stock.js:2954 +#: templates/js/translated/stock.js:3190 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:2955 +#: templates/js/translated/stock.js:3191 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:2956 +#: templates/js/translated/stock.js:3192 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3205 msgid "Select part to install" msgstr "" -#: templates/js/translated/table_filters.js:50 +#: templates/js/translated/stock.js:3268 +#, fuzzy +#| msgid "Select Stock Items" +msgid "Select one or more stock items" +msgstr "选择库存项" + +#: templates/js/translated/stock.js:3281 +#, fuzzy +#| msgid "Select Stock Items" +msgid "Selected stock items" +msgstr "选择库存项" + +#: templates/js/translated/stock.js:3285 +#, fuzzy +#| msgid "Stock Settings" +msgid "Change Stock Status" +msgstr "库存设置" + +#: templates/js/translated/table_filters.js:74 msgid "Has project code" msgstr "" -#: templates/js/translated/table_filters.js:59 -#: templates/js/translated/table_filters.js:518 -#: templates/js/translated/table_filters.js:530 -#: templates/js/translated/table_filters.js:571 +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 msgid "Order status" msgstr "" -#: templates/js/translated/table_filters.js:64 -#: templates/js/translated/table_filters.js:535 -#: templates/js/translated/table_filters.js:561 -#: templates/js/translated/table_filters.js:576 +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 msgid "Outstanding" msgstr "" -#: templates/js/translated/table_filters.js:72 -#: templates/js/translated/table_filters.js:458 -#: templates/js/translated/table_filters.js:543 -#: templates/js/translated/table_filters.js:584 +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 msgid "Assigned to me" msgstr "" -#: templates/js/translated/table_filters.js:128 +#: templates/js/translated/table_filters.js:158 msgid "Trackable Part" msgstr "可追溯商品" -#: templates/js/translated/table_filters.js:132 +#: templates/js/translated/table_filters.js:162 msgid "Assembled Part" msgstr "" -#: templates/js/translated/table_filters.js:136 +#: templates/js/translated/table_filters.js:166 msgid "Has Available Stock" msgstr "" -#: templates/js/translated/table_filters.js:152 +#: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" msgstr "" -#: templates/js/translated/table_filters.js:164 -#: templates/js/translated/table_filters.js:692 +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 msgid "Has Pricing" msgstr "" -#: templates/js/translated/table_filters.js:204 -#: templates/js/translated/table_filters.js:291 +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 msgid "Include sublocations" msgstr "" -#: templates/js/translated/table_filters.js:205 +#: templates/js/translated/table_filters.js:235 msgid "Include locations" msgstr "" -#: templates/js/translated/table_filters.js:224 -#: templates/js/translated/table_filters.js:225 -#: templates/js/translated/table_filters.js:624 +#: templates/js/translated/table_filters.js:267 +#, fuzzy +#| msgid "No location set" +msgid "Has location type" +msgstr "未设置仓储地点" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 msgid "Include subcategories" msgstr "" -#: templates/js/translated/table_filters.js:233 -#: templates/js/translated/table_filters.js:672 +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 msgid "Subscribed" msgstr "" -#: templates/js/translated/table_filters.js:244 -#: templates/js/translated/table_filters.js:326 +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 msgid "Is Serialized" msgstr "" -#: templates/js/translated/table_filters.js:247 -#: templates/js/translated/table_filters.js:333 +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 msgid "Serial number GTE" msgstr "" -#: templates/js/translated/table_filters.js:248 -#: templates/js/translated/table_filters.js:334 +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 msgid "Serial number greater than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:251 -#: templates/js/translated/table_filters.js:337 +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 msgid "Serial number LTE" msgstr "" -#: templates/js/translated/table_filters.js:252 -#: templates/js/translated/table_filters.js:338 +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 msgid "Serial number less than or equal to" msgstr "" -#: templates/js/translated/table_filters.js:255 -#: templates/js/translated/table_filters.js:256 -#: templates/js/translated/table_filters.js:329 -#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 msgid "Serial number" msgstr "" -#: templates/js/translated/table_filters.js:260 -#: templates/js/translated/table_filters.js:351 +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 msgid "Batch code" msgstr "" -#: templates/js/translated/table_filters.js:271 -#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 msgid "Active parts" msgstr "" -#: templates/js/translated/table_filters.js:272 +#: templates/js/translated/table_filters.js:326 msgid "Show stock for active parts" msgstr "" -#: templates/js/translated/table_filters.js:277 +#: templates/js/translated/table_filters.js:331 msgid "Part is an assembly" msgstr "" -#: templates/js/translated/table_filters.js:281 +#: templates/js/translated/table_filters.js:335 msgid "Is allocated" msgstr "" -#: templates/js/translated/table_filters.js:282 +#: templates/js/translated/table_filters.js:336 msgid "Item has been allocated" msgstr "" -#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:341 msgid "Stock is available for use" msgstr "" -#: templates/js/translated/table_filters.js:292 +#: templates/js/translated/table_filters.js:346 msgid "Include stock in sublocations" msgstr "" -#: templates/js/translated/table_filters.js:297 +#: templates/js/translated/table_filters.js:351 msgid "Show stock items which are depleted" msgstr "" -#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:356 msgid "Show items which are in stock" msgstr "" -#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "正在生产" -#: templates/js/translated/table_filters.js:307 +#: templates/js/translated/table_filters.js:361 msgid "Show items which are in production" msgstr "显示正在生产的项目" -#: templates/js/translated/table_filters.js:311 +#: templates/js/translated/table_filters.js:365 msgid "Include Variants" msgstr "" -#: templates/js/translated/table_filters.js:312 +#: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" msgstr "" -#: templates/js/translated/table_filters.js:316 -msgid "Installed" -msgstr "" - -#: templates/js/translated/table_filters.js:317 +#: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" msgstr "" -#: templates/js/translated/table_filters.js:322 +#: templates/js/translated/table_filters.js:376 msgid "Show items which have been assigned to a customer" msgstr "" -#: templates/js/translated/table_filters.js:342 -#: templates/js/translated/table_filters.js:343 +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 msgid "Stock status" msgstr "" -#: templates/js/translated/table_filters.js:346 +#: templates/js/translated/table_filters.js:400 msgid "Has batch code" msgstr "" -#: templates/js/translated/table_filters.js:354 -msgid "Tracked" -msgstr "" - -#: templates/js/translated/table_filters.js:355 +#: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" msgstr "" -#: templates/js/translated/table_filters.js:360 +#: templates/js/translated/table_filters.js:414 msgid "Has purchase price" msgstr "" -#: templates/js/translated/table_filters.js:361 +#: templates/js/translated/table_filters.js:415 msgid "Show stock items which have a purchase price set" msgstr "" -#: templates/js/translated/table_filters.js:365 +#: templates/js/translated/table_filters.js:419 msgid "Expiry Date before" msgstr "" -#: templates/js/translated/table_filters.js:369 +#: templates/js/translated/table_filters.js:423 msgid "Expiry Date after" msgstr "" -#: templates/js/translated/table_filters.js:382 +#: templates/js/translated/table_filters.js:436 msgid "Show stock items which have expired" msgstr "" -#: templates/js/translated/table_filters.js:388 +#: templates/js/translated/table_filters.js:442 msgid "Show stock which is close to expiring" msgstr "" -#: templates/js/translated/table_filters.js:402 +#: templates/js/translated/table_filters.js:456 msgid "Test Passed" msgstr "" -#: templates/js/translated/table_filters.js:406 +#: templates/js/translated/table_filters.js:460 msgid "Include Installed Items" msgstr "" -#: templates/js/translated/table_filters.js:445 +#: templates/js/translated/table_filters.js:511 msgid "Build status" msgstr "生产状态" -#: templates/js/translated/table_filters.js:625 +#: templates/js/translated/table_filters.js:708 msgid "Include parts in subcategories" msgstr "" -#: templates/js/translated/table_filters.js:630 +#: templates/js/translated/table_filters.js:713 msgid "Show active parts" msgstr "" -#: templates/js/translated/table_filters.js:638 +#: templates/js/translated/table_filters.js:721 msgid "Available stock" msgstr "" -#: templates/js/translated/table_filters.js:646 -#: templates/js/translated/table_filters.js:742 +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 #, fuzzy #| msgid "Units" msgid "Has Units" msgstr "单位" -#: templates/js/translated/table_filters.js:647 +#: templates/js/translated/table_filters.js:730 #, fuzzy #| msgid "Parameter units" msgid "Part has defined units" msgstr "参数单位" -#: templates/js/translated/table_filters.js:651 +#: templates/js/translated/table_filters.js:734 msgid "Has IPN" msgstr "" -#: templates/js/translated/table_filters.js:652 +#: templates/js/translated/table_filters.js:735 msgid "Part has internal part number" msgstr "商品有内部编号" -#: templates/js/translated/table_filters.js:656 +#: templates/js/translated/table_filters.js:739 msgid "In stock" msgstr "" -#: templates/js/translated/table_filters.js:664 +#: templates/js/translated/table_filters.js:747 msgid "Purchasable" msgstr "" -#: templates/js/translated/table_filters.js:676 +#: templates/js/translated/table_filters.js:759 msgid "Has stocktake entries" msgstr "" -#: templates/js/translated/table_filters.js:738 +#: templates/js/translated/table_filters.js:821 #, fuzzy #| msgid "Units" msgid "Has Choices" @@ -12730,51 +13632,51 @@ msgstr "" msgid "Select File Format" msgstr "" -#: templates/js/translated/tables.js:561 +#: templates/js/translated/tables.js:529 msgid "Loading data" msgstr "" -#: templates/js/translated/tables.js:564 +#: templates/js/translated/tables.js:532 msgid "rows per page" msgstr "" -#: templates/js/translated/tables.js:569 +#: templates/js/translated/tables.js:537 msgid "Showing all rows" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "Showing" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "to" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "of" msgstr "" -#: templates/js/translated/tables.js:571 +#: templates/js/translated/tables.js:539 msgid "rows" msgstr "" -#: templates/js/translated/tables.js:578 +#: templates/js/translated/tables.js:546 msgid "No matching results" msgstr "" -#: templates/js/translated/tables.js:581 +#: templates/js/translated/tables.js:549 msgid "Hide/Show pagination" msgstr "" -#: templates/js/translated/tables.js:587 +#: templates/js/translated/tables.js:555 msgid "Toggle" msgstr "" -#: templates/js/translated/tables.js:590 +#: templates/js/translated/tables.js:558 msgid "Columns" msgstr "" -#: templates/js/translated/tables.js:593 +#: templates/js/translated/tables.js:561 msgid "All" msgstr "" @@ -12794,11 +13696,11 @@ msgstr "" msgid "New Notifications" msgstr "" -#: templates/navbar.html:142 users/models.py:36 +#: templates/navbar.html:144 users/models.py:173 msgid "Admin" msgstr "管理员" -#: templates/navbar.html:145 +#: templates/navbar.html:148 msgid "Logout" msgstr "" @@ -12814,11 +13716,11 @@ msgstr "" msgid "QR data not provided" msgstr "" -#: templates/registration/logged_out.html:6 +#: templates/registration/logged_out.html:7 msgid "You were logged out successfully." msgstr "" -#: templates/registration/logged_out.html:8 +#: templates/registration/logged_out.html:9 msgid "Log in again" msgstr "" @@ -12961,50 +13863,6 @@ msgstr "电子邮件设置" msgid "Email settings not configured" msgstr "电子邮件设置未配置" -#: templates/stock_table.html:17 -msgid "Barcode Actions" -msgstr "" - -#: templates/stock_table.html:28 -msgid "Stock Options" -msgstr "" - -#: templates/stock_table.html:33 -msgid "Add to selected stock items" -msgstr "" - -#: templates/stock_table.html:34 -msgid "Remove from selected stock items" -msgstr "" - -#: templates/stock_table.html:35 -msgid "Stocktake selected stock items" -msgstr "" - -#: templates/stock_table.html:36 -msgid "Move selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge selected stock items" -msgstr "" - -#: templates/stock_table.html:37 -msgid "Merge stock" -msgstr "" - -#: templates/stock_table.html:38 -msgid "Order selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete selected items" -msgstr "" - -#: templates/stock_table.html:42 -msgid "Delete stock" -msgstr "" - #: templates/yesnolabel.html:4 msgid "Yes" msgstr "确定" @@ -13013,62 +13871,188 @@ msgstr "确定" msgid "No" msgstr "取消" -#: users/admin.py:61 +#: users/admin.py:90 msgid "Users" msgstr "用户" -#: users/admin.py:62 +#: users/admin.py:91 msgid "Select which users are assigned to this group" msgstr "选择分配给该组的用户" -#: users/admin.py:199 -msgid "The following users are members of multiple groups:" +#: users/admin.py:226 +#, fuzzy +#| msgid "The following users are members of multiple groups:" +msgid "The following users are members of multiple groups" msgstr "以下用户是多个群组的成员:" -#: users/admin.py:222 +#: users/admin.py:253 msgid "Personal info" msgstr "个人资料" -#: users/admin.py:223 +#: users/admin.py:254 msgid "Permissions" msgstr "权限" -#: users/admin.py:226 +#: users/admin.py:257 msgid "Important dates" msgstr "重要日期" -#: users/models.py:230 +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +#, fuzzy +#| msgid "Token" +msgid "API Token" +msgstr "令牌" + +#: users/models.py:54 +#, fuzzy +#| msgid "Token" +msgid "API Tokens" +msgstr "令牌" + +#: users/models.py:92 +#, fuzzy +#| msgid "Token" +msgid "Token Name" +msgstr "令牌" + +#: users/models.py:93 +#, fuzzy +#| msgid "Company name" +msgid "Custom token name" +msgstr "公司名称" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +#, fuzzy +#| msgid "Last Name" +msgid "Last Seen" +msgstr "姓氏" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 msgid "Permission set" msgstr "权限设置" -#: users/models.py:238 +#: users/models.py:384 msgid "Group" msgstr "群组" -#: users/models.py:241 +#: users/models.py:387 msgid "View" msgstr "视图" -#: users/models.py:241 +#: users/models.py:387 msgid "Permission to view items" msgstr "查看项目权限" -#: users/models.py:243 +#: users/models.py:389 msgid "Permission to add items" msgstr "添加项目权限" -#: users/models.py:245 +#: users/models.py:391 msgid "Change" msgstr "更改" -#: users/models.py:245 +#: users/models.py:391 msgid "Permissions to edit items" msgstr "编辑项目权限" -#: users/models.py:247 +#: users/models.py:393 msgid "Permission to delete items" msgstr "删除项目权限" +#, fuzzy +#~| msgid "Part QR Code" +#~ msgid "QC Code" +#~ msgstr "商品二维码" + +#, fuzzy +#~| msgid "Chosen value is not a valid option" +#~ msgid "Provided value is not a valid number" +#~ msgstr "选择的值不是一个有效的选项" + +#~ msgid "This stock item has already been allocated to this build output" +#~ msgstr "此库存项已被分配至此生产产出" + +#, fuzzy +#~| msgid "Build Description" +#~ msgid "Plugin Description" +#~ msgstr "构建描述" + +#~ msgid "Chinese" +#~ msgstr "中文(简体)" + +#~ msgid "Supplier List" +#~ msgstr "供应商列表" + +#~ msgid "Query filters (comma-separated list of key=value pairs)," +#~ msgstr "查询筛选器 (逗号分隔的键值对列表)" + +#~ msgid "Query filters (comma-separated list of key=value pairs" +#~ msgstr "查询筛选器 (逗号分隔的键值对列表" + +#~ msgid "Part query filters (comma-separated value of key=value pairs)" +#~ msgstr "商品查询筛选器 (逗号分隔的键值对列表)" + +#~ msgid "Build to allocate parts" +#~ msgstr "生产以分配部件" + +#~ msgid "Untracked stock has been fully allocated for this Build Order" +#~ msgstr "未跟踪的库存已完全分配给此生产订单" + +#~ msgid "Untracked stock has not been fully allocated for this Build Order" +#~ msgstr "未跟踪的库存尚未完全分配给此生产订单" + +#~ msgid "Allocate selected items" +#~ msgstr "分配选定项目" + +#~ msgid "This Build Order does not have any associated untracked BOM items" +#~ msgstr "此构建订单没有任何关联的 BOM 项目" + +#~ msgid "Output Actions" +#~ msgstr "输出操作" + +#~ msgid "Complete selected build outputs" +#~ msgstr "完成选定的构建输出" + +#, fuzzy +#~| msgid "Complete selected build outputs" +#~ msgid "Scrap selected build outputs" +#~ msgstr "完成选定的构建输出" + +#~ msgid "Delete selected build outputs" +#~ msgstr "删除选中的构建输出" + +#~ msgid "All untracked stock items have been allocated" +#~ msgstr "所有未跟踪的库存项目都已分配" + +#~ msgid "Delete Parts" +#~ msgstr "删除商品" + +#~ msgid "Options" +#~ msgstr "选项" + +#~ msgid "Set Category" +#~ msgstr "设置类别" + #, python-format #~ msgid "This Build Order is a child of Build Order %(link)s" #~ msgstr "此构建订单是 %(link)s 订单的一个子订单" @@ -13090,12 +14074,6 @@ msgstr "删除项目权限" #~ msgid "This Build Order is allocated to Sales Order %(link)s" #~ msgstr "此构建订单已分配给销售订单 %(link)s" -#~ msgid "Printing Actions" -#~ msgstr "打印操作" - -#~ msgid "Print labels" -#~ msgstr "打印标签" - #~ msgid "No labels found which match selected stock item(s)" #~ msgstr "没有找到与选定的库存项匹配的标签" @@ -13108,9 +14086,6 @@ msgstr "删除项目权限" #~ msgid "No labels found which match selected stock location(s)" #~ msgstr "没有找到匹配选定库存地点的标签" -#~ msgid "Part(s) must be selected before printing labels" -#~ msgstr "打印标签前必须选择商品" - #~ msgid "Company ID" #~ msgstr "公司ID" diff --git a/InvenTree/locale/zh_hant/LC_MESSAGES/django.po b/InvenTree/locale/zh_hant/LC_MESSAGES/django.po new file mode 100644 index 0000000000..a10ab3a867 --- /dev/null +++ b/InvenTree/locale/zh_hant/LC_MESSAGES/django.po @@ -0,0 +1,13366 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-11-09 10:51+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: InvenTree/api.py:160 +msgid "API endpoint not found" +msgstr "" + +#: InvenTree/api.py:425 +msgid "User does not have permission to view this model" +msgstr "" + +#: InvenTree/conversion.py:92 +msgid "No value provided" +msgstr "" + +#: InvenTree/conversion.py:125 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "" + +#: InvenTree/conversion.py:127 +msgid "Invalid quantity supplied" +msgstr "" + +#: InvenTree/conversion.py:141 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "" + +#: InvenTree/exceptions.py:89 +msgid "Error details can be found in the admin panel" +msgstr "" + +#: InvenTree/fields.py:127 +msgid "Enter date" +msgstr "" + +#: InvenTree/fields.py:200 InvenTree/models.py:920 build/serializers.py:433 +#: build/serializers.py:511 build/templates/build/sidebar.html:21 +#: company/models.py:732 company/templates/company/sidebar.html:37 +#: order/models.py:1088 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:41 +#: part/models.py:3009 part/templates/part/part_sidebar.html:63 +#: report/templates/report/inventree_build_order_base.html:172 +#: stock/admin.py:139 stock/models.py:2217 stock/models.py:2325 +#: stock/serializers.py:417 stock/serializers.py:580 stock/serializers.py:674 +#: stock/serializers.py:730 stock/serializers.py:1058 stock/serializers.py:1157 +#: stock/serializers.py:1318 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1077 +#: templates/js/translated/purchase_order.js:2191 +#: templates/js/translated/return_order.js:773 +#: templates/js/translated/sales_order.js:1064 +#: templates/js/translated/sales_order.js:1979 +#: templates/js/translated/stock.js:1516 templates/js/translated/stock.js:2398 +msgid "Notes" +msgstr "" + +#: InvenTree/format.py:154 +#, python-brace-format +msgid "Value '{name}' does not appear in pattern format" +msgstr "" + +#: InvenTree/format.py:164 +msgid "Provided value does not match required pattern: " +msgstr "" + +#: InvenTree/forms.py:147 +msgid "Enter password" +msgstr "" + +#: InvenTree/forms.py:148 +msgid "Enter new password" +msgstr "" + +#: InvenTree/forms.py:157 +msgid "Confirm password" +msgstr "" + +#: InvenTree/forms.py:158 +msgid "Confirm new password" +msgstr "" + +#: InvenTree/forms.py:162 +msgid "Old password" +msgstr "" + +#: InvenTree/forms.py:199 +msgid "Email (again)" +msgstr "" + +#: InvenTree/forms.py:203 +msgid "Email address confirmation" +msgstr "" + +#: InvenTree/forms.py:224 +msgid "You must type the same email each time." +msgstr "" + +#: InvenTree/forms.py:255 InvenTree/forms.py:261 +msgid "The provided primary email address is not valid." +msgstr "" + +#: InvenTree/forms.py:267 +msgid "The provided email domain is not approved." +msgstr "" + +#: InvenTree/forms.py:371 +msgid "Registration is disabled." +msgstr "" + +#: InvenTree/helpers.py:452 order/models.py:446 order/models.py:615 +msgid "Invalid quantity provided" +msgstr "" + +#: InvenTree/helpers.py:460 +msgid "Empty serial number string" +msgstr "" + +#: InvenTree/helpers.py:490 +msgid "Duplicate serial" +msgstr "" + +#: InvenTree/helpers.py:523 InvenTree/helpers.py:558 +#, python-brace-format +msgid "Invalid group range: {group}" +msgstr "" + +#: InvenTree/helpers.py:552 +#, python-brace-format +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:576 InvenTree/helpers.py:583 InvenTree/helpers.py:598 +#, python-brace-format +msgid "Invalid group sequence: {group}" +msgstr "" + +#: InvenTree/helpers.py:608 +msgid "No serial numbers found" +msgstr "" + +#: InvenTree/helpers.py:611 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "" + +#: InvenTree/helpers.py:740 +msgid "Remove HTML tags from this value" +msgstr "" + +#: InvenTree/helpers_model.py:123 +msgid "Connection error" +msgstr "" + +#: InvenTree/helpers_model.py:127 InvenTree/helpers_model.py:132 +msgid "Server responded with invalid status code" +msgstr "" + +#: InvenTree/helpers_model.py:129 +msgid "Exception occurred" +msgstr "" + +#: InvenTree/helpers_model.py:137 +msgid "Server responded with invalid Content-Length value" +msgstr "" + +#: InvenTree/helpers_model.py:140 +msgid "Image size is too large" +msgstr "" + +#: InvenTree/helpers_model.py:152 +msgid "Image download exceeded maximum size" +msgstr "" + +#: InvenTree/helpers_model.py:157 +msgid "Remote server returned empty response" +msgstr "" + +#: InvenTree/helpers_model.py:165 +msgid "Supplied URL is not a valid image file" +msgstr "" + +#: InvenTree/magic_login.py:28 +#, python-brace-format +msgid "[{site.name}] Log in to the app" +msgstr "" + +#: InvenTree/magic_login.py:38 company/models.py:122 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:81 +msgid "Metadata must be a python dict object" +msgstr "" + +#: InvenTree/models.py:85 +msgid "Plugin Metadata" +msgstr "" + +#: InvenTree/models.py:86 +msgid "JSON metadata field, for use by external plugins" +msgstr "" + +#: InvenTree/models.py:312 +msgid "Improperly formatted pattern" +msgstr "" + +#: InvenTree/models.py:319 +msgid "Unknown format key specified" +msgstr "" + +#: InvenTree/models.py:325 +msgid "Missing required format key" +msgstr "" + +#: InvenTree/models.py:336 +msgid "Reference field cannot be empty" +msgstr "" + +#: InvenTree/models.py:343 +msgid "Reference must match required pattern" +msgstr "" + +#: InvenTree/models.py:373 +msgid "Reference number is too large" +msgstr "" + +#: InvenTree/models.py:455 +msgid "Missing file" +msgstr "" + +#: InvenTree/models.py:456 +msgid "Missing external link" +msgstr "" + +#: InvenTree/models.py:475 stock/models.py:2319 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:326 +msgid "Attachment" +msgstr "" + +#: InvenTree/models.py:476 +msgid "Select file to attach" +msgstr "" + +#: InvenTree/models.py:482 common/models.py:2861 company/models.py:128 +#: company/models.py:386 company/models.py:440 company/models.py:719 +#: order/models.py:234 order/models.py:1092 order/models.py:1450 +#: part/admin.py:39 part/models.py:868 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_base.html:164 +#: stock/admin.py:138 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2451 +#: templates/js/translated/purchase_order.js:2031 +#: templates/js/translated/purchase_order.js:2195 +#: templates/js/translated/return_order.js:777 +#: templates/js/translated/sales_order.js:1053 +#: templates/js/translated/sales_order.js:1984 +msgid "Link" +msgstr "" + +#: InvenTree/models.py:483 build/models.py:302 part/models.py:869 +#: stock/models.py:769 +msgid "Link to external URL" +msgstr "" + +#: InvenTree/models.py:486 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 +msgid "Comment" +msgstr "" + +#: InvenTree/models.py:486 +msgid "File comment" +msgstr "" + +#: InvenTree/models.py:492 InvenTree/models.py:493 common/models.py:2321 +#: common/models.py:2322 common/models.py:2534 common/models.py:2535 +#: common/models.py:2791 common/models.py:2792 part/models.py:3017 +#: part/models.py:3102 part/models.py:3181 part/models.py:3201 +#: plugin/models.py:229 plugin/models.py:230 +#: report/templates/report/inventree_test_report_base.html:105 +#: templates/js/translated/stock.js:3007 users/models.py:85 +msgid "User" +msgstr "" + +#: InvenTree/models.py:496 +msgid "upload date" +msgstr "" + +#: InvenTree/models.py:517 +msgid "Filename must not be empty" +msgstr "" + +#: InvenTree/models.py:526 +msgid "Invalid attachment directory" +msgstr "" + +#: InvenTree/models.py:536 +#, python-brace-format +msgid "Filename contains illegal character '{c}'" +msgstr "" + +#: InvenTree/models.py:539 +msgid "Filename missing extension" +msgstr "" + +#: InvenTree/models.py:546 +msgid "Attachment with this filename already exists" +msgstr "" + +#: InvenTree/models.py:553 +msgid "Error renaming file" +msgstr "" + +#: InvenTree/models.py:728 +msgid "Duplicate names cannot exist under the same parent" +msgstr "" + +#: InvenTree/models.py:752 +msgid "Invalid choice" +msgstr "" + +#: InvenTree/models.py:786 InvenTree/models.py:787 common/models.py:2520 +#: common/models.py:2966 company/models.py:524 label/models.py:116 +#: part/models.py:814 part/models.py:3399 plugin/models.py:42 +#: report/models.py:170 stock/models.py:71 stock/models.py:72 +#: templates/InvenTree/settings/mixins/urls.html:13 +#: templates/InvenTree/settings/notifications.html:17 +#: templates/InvenTree/settings/plugin.html:74 +#: templates/InvenTree/settings/plugin_settings.html:22 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:426 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1183 +#: templates/js/translated/part.js:1471 templates/js/translated/part.js:1607 +#: templates/js/translated/part.js:2744 templates/js/translated/stock.js:2687 +msgid "Name" +msgstr "" + +#: InvenTree/models.py:793 build/models.py:175 +#: build/templates/build/detail.html:24 common/models.py:125 +#: company/models.py:446 company/models.py:725 +#: company/templates/company/company_base.html:71 +#: company/templates/company/manufacturer_part.html:75 +#: company/templates/company/supplier_part.html:107 label/models.py:123 +#: order/models.py:226 order/models.py:1116 part/admin.py:191 part/admin.py:272 +#: part/models.py:836 part/models.py:3415 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:183 +#: report/models.py:611 report/models.py:654 +#: report/templates/report/inventree_build_order_base.html:117 +#: stock/admin.py:42 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:151 +#: templates/InvenTree/settings/settings_staff_js.html:431 +#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963 +#: templates/js/translated/build.js:2124 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1235 +#: templates/js/translated/part.js:1480 templates/js/translated/part.js:1618 +#: templates/js/translated/part.js:1953 templates/js/translated/part.js:2350 +#: templates/js/translated/part.js:2780 templates/js/translated/part.js:2868 +#: templates/js/translated/plugin.js:79 +#: templates/js/translated/purchase_order.js:1697 +#: templates/js/translated/purchase_order.js:1840 +#: templates/js/translated/purchase_order.js:2013 +#: templates/js/translated/return_order.js:311 +#: templates/js/translated/sales_order.js:799 +#: templates/js/translated/sales_order.js:1809 +#: templates/js/translated/stock.js:1495 templates/js/translated/stock.js:2028 +#: templates/js/translated/stock.js:2719 templates/js/translated/stock.js:2802 +msgid "Description" +msgstr "" + +#: InvenTree/models.py:794 stock/models.py:79 +msgid "Description (optional)" +msgstr "" + +#: InvenTree/models.py:802 +msgid "parent" +msgstr "" + +#: InvenTree/models.py:809 InvenTree/models.py:810 +#: templates/js/translated/part.js:2789 templates/js/translated/stock.js:2728 +msgid "Path" +msgstr "" + +#: InvenTree/models.py:921 +msgid "Markdown notes (optional)" +msgstr "" + +#: InvenTree/models.py:948 +msgid "Barcode Data" +msgstr "" + +#: InvenTree/models.py:949 +msgid "Third party barcode data" +msgstr "" + +#: InvenTree/models.py:954 +msgid "Barcode Hash" +msgstr "" + +#: InvenTree/models.py:955 +msgid "Unique hash of barcode data" +msgstr "" + +#: InvenTree/models.py:995 +msgid "Existing barcode found" +msgstr "" + +#: InvenTree/models.py:1036 +msgid "Server Error" +msgstr "" + +#: InvenTree/models.py:1037 +msgid "An error has been logged by the server." +msgstr "" + +#: InvenTree/serializers.py:59 part/models.py:3904 +msgid "Must be a valid number" +msgstr "" + +#: InvenTree/serializers.py:88 company/models.py:150 +#: company/templates/company/company_base.html:106 part/models.py:2856 +#: templates/InvenTree/settings/settings_staff_js.html:44 +#: templates/currency_data.html:5 +msgid "Currency" +msgstr "" + +#: InvenTree/serializers.py:91 +msgid "Select currency from available options" +msgstr "" + +#: InvenTree/serializers.py:364 +msgid "Filename" +msgstr "" + +#: InvenTree/serializers.py:401 +msgid "Invalid value" +msgstr "" + +#: InvenTree/serializers.py:423 +msgid "Data File" +msgstr "" + +#: InvenTree/serializers.py:424 +msgid "Select data file for upload" +msgstr "" + +#: InvenTree/serializers.py:445 +msgid "Unsupported file type" +msgstr "" + +#: InvenTree/serializers.py:451 +msgid "File is too large" +msgstr "" + +#: InvenTree/serializers.py:472 +msgid "No columns found in file" +msgstr "" + +#: InvenTree/serializers.py:475 +msgid "No data rows found in file" +msgstr "" + +#: InvenTree/serializers.py:598 +msgid "No data rows provided" +msgstr "" + +#: InvenTree/serializers.py:601 +msgid "No data columns supplied" +msgstr "" + +#: InvenTree/serializers.py:678 +#, python-brace-format +msgid "Missing required column: '{name}'" +msgstr "" + +#: InvenTree/serializers.py:687 +#, python-brace-format +msgid "Duplicate column: '{col}'" +msgstr "" + +#: InvenTree/serializers.py:712 +#: templates/InvenTree/settings/mixins/urls.html:14 +msgid "URL" +msgstr "" + +#: InvenTree/serializers.py:713 +msgid "URL of remote image file" +msgstr "" + +#: InvenTree/serializers.py:726 +msgid "Downloading images from remote URL is not enabled" +msgstr "" + +#: InvenTree/settings.py:819 +msgid "Bulgarian" +msgstr "" + +#: InvenTree/settings.py:820 +msgid "Czech" +msgstr "" + +#: InvenTree/settings.py:821 +msgid "Danish" +msgstr "" + +#: InvenTree/settings.py:822 +msgid "German" +msgstr "" + +#: InvenTree/settings.py:823 +msgid "Greek" +msgstr "" + +#: InvenTree/settings.py:824 +msgid "English" +msgstr "" + +#: InvenTree/settings.py:825 +msgid "Spanish" +msgstr "" + +#: InvenTree/settings.py:826 +msgid "Spanish (Mexican)" +msgstr "" + +#: InvenTree/settings.py:827 +msgid "Farsi / Persian" +msgstr "" + +#: InvenTree/settings.py:828 +msgid "Finnish" +msgstr "" + +#: InvenTree/settings.py:829 +msgid "French" +msgstr "" + +#: InvenTree/settings.py:830 +msgid "Hebrew" +msgstr "" + +#: InvenTree/settings.py:831 +msgid "Hindi" +msgstr "" + +#: InvenTree/settings.py:832 +msgid "Hungarian" +msgstr "" + +#: InvenTree/settings.py:833 +msgid "Italian" +msgstr "" + +#: InvenTree/settings.py:834 +msgid "Japanese" +msgstr "" + +#: InvenTree/settings.py:835 +msgid "Korean" +msgstr "" + +#: InvenTree/settings.py:836 +msgid "Dutch" +msgstr "" + +#: InvenTree/settings.py:837 +msgid "Norwegian" +msgstr "" + +#: InvenTree/settings.py:838 +msgid "Polish" +msgstr "" + +#: InvenTree/settings.py:839 +msgid "Portuguese" +msgstr "" + +#: InvenTree/settings.py:840 +msgid "Portuguese (Brazilian)" +msgstr "" + +#: InvenTree/settings.py:841 +msgid "Russian" +msgstr "" + +#: InvenTree/settings.py:842 +msgid "Slovenian" +msgstr "" + +#: InvenTree/settings.py:843 +msgid "Swedish" +msgstr "" + +#: InvenTree/settings.py:844 +msgid "Thai" +msgstr "" + +#: InvenTree/settings.py:845 +msgid "Turkish" +msgstr "" + +#: InvenTree/settings.py:846 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/settings.py:847 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/settings.py:848 +msgid "Chinese (Traditional)" +msgstr "" + +#: InvenTree/status.py:68 part/serializers.py:1002 +msgid "Background worker check failed" +msgstr "" + +#: InvenTree/status.py:72 +msgid "Email backend not configured" +msgstr "" + +#: InvenTree/status.py:75 +msgid "InvenTree system health checks failed" +msgstr "" + +#: InvenTree/status_codes.py:12 InvenTree/status_codes.py:40 +#: InvenTree/status_codes.py:148 InvenTree/status_codes.py:167 +#: InvenTree/status_codes.py:188 generic/states/tests.py:16 +#: templates/js/translated/table_filters.js:594 +msgid "Pending" +msgstr "" + +#: InvenTree/status_codes.py:13 generic/states/tests.py:17 +msgid "Placed" +msgstr "" + +#: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 +#: InvenTree/status_codes.py:172 generic/states/tests.py:18 +#: 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:43 +#: InvenTree/status_codes.py:150 InvenTree/status_codes.py:173 +msgid "Cancelled" +msgstr "" + +#: InvenTree/status_codes.py:16 InvenTree/status_codes.py:44 +#: InvenTree/status_codes.py:71 +msgid "Lost" +msgstr "" + +#: InvenTree/status_codes.py:17 InvenTree/status_codes.py:45 +#: InvenTree/status_codes.py:73 +msgid "Returned" +msgstr "" + +#: InvenTree/status_codes.py:41 InvenTree/status_codes.py:170 +msgid "In Progress" +msgstr "" + +#: InvenTree/status_codes.py:42 order/models.py:1329 +#: templates/js/translated/sales_order.js:1520 +#: templates/js/translated/sales_order.js:1641 +#: templates/js/translated/sales_order.js:1954 +msgid "Shipped" +msgstr "" + +#: InvenTree/status_codes.py:66 +msgid "OK" +msgstr "" + +#: InvenTree/status_codes.py:67 +msgid "Attention needed" +msgstr "" + +#: InvenTree/status_codes.py:68 +msgid "Damaged" +msgstr "" + +#: InvenTree/status_codes.py:69 +msgid "Destroyed" +msgstr "" + +#: InvenTree/status_codes.py:70 +msgid "Rejected" +msgstr "" + +#: InvenTree/status_codes.py:72 +msgid "Quarantined" +msgstr "" + +#: InvenTree/status_codes.py:91 +msgid "Legacy stock tracking entry" +msgstr "" + +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 +msgid "Stock item created" +msgstr "" + +#: InvenTree/status_codes.py:96 +msgid "Edited stock item" +msgstr "" + +#: InvenTree/status_codes.py:97 +msgid "Assigned serial number" +msgstr "" + +#: InvenTree/status_codes.py:100 +msgid "Stock counted" +msgstr "" + +#: InvenTree/status_codes.py:101 +msgid "Stock manually added" +msgstr "" + +#: InvenTree/status_codes.py:102 +msgid "Stock manually removed" +msgstr "" + +#: InvenTree/status_codes.py:105 +msgid "Location changed" +msgstr "" + +#: InvenTree/status_codes.py:106 +msgid "Stock updated" +msgstr "" + +#: InvenTree/status_codes.py:109 +msgid "Installed into assembly" +msgstr "" + +#: InvenTree/status_codes.py:110 +msgid "Removed from assembly" +msgstr "" + +#: InvenTree/status_codes.py:112 +msgid "Installed component item" +msgstr "" + +#: InvenTree/status_codes.py:113 +msgid "Removed component item" +msgstr "" + +#: InvenTree/status_codes.py:116 +msgid "Split from parent item" +msgstr "" + +#: InvenTree/status_codes.py:117 +msgid "Split child item" +msgstr "" + +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1826 +msgid "Merged stock items" +msgstr "" + +#: InvenTree/status_codes.py:123 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:126 +msgid "Build order output created" +msgstr "" + +#: InvenTree/status_codes.py:127 +msgid "Build order output completed" +msgstr "" + +#: InvenTree/status_codes.py:128 +msgid "Build order output rejected" +msgstr "" + +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1732 +msgid "Consumed by build order" +msgstr "" + +#: InvenTree/status_codes.py:132 +msgid "Shipped against Sales Order" +msgstr "" + +#: InvenTree/status_codes.py:135 +msgid "Received against Purchase Order" +msgstr "" + +#: InvenTree/status_codes.py:138 +msgid "Returned against Return Order" +msgstr "" + +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 +msgid "Sent to customer" +msgstr "" + +#: InvenTree/status_codes.py:142 +msgid "Returned from customer" +msgstr "" + +#: InvenTree/status_codes.py:149 +msgid "Production" +msgstr "" + +#: InvenTree/status_codes.py:191 +msgid "Return" +msgstr "" + +#: InvenTree/status_codes.py:194 +msgid "Repair" +msgstr "" + +#: InvenTree/status_codes.py:197 +msgid "Replace" +msgstr "" + +#: InvenTree/status_codes.py:200 +msgid "Refund" +msgstr "" + +#: InvenTree/status_codes.py:203 +msgid "Reject" +msgstr "" + +#: InvenTree/validators.py:31 InvenTree/validators.py:33 +msgid "Invalid physical unit" +msgstr "" + +#: InvenTree/validators.py:39 +msgid "Not a valid currency code" +msgstr "" + +#: InvenTree/validators.py:106 InvenTree/validators.py:122 +msgid "Overage value must not be negative" +msgstr "" + +#: InvenTree/validators.py:124 +msgid "Overage must not exceed 100%" +msgstr "" + +#: InvenTree/validators.py:131 +msgid "Invalid value for overage" +msgstr "" + +#: InvenTree/views.py:403 templates/InvenTree/settings/user.html:23 +msgid "Edit User Information" +msgstr "" + +#: InvenTree/views.py:415 templates/InvenTree/settings/user.html:20 +msgid "Set Password" +msgstr "" + +#: InvenTree/views.py:437 +msgid "Password fields must match" +msgstr "" + +#: InvenTree/views.py:445 +msgid "Wrong password provided" +msgstr "" + +#: InvenTree/views.py:642 templates/navbar.html:160 +msgid "System Information" +msgstr "" + +#: InvenTree/views.py:649 templates/navbar.html:171 +msgid "About InvenTree" +msgstr "" + +#: build/api.py:237 +msgid "Build must be cancelled before it can be deleted" +msgstr "" + +#: build/api.py:281 part/models.py:3796 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2508 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:579 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:3790 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2517 +#: templates/js/translated/table_filters.js:186 +#: templates/js/translated/table_filters.js:215 +#: templates/js/translated/table_filters.js:583 +msgid "Optional" +msgstr "" + +#: build/api.py:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:575 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:64 templates/js/translated/build.js:1728 +#: templates/js/translated/build.js:2608 +#: templates/js/translated/sales_order.js:1926 +#: templates/js/translated/table_filters.js:567 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:766 +#: 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:2549 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:226 +#: templates/js/translated/part.js:689 templates/js/translated/part.js:691 +#: templates/js/translated/part.js:696 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:571 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/templates/build/build_base.html:27 +#: report/templates/report/inventree_build_order_base.html:105 +#: templates/email/build_order_completed.html:16 +#: templates/email/overdue_build_order.html:15 +#: templates/js/translated/build.js:964 templates/js/translated/stock.js:2863 +msgid "Build Order" +msgstr "" + +#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/templates/build/index.html:8 build/templates/build/index.html:12 +#: order/templates/order/sales_order_detail.html:111 +#: order/templates/order/so_sidebar.html:13 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 +#: templates/InvenTree/search.html:141 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:179 +msgid "Build Orders" +msgstr "" + +#: build/models.py:115 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:122 +msgid "Invalid choice for parent build" +msgstr "" + +#: build/models.py:166 +msgid "Build Order Reference" +msgstr "" + +#: build/models.py:167 order/models.py:363 order/models.py:768 +#: order/models.py:1086 order/models.py:1722 part/admin.py:274 +#: part/models.py:3805 part/templates/part/upload_bom.html:54 +#: report/templates/report/inventree_bill_of_materials_report.html:139 +#: report/templates/report/inventree_po_report_base.html:28 +#: report/templates/report/inventree_return_order_report_base.html:26 +#: report/templates/report/inventree_so_report_base.html:28 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2500 templates/js/translated/order.js:291 +#: templates/js/translated/pricing.js:386 +#: templates/js/translated/purchase_order.js:2056 +#: templates/js/translated/return_order.js:726 +#: templates/js/translated/sales_order.js:1815 +msgid "Reference" +msgstr "" + +#: build/models.py:178 +msgid "Brief description of the build (optional)" +msgstr "" + +#: build/models.py:186 build/templates/build/build_base.html:183 +#: build/templates/build/detail.html:87 +msgid "Parent Build" +msgstr "" + +#: build/models.py:187 +msgid "BuildOrder to which this build is allocated" +msgstr "" + +#: build/models.py:192 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:907 +#: order/models.py:1193 order/models.py:1308 order/models.py:1309 +#: part/models.py:365 part/models.py:2869 part/models.py:2983 +#: part/models.py:3120 part/models.py:3139 part/models.py:3158 +#: part/models.py:3179 part/models.py:3271 part/models.py:3545 +#: part/models.py:3667 part/models.py:3770 part/models.py:4093 +#: part/serializers.py:961 part/serializers.py:1394 +#: 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:206 stock/serializers.py:614 +#: 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:529 templates/js/translated/bom.js:632 +#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905 +#: templates/js/translated/build.js:1296 templates/js/translated/build.js:1727 +#: templates/js/translated/build.js:2147 templates/js/translated/build.js:2320 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1938 templates/js/translated/part.js:2010 +#: templates/js/translated/part.js:2319 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:757 +#: templates/js/translated/purchase_order.js:1297 +#: templates/js/translated/purchase_order.js:1839 +#: templates/js/translated/purchase_order.js:1998 +#: templates/js/translated/return_order.js:536 +#: templates/js/translated/return_order.js:707 +#: templates/js/translated/sales_order.js:297 +#: templates/js/translated/sales_order.js:1194 +#: templates/js/translated/sales_order.js:1595 +#: templates/js/translated/sales_order.js:1793 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1967 +#: templates/js/translated/stock.js:2828 templates/js/translated/stock.js:3061 +#: templates/js/translated/stock.js:3204 +msgid "Part" +msgstr "" + +#: build/models.py:200 +msgid "Select part to build" +msgstr "" + +#: build/models.py:205 +msgid "Sales Order Reference" +msgstr "" + +#: build/models.py:209 +msgid "SalesOrder to which this build is allocated" +msgstr "" + +#: build/models.py:214 build/serializers.py:942 +#: templates/js/translated/build.js:1715 +#: templates/js/translated/sales_order.js:1182 +msgid "Source Location" +msgstr "" + +#: build/models.py:218 +msgid "Select location to take stock from for this build (leave blank to take from any stock location)" +msgstr "" + +#: build/models.py:223 +msgid "Destination Location" +msgstr "" + +#: build/models.py:227 +msgid "Select location where the completed items will be stored" +msgstr "" + +#: build/models.py:231 +msgid "Build Quantity" +msgstr "" + +#: build/models.py:234 +msgid "Number of stock items to build" +msgstr "" + +#: build/models.py:238 +msgid "Completed items" +msgstr "" + +#: build/models.py:240 +msgid "Number of stock items which have been completed" +msgstr "" + +#: build/models.py:244 +msgid "Build Status" +msgstr "" + +#: build/models.py:248 +msgid "Build status code" +msgstr "" + +#: build/models.py:257 build/serializers.py:275 order/serializers.py:516 +#: stock/models.py:773 stock/serializers.py:1282 +#: templates/js/translated/purchase_order.js:1122 +msgid "Batch Code" +msgstr "" + +#: build/models.py:261 build/serializers.py:276 +msgid "Batch code for this build output" +msgstr "" + +#: build/models.py:264 order/models.py:242 part/models.py:1006 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:336 +#: templates/js/translated/sales_order.js:824 +msgid "Creation Date" +msgstr "" + +#: build/models.py:268 +msgid "Target completion date" +msgstr "" + +#: build/models.py:269 +msgid "Target date for build completion. Build will be overdue after this date." +msgstr "" + +#: build/models.py:272 order/models.py:413 order/models.py:1765 +#: templates/js/translated/build.js:2232 +msgid "Completion Date" +msgstr "" + +#: build/models.py:278 +msgid "completed by" +msgstr "" + +#: build/models.py:286 templates/js/translated/build.js:2192 +msgid "Issued by" +msgstr "" + +#: build/models.py:287 +msgid "User who issued this build order" +msgstr "" + +#: build/models.py:295 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 order/models.py:256 +#: 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:1013 +#: part/templates/part/part_base.html:390 +#: report/templates/report/inventree_build_order_base.html:158 +#: templates/js/translated/build.js:2204 +#: templates/js/translated/purchase_order.js:1754 +#: templates/js/translated/return_order.js:356 +#: templates/js/translated/table_filters.js:527 +msgid "Responsible" +msgstr "" + +#: build/models.py:296 +msgid "User or group responsible for this build order" +msgstr "" + +#: build/models.py:301 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:767 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 +msgid "External Link" +msgstr "" + +#: build/models.py:306 +msgid "Build Priority" +msgstr "" + +#: build/models.py:309 +msgid "Priority of this build order" +msgstr "" + +#: build/models.py:316 common/models.py:118 order/admin.py:17 +#: order/models.py:231 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2129 +#: templates/js/translated/purchase_order.js:1701 +#: templates/js/translated/return_order.js:315 +#: templates/js/translated/sales_order.js:803 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:317 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:552 +#, python-brace-format +msgid "Build order {build} has been completed" +msgstr "" + +#: build/models.py:558 +msgid "A build order has been completed" +msgstr "" + +#: build/models.py:768 build/models.py:843 +msgid "No build output specified" +msgstr "" + +#: build/models.py:771 +msgid "Build output is already completed" +msgstr "" + +#: build/models.py:774 +msgid "Build output does not match Build Order" +msgstr "" + +#: build/models.py:847 build/serializers.py:218 build/serializers.py:257 +#: build/serializers.py:815 order/models.py:444 order/serializers.py:389 +#: order/serializers.py:511 part/serializers.py:1219 part/serializers.py:1558 +#: stock/models.py:629 stock/models.py:1420 stock/serializers.py:390 +msgid "Quantity must be greater than zero" +msgstr "" + +#: build/models.py:852 build/serializers.py:223 +msgid "Quantity cannot be greater than the output quantity" +msgstr "" + +#: build/models.py:1266 +msgid "Build object" +msgstr "" + +#: build/models.py:1280 build/models.py:1538 build/serializers.py:205 +#: build/serializers.py:242 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2343 +#: order/models.py:1073 order/models.py:1644 order/serializers.py:1267 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:273 +#: part/forms.py:47 part/models.py:2996 part/models.py:3786 +#: 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:121 stock/serializers.py:381 +#: 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:531 templates/js/translated/bom.js:771 +#: templates/js/translated/bom.js:981 templates/js/translated/build.js:513 +#: templates/js/translated/build.js:729 templates/js/translated/build.js:1353 +#: templates/js/translated/build.js:1730 templates/js/translated/build.js:2342 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:958 +#: templates/js/translated/part.js:1808 templates/js/translated/part.js:3305 +#: 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:760 +#: templates/js/translated/purchase_order.js:1843 +#: templates/js/translated/purchase_order.js:2062 +#: templates/js/translated/sales_order.js:314 +#: templates/js/translated/sales_order.js:1196 +#: templates/js/translated/sales_order.js:1515 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1695 +#: templates/js/translated/sales_order.js:1821 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2992 +#: templates/js/translated/stock.js:3075 +msgid "Quantity" +msgstr "" + +#: build/models.py:1281 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1361 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1370 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1380 order/models.py:1600 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1386 order/models.py:1603 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1392 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1453 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1525 build/serializers.py:795 order/serializers.py:1095 +#: order/serializers.py:1116 stock/serializers.py:488 stock/serializers.py:989 +#: stock/serializers.py:1115 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:1729 +#: templates/js/translated/sales_order.js:298 +#: templates/js/translated/sales_order.js:1195 +#: templates/js/translated/sales_order.js:1496 +#: templates/js/translated/sales_order.js:1501 +#: templates/js/translated/sales_order.js:1602 +#: templates/js/translated/sales_order.js:1689 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2948 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1526 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1539 +msgid "Stock quantity to allocate to build" +msgstr "" + +#: build/models.py:1547 +msgid "Install into" +msgstr "" + +#: build/models.py:1548 +msgid "Destination stock item" +msgstr "" + +#: build/serializers.py:155 build/serializers.py:824 +#: templates/js/translated/build.js:1306 +msgid "Build Output" +msgstr "" + +#: build/serializers.py:167 +msgid "Build output does not match the parent build" +msgstr "" + +#: build/serializers.py:171 +msgid "Output part does not match BuildOrder part" +msgstr "" + +#: build/serializers.py:175 +msgid "This build output has already been completed" +msgstr "" + +#: build/serializers.py:186 +msgid "This build output is not fully allocated" +msgstr "" + +#: build/serializers.py:206 build/serializers.py:243 +msgid "Enter quantity for build output" +msgstr "" + +#: build/serializers.py:264 +msgid "Integer quantity required for trackable parts" +msgstr "" + +#: build/serializers.py:267 +msgid "Integer quantity required, as the bill of materials contains trackable parts" +msgstr "" + +#: build/serializers.py:282 order/serializers.py:524 order/serializers.py:1271 +#: stock/serializers.py:399 templates/js/translated/purchase_order.js:1146 +#: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 +msgid "Serial Numbers" +msgstr "" + +#: build/serializers.py:283 +msgid "Enter serial numbers for build outputs" +msgstr "" + +#: build/serializers.py:296 +msgid "Auto Allocate Serial Numbers" +msgstr "" + +#: build/serializers.py:297 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "" + +#: build/serializers.py:332 stock/api.py:788 +msgid "The following serial numbers already exist or are invalid" +msgstr "" + +#: build/serializers.py:383 build/serializers.py:445 build/serializers.py:523 +msgid "A list of build outputs must be provided" +msgstr "" + +#: build/serializers.py:421 build/serializers.py:493 order/serializers.py:497 +#: order/serializers.py:616 order/serializers.py:1623 part/serializers.py:973 +#: stock/serializers.py:410 stock/serializers.py:575 stock/serializers.py:669 +#: stock/serializers.py:1150 stock/serializers.py:1421 +#: stock/templates/stock/item_base.html:394 +#: templates/js/translated/barcode.js:530 +#: templates/js/translated/barcode.js:778 templates/js/translated/build.js:991 +#: templates/js/translated/build.js:2357 +#: templates/js/translated/purchase_order.js:1171 +#: templates/js/translated/purchase_order.js:1261 +#: templates/js/translated/sales_order.js:1508 +#: templates/js/translated/sales_order.js:1616 +#: templates/js/translated/sales_order.js:1624 +#: templates/js/translated/sales_order.js:1703 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2171 +#: templates/js/translated/stock.js:2842 +msgid "Location" +msgstr "" + +#: build/serializers.py:422 +msgid "Stock location for scrapped outputs" +msgstr "" + +#: build/serializers.py:428 +msgid "Discard Allocations" +msgstr "" + +#: build/serializers.py:429 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "" + +#: build/serializers.py:434 +msgid "Reason for scrapping build output(s)" +msgstr "" + +#: build/serializers.py:494 +msgid "Location for completed build outputs" +msgstr "" + +#: build/serializers.py:500 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:794 +#: order/models.py:1748 order/serializers.py:534 stock/admin.py:124 +#: stock/serializers.py:726 stock/serializers.py:1289 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2176 +#: templates/js/translated/purchase_order.js:1301 +#: templates/js/translated/purchase_order.js:1713 +#: templates/js/translated/return_order.js:328 +#: templates/js/translated/sales_order.js:816 +#: templates/js/translated/stock.js:2146 templates/js/translated/stock.js:2966 +#: templates/js/translated/stock.js:3091 +msgid "Status" +msgstr "" + +#: build/serializers.py:506 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:507 +msgid "Complete outputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:576 +msgid "Remove Allocated Stock" +msgstr "" + +#: build/serializers.py:577 +msgid "Subtract any stock which has already been allocated to this build" +msgstr "" + +#: build/serializers.py:583 +msgid "Remove Incomplete Outputs" +msgstr "" + +#: build/serializers.py:584 +msgid "Delete any build outputs which have not been completed" +msgstr "" + +#: build/serializers.py:611 +msgid "Not permitted" +msgstr "" + +#: build/serializers.py:612 +msgid "Accept as consumed by this build order" +msgstr "" + +#: build/serializers.py:613 +msgid "Deallocate before completing this build order" +msgstr "" + +#: build/serializers.py:635 +msgid "Overallocated Stock" +msgstr "" + +#: build/serializers.py:637 +msgid "How do you want to handle extra stock items assigned to the build order" +msgstr "" + +#: build/serializers.py:647 +msgid "Some stock items have been overallocated" +msgstr "" + +#: build/serializers.py:652 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:653 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:663 templates/js/translated/build.js:307 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:668 order/serializers.py:272 order/serializers.py:1163 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:669 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:679 templates/js/translated/build.js:311 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:688 templates/js/translated/build.js:295 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:718 +msgid "Build Line" +msgstr "" + +#: build/serializers.py:728 +msgid "Build output" +msgstr "" + +#: build/serializers.py:736 +msgid "Build output must point to the same build" +msgstr "" + +#: build/serializers.py:772 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:786 +msgid "bom_item.part must point to the same part as the build order" +msgstr "" + +#: build/serializers.py:801 stock/serializers.py:1002 +msgid "Item must be in stock" +msgstr "" + +#: build/serializers.py:849 order/serializers.py:1153 +#, python-brace-format +msgid "Available quantity ({q}) exceeded" +msgstr "" + +#: build/serializers.py:855 +msgid "Build output must be specified for allocation of tracked parts" +msgstr "" + +#: build/serializers.py:862 +msgid "Build output cannot be specified for allocation of untracked parts" +msgstr "" + +#: build/serializers.py:886 order/serializers.py:1435 +msgid "Allocation items must be provided" +msgstr "" + +#: build/serializers.py:943 +msgid "Stock location where parts are to be sourced (leave blank to take from any location)" +msgstr "" + +#: build/serializers.py:951 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:952 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:957 +msgid "Interchangeable Stock" +msgstr "" + +#: build/serializers.py:958 +msgid "Stock items in multiple locations can be used interchangeably" +msgstr "" + +#: build/serializers.py:963 +msgid "Substitute Stock" +msgstr "" + +#: build/serializers.py:964 +msgid "Allow allocation of substitute parts" +msgstr "" + +#: build/serializers.py:969 +msgid "Optional Items" +msgstr "" + +#: build/serializers.py:970 +msgid "Allocate optional BOM items to build order" +msgstr "" + +#: build/tasks.py:149 +msgid "Stock required for build order" +msgstr "" + +#: build/tasks.py:166 +msgid "Overdue Build Order" +msgstr "" + +#: build/tasks.py:171 +#, python-brace-format +msgid "Build order {bo} is now overdue" +msgstr "" + +#: build/templates/build/build_base.html:18 +msgid "Part thumbnail" +msgstr "" + +#: build/templates/build/build_base.html:38 +#: company/templates/company/supplier_part.html:35 +#: order/templates/order/order_base.html:29 +#: order/templates/order/return_order_base.html:38 +#: order/templates/order/sales_order_base.html:38 +#: part/templates/part/part_base.html:41 +#: stock/templates/stock/item_base.html:40 +#: stock/templates/stock/location.html:55 +#: templates/js/translated/filters.js:335 +msgid "Barcode actions" +msgstr "" + +#: build/templates/build/build_base.html:42 +#: company/templates/company/supplier_part.html:39 +#: order/templates/order/order_base.html:33 +#: order/templates/order/return_order_base.html:42 +#: order/templates/order/sales_order_base.html:42 +#: part/templates/part/part_base.html:44 +#: stock/templates/stock/item_base.html:44 +#: stock/templates/stock/location.html:57 templates/qr_button.html:1 +msgid "Show QR Code" +msgstr "" + +#: build/templates/build/build_base.html:45 +#: company/templates/company/supplier_part.html:41 +#: order/templates/order/order_base.html:36 +#: order/templates/order/return_order_base.html:45 +#: order/templates/order/sales_order_base.html:45 +#: part/templates/part/part_base.html:47 +#: stock/templates/stock/item_base.html:47 +#: stock/templates/stock/location.html:59 +#: templates/js/translated/barcode.js:479 +#: templates/js/translated/barcode.js:484 +msgid "Unlink Barcode" +msgstr "" + +#: build/templates/build/build_base.html:47 +#: company/templates/company/supplier_part.html:43 +#: order/templates/order/order_base.html:38 +#: order/templates/order/return_order_base.html:47 +#: order/templates/order/sales_order_base.html:47 +#: part/templates/part/part_base.html:49 +#: stock/templates/stock/item_base.html:49 +#: stock/templates/stock/location.html:61 +msgid "Link Barcode" +msgstr "" + +#: build/templates/build/build_base.html:56 +#: order/templates/order/order_base.html:46 +#: order/templates/order/return_order_base.html:55 +#: order/templates/order/sales_order_base.html:55 +msgid "Print actions" +msgstr "" + +#: build/templates/build/build_base.html:60 +msgid "Print build order report" +msgstr "" + +#: build/templates/build/build_base.html:67 +msgid "Build actions" +msgstr "" + +#: build/templates/build/build_base.html:71 +msgid "Edit Build" +msgstr "" + +#: build/templates/build/build_base.html:73 +msgid "Cancel Build" +msgstr "" + +#: build/templates/build/build_base.html:76 +msgid "Duplicate Build" +msgstr "" + +#: build/templates/build/build_base.html:79 +msgid "Delete Build" +msgstr "" + +#: build/templates/build/build_base.html:84 +#: build/templates/build/build_base.html:85 +msgid "Complete Build" +msgstr "" + +#: build/templates/build/build_base.html:107 +msgid "Build Description" +msgstr "" + +#: build/templates/build/build_base.html:117 +msgid "No build outputs have been created for this build order" +msgstr "" + +#: build/templates/build/build_base.html:124 +msgid "Build Order is ready to mark as completed" +msgstr "" + +#: build/templates/build/build_base.html:129 +msgid "Build Order cannot be completed as outstanding outputs remain" +msgstr "" + +#: build/templates/build/build_base.html:134 +msgid "Required build quantity has not yet been completed" +msgstr "" + +#: build/templates/build/build_base.html:139 +msgid "Stock has not been fully allocated to this Build Order" +msgstr "" + +#: build/templates/build/build_base.html:160 +#: build/templates/build/detail.html:138 order/models.py:238 +#: order/models.py:1098 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:2224 templates/js/translated/part.js:1826 +#: templates/js/translated/purchase_order.js:1730 +#: templates/js/translated/purchase_order.js:2138 +#: templates/js/translated/return_order.js:344 +#: templates/js/translated/return_order.js:748 +#: templates/js/translated/sales_order.js:832 +#: templates/js/translated/sales_order.js:1864 +msgid "Target Date" +msgstr "" + +#: build/templates/build/build_base.html:165 +#, python-format +msgid "This build was due on %(target)s" +msgstr "" + +#: build/templates/build/build_base.html:165 +#: build/templates/build/build_base.html:222 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js:520 +#: templates/js/translated/table_filters.js:622 +#: templates/js/translated/table_filters.js:663 +msgid "Overdue" +msgstr "" + +#: build/templates/build/build_base.html:177 +#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 +msgid "Completed Outputs" +msgstr "" + +#: build/templates/build/build_base.html:190 +#: build/templates/build/detail.html:101 order/api.py:1410 order/models.py:1301 +#: order/models.py:1400 order/models.py:1548 +#: order/templates/order/sales_order_base.html:9 +#: order/templates/order/sales_order_base.html:28 +#: report/templates/report/inventree_build_order_base.html:135 +#: report/templates/report/inventree_so_report_base.html:14 +#: stock/templates/stock/item_base.html:369 +#: templates/email/overdue_sales_order.html:15 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:766 +#: templates/js/translated/sales_order.js:989 +#: templates/js/translated/stock.js:2895 +msgid "Sales Order" +msgstr "" + +#: build/templates/build/build_base.html:197 +#: build/templates/build/detail.html:115 +#: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 +msgid "Issued By" +msgstr "" + +#: build/templates/build/build_base.html:211 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2141 +msgid "Priority" +msgstr "" + +#: build/templates/build/build_base.html:273 +msgid "Delete Build Order" +msgstr "" + +#: build/templates/build/build_base.html:283 +msgid "Build Order QR Code" +msgstr "" + +#: build/templates/build/build_base.html:295 +msgid "Link Barcode to Build Order" +msgstr "" + +#: build/templates/build/detail.html:15 +msgid "Build Details" +msgstr "" + +#: build/templates/build/detail.html:38 +msgid "Stock Source" +msgstr "" + +#: build/templates/build/detail.html:43 +msgid "Stock can be taken from any available location." +msgstr "" + +#: build/templates/build/detail.html:49 order/models.py:1220 +#: templates/js/translated/purchase_order.js:2180 +msgid "Destination" +msgstr "" + +#: build/templates/build/detail.html:56 +msgid "Destination location not specified" +msgstr "" + +#: build/templates/build/detail.html:73 +msgid "Allocated Parts" +msgstr "" + +#: build/templates/build/detail.html:80 stock/admin.py:123 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1364 +#: templates/js/translated/model_renderers.js:233 +#: templates/js/translated/purchase_order.js:1267 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2160 +#: templates/js/translated/stock.js:3098 +#: templates/js/translated/table_filters.js:313 +#: templates/js/translated/table_filters.js:404 +msgid "Batch" +msgstr "" + +#: build/templates/build/detail.html:133 +#: order/templates/order/order_base.html:173 +#: order/templates/order/return_order_base.html:151 +#: order/templates/order/sales_order_base.html:186 +#: templates/js/translated/build.js:2184 +msgid "Created" +msgstr "" + +#: build/templates/build/detail.html:144 +msgid "No target date set" +msgstr "" + +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js:685 +msgid "Completed" +msgstr "" + +#: build/templates/build/detail.html:153 +msgid "Build not complete" +msgstr "" + +#: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 +msgid "Child Build Orders" +msgstr "" + +#: build/templates/build/detail.html:177 +msgid "Allocate Stock to Build" +msgstr "" + +#: build/templates/build/detail.html:181 +msgid "Deallocate stock" +msgstr "" + +#: build/templates/build/detail.html:182 +msgid "Deallocate Stock" +msgstr "" + +#: build/templates/build/detail.html:184 +msgid "Automatically allocate stock to build" +msgstr "" + +#: build/templates/build/detail.html:185 +msgid "Auto Allocate" +msgstr "" + +#: build/templates/build/detail.html:187 +msgid "Manually allocate stock to build" +msgstr "" + +#: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 +msgid "Allocate Stock" +msgstr "" + +#: build/templates/build/detail.html:191 +msgid "Order required parts" +msgstr "" + +#: build/templates/build/detail.html:192 +#: templates/js/translated/purchase_order.js:800 +msgid "Order Parts" +msgstr "" + +#: build/templates/build/detail.html:210 +msgid "Incomplete Build Outputs" +msgstr "" + +#: build/templates/build/detail.html:214 +msgid "Create new build output" +msgstr "" + +#: build/templates/build/detail.html:215 +msgid "New Build Output" +msgstr "" + +#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +msgid "Consumed Stock" +msgstr "" + +#: build/templates/build/detail.html:244 +msgid "Completed Build Outputs" +msgstr "" + +#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: company/templates/company/detail.html:229 +#: company/templates/company/manufacturer_part.html:141 +#: company/templates/company/manufacturer_part_sidebar.html:9 +#: company/templates/company/sidebar.html:39 +#: order/templates/order/po_sidebar.html:9 +#: order/templates/order/purchase_order_detail.html:84 +#: order/templates/order/return_order_detail.html:70 +#: order/templates/order/return_order_sidebar.html:7 +#: order/templates/order/sales_order_detail.html:124 +#: order/templates/order/so_sidebar.html:15 part/templates/part/detail.html:217 +#: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 +#: stock/templates/stock/stock_sidebar.html:23 +msgid "Attachments" +msgstr "" + +#: build/templates/build/detail.html:271 +msgid "Build Notes" +msgstr "" + +#: build/templates/build/detail.html:422 +msgid "Allocation Complete" +msgstr "" + +#: build/templates/build/detail.html:423 +msgid "All lines have been fully allocated" +msgstr "" + +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 +msgid "New Build Order" +msgstr "" + +#: build/templates/build/sidebar.html:5 +msgid "Build Order Details" +msgstr "" + +#: build/templates/build/sidebar.html:10 +msgid "Incomplete Outputs" +msgstr "" + +#: common/files.py:63 +#, python-brace-format +msgid "Unsupported file format: {fmt}" +msgstr "" + +#: common/files.py:65 +msgid "Error reading file (invalid encoding)" +msgstr "" + +#: common/files.py:70 +msgid "Error reading file (invalid format)" +msgstr "" + +#: common/files.py:72 +msgid "Error reading file (incorrect dimension)" +msgstr "" + +#: common/files.py:74 +msgid "Error reading file (data could be corrupted)" +msgstr "" + +#: common/forms.py:13 +msgid "File" +msgstr "" + +#: common/forms.py:14 +msgid "Select file to upload" +msgstr "" + +#: common/forms.py:28 +msgid "{name.title()} File" +msgstr "" + +#: common/forms.py:29 +#, python-brace-format +msgid "Select {name} file to upload" +msgstr "" + +#: common/models.py:71 +msgid "Updated" +msgstr "" + +#: common/models.py:72 +msgid "Timestamp of last update" +msgstr "" + +#: common/models.py:119 +msgid "Unique project code" +msgstr "" + +#: common/models.py:126 +msgid "Project description" +msgstr "" + +#: common/models.py:648 +msgid "Settings key (must be unique - case insensitive)" +msgstr "" + +#: common/models.py:650 +msgid "Settings value" +msgstr "" + +#: common/models.py:691 +msgid "Chosen value is not a valid option" +msgstr "" + +#: common/models.py:708 +msgid "Value must be a boolean value" +msgstr "" + +#: common/models.py:719 +msgid "Value must be an integer value" +msgstr "" + +#: common/models.py:758 +msgid "Key string must be unique" +msgstr "" + +#: common/models.py:963 +msgid "No group" +msgstr "" + +#: common/models.py:988 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/models.py:990 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "" + +#: common/models.py:1002 +msgid "No plugin" +msgstr "" + +#: common/models.py:1068 +msgid "Restart required" +msgstr "" + +#: common/models.py:1069 +msgid "A setting has been changed which requires a server restart" +msgstr "" + +#: common/models.py:1076 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1077 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1083 +msgid "Server Instance Name" +msgstr "" + +#: common/models.py:1085 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:1090 +msgid "Use instance name" +msgstr "" + +#: common/models.py:1091 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:1097 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:1098 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:1104 company/models.py:101 company/models.py:102 +msgid "Company name" +msgstr "" + +#: common/models.py:1105 +msgid "Internal company name" +msgstr "" + +#: common/models.py:1110 +msgid "Base URL" +msgstr "" + +#: common/models.py:1111 +msgid "Base URL for server instance" +msgstr "" + +#: common/models.py:1118 +msgid "Default Currency" +msgstr "" + +#: common/models.py:1119 +msgid "Select base currency for pricing calculations" +msgstr "" + +#: common/models.py:1126 +msgid "Currency Update Interval" +msgstr "" + +#: common/models.py:1127 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" + +#: common/models.py:1129 common/models.py:1193 common/models.py:1211 +#: common/models.py:1218 common/models.py:1229 common/models.py:1240 +#: common/models.py:1471 common/models.py:1495 common/models.py:1614 +#: common/models.py:1870 +msgid "days" +msgstr "" + +#: common/models.py:1137 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1138 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1144 +msgid "Download from URL" +msgstr "" + +#: common/models.py:1145 +msgid "Allow download of remote images and files from external URL" +msgstr "" + +#: common/models.py:1151 +msgid "Download Size Limit" +msgstr "" + +#: common/models.py:1152 +msgid "Maximum allowable download size for remote image" +msgstr "" + +#: common/models.py:1163 +msgid "User-agent used to download from URL" +msgstr "" + +#: common/models.py:1164 +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:1169 +msgid "Require confirm" +msgstr "" + +#: common/models.py:1170 +msgid "Require explicit user confirmation for certain action." +msgstr "" + +#: common/models.py:1176 +msgid "Tree Depth" +msgstr "" + +#: common/models.py:1177 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "" + +#: common/models.py:1186 +msgid "Update Check Interval" +msgstr "" + +#: common/models.py:1187 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" + +#: common/models.py:1197 +msgid "Automatic Backup" +msgstr "" + +#: common/models.py:1198 +msgid "Enable automatic backup of database and media files" +msgstr "" + +#: common/models.py:1204 +msgid "Auto Backup Interval" +msgstr "" + +#: common/models.py:1205 +msgid "Specify number of days between automated backup events" +msgstr "" + +#: common/models.py:1215 +msgid "Task Deletion Interval" +msgstr "" + +#: common/models.py:1216 +msgid "Background task results will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1226 +msgid "Error Log Deletion Interval" +msgstr "" + +#: common/models.py:1227 +msgid "Error logs will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1237 +msgid "Notification Deletion Interval" +msgstr "" + +#: common/models.py:1238 +msgid "User notifications will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1248 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "" + +#: common/models.py:1249 +msgid "Enable barcode scanner support in the web interface" +msgstr "" + +#: common/models.py:1255 +msgid "Barcode Input Delay" +msgstr "" + +#: common/models.py:1256 +msgid "Barcode input processing delay time" +msgstr "" + +#: common/models.py:1266 +msgid "Barcode Webcam Support" +msgstr "" + +#: common/models.py:1267 +msgid "Allow barcode scanning via webcam in browser" +msgstr "" + +#: common/models.py:1273 +msgid "Part Revisions" +msgstr "" + +#: common/models.py:1274 +msgid "Enable revision field for Part" +msgstr "" + +#: common/models.py:1280 +msgid "IPN Regex" +msgstr "" + +#: common/models.py:1281 +msgid "Regular expression pattern for matching Part IPN" +msgstr "" + +#: common/models.py:1285 +msgid "Allow Duplicate IPN" +msgstr "" + +#: common/models.py:1286 +msgid "Allow multiple parts to share the same IPN" +msgstr "" + +#: common/models.py:1292 +msgid "Allow Editing IPN" +msgstr "" + +#: common/models.py:1293 +msgid "Allow changing the IPN value while editing a part" +msgstr "" + +#: common/models.py:1299 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1300 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1306 +msgid "Copy Part Parameter Data" +msgstr "" + +#: common/models.py:1307 +msgid "Copy parameter data by default when duplicating a part" +msgstr "" + +#: common/models.py:1313 +msgid "Copy Part Test Data" +msgstr "" + +#: common/models.py:1314 +msgid "Copy test data by default when duplicating a part" +msgstr "" + +#: common/models.py:1320 +msgid "Copy Category Parameter Templates" +msgstr "" + +#: common/models.py:1321 +msgid "Copy category parameter templates when creating a part" +msgstr "" + +#: common/models.py:1327 part/admin.py:55 part/models.py:3550 +#: report/models.py:176 templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:763 +msgid "Template" +msgstr "" + +#: common/models.py:1328 +msgid "Parts are templates by default" +msgstr "" + +#: common/models.py:1334 part/admin.py:51 part/admin.py:279 part/models.py:964 +#: templates/js/translated/bom.js:1633 +#: templates/js/translated/table_filters.js:330 +#: templates/js/translated/table_filters.js:717 +msgid "Assembly" +msgstr "" + +#: common/models.py:1335 +msgid "Parts can be assembled from other components by default" +msgstr "" + +#: common/models.py:1341 part/admin.py:52 part/models.py:970 +#: templates/js/translated/table_filters.js:725 +msgid "Component" +msgstr "" + +#: common/models.py:1342 +msgid "Parts can be used as sub-components by default" +msgstr "" + +#: common/models.py:1348 part/admin.py:53 part/models.py:981 +msgid "Purchaseable" +msgstr "" + +#: common/models.py:1349 +msgid "Parts are purchaseable by default" +msgstr "" + +#: common/models.py:1355 part/admin.py:54 part/models.py:986 +#: templates/js/translated/table_filters.js:751 +msgid "Salable" +msgstr "" + +#: common/models.py:1356 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1362 part/admin.py:56 part/models.py:976 +#: templates/js/translated/table_filters.js:147 +#: templates/js/translated/table_filters.js:223 +#: templates/js/translated/table_filters.js:767 +msgid "Trackable" +msgstr "" + +#: common/models.py:1363 +msgid "Parts are trackable by default" +msgstr "" + +#: common/models.py:1369 part/admin.py:57 part/models.py:996 +#: part/templates/part/part_base.html:154 +#: templates/js/translated/table_filters.js:143 +#: templates/js/translated/table_filters.js:771 +msgid "Virtual" +msgstr "" + +#: common/models.py:1370 +msgid "Parts are virtual by default" +msgstr "" + +#: common/models.py:1376 +msgid "Show Import in Views" +msgstr "" + +#: common/models.py:1377 +msgid "Display the import wizard in some part views" +msgstr "" + +#: common/models.py:1383 +msgid "Show related parts" +msgstr "" + +#: common/models.py:1384 +msgid "Display related parts for a part" +msgstr "" + +#: common/models.py:1390 +msgid "Initial Stock Data" +msgstr "" + +#: common/models.py:1391 +msgid "Allow creation of initial stock when adding a new part" +msgstr "" + +#: common/models.py:1397 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" +msgstr "" + +#: common/models.py:1398 +msgid "Allow creation of initial supplier data when adding a new part" +msgstr "" + +#: common/models.py:1404 +msgid "Part Name Display Format" +msgstr "" + +#: common/models.py:1405 +msgid "Format to display the part name" +msgstr "" + +#: common/models.py:1412 +msgid "Part Category Default Icon" +msgstr "" + +#: common/models.py:1413 +msgid "Part category default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1418 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1419 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1425 +msgid "Minimum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1426 +msgid "Minimum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1436 +msgid "Maximum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1437 +msgid "Maximum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1447 +msgid "Use Supplier Pricing" +msgstr "" + +#: common/models.py:1448 +msgid "Include supplier price breaks in overall pricing calculations" +msgstr "" + +#: common/models.py:1454 +msgid "Purchase History Override" +msgstr "" + +#: common/models.py:1455 +msgid "Historical purchase order pricing overrides supplier price breaks" +msgstr "" + +#: common/models.py:1461 +msgid "Use Stock Item Pricing" +msgstr "" + +#: common/models.py:1462 +msgid "Use pricing from manually entered stock data for pricing calculations" +msgstr "" + +#: common/models.py:1468 +msgid "Stock Item Pricing Age" +msgstr "" + +#: common/models.py:1469 +msgid "Exclude stock items older than this number of days from pricing calculations" +msgstr "" + +#: common/models.py:1479 +msgid "Use Variant Pricing" +msgstr "" + +#: common/models.py:1480 +msgid "Include variant pricing in overall pricing calculations" +msgstr "" + +#: common/models.py:1486 +msgid "Active Variants Only" +msgstr "" + +#: common/models.py:1487 +msgid "Only use active variant parts for calculating variant pricing" +msgstr "" + +#: common/models.py:1493 +msgid "Pricing Rebuild Interval" +msgstr "" + +#: common/models.py:1494 +msgid "Number of days before part pricing is automatically updated" +msgstr "" + +#: common/models.py:1504 +msgid "Internal Prices" +msgstr "" + +#: common/models.py:1505 +msgid "Enable internal prices for parts" +msgstr "" + +#: common/models.py:1511 +msgid "Internal Price Override" +msgstr "" + +#: common/models.py:1512 +msgid "If available, internal prices override price range calculations" +msgstr "" + +#: common/models.py:1518 +msgid "Enable label printing" +msgstr "" + +#: common/models.py:1519 +msgid "Enable label printing from the web interface" +msgstr "" + +#: common/models.py:1525 +msgid "Label Image DPI" +msgstr "" + +#: common/models.py:1526 +msgid "DPI resolution when generating image files to supply to label printing plugins" +msgstr "" + +#: common/models.py:1535 +msgid "Enable Reports" +msgstr "" + +#: common/models.py:1536 +msgid "Enable generation of reports" +msgstr "" + +#: common/models.py:1542 templates/stats.html:25 +msgid "Debug Mode" +msgstr "" + +#: common/models.py:1543 +msgid "Generate reports in debug mode (HTML output)" +msgstr "" + +#: common/models.py:1549 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:197 +msgid "Page Size" +msgstr "" + +#: common/models.py:1550 +msgid "Default page size for PDF reports" +msgstr "" + +#: common/models.py:1556 +msgid "Enable Test Reports" +msgstr "" + +#: common/models.py:1557 +msgid "Enable generation of test reports" +msgstr "" + +#: common/models.py:1563 +msgid "Attach Test Reports" +msgstr "" + +#: common/models.py:1564 +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +msgstr "" + +#: common/models.py:1570 +msgid "Globally Unique Serials" +msgstr "" + +#: common/models.py:1571 +msgid "Serial numbers for stock items must be globally unique" +msgstr "" + +#: common/models.py:1577 +msgid "Autofill Serial Numbers" +msgstr "" + +#: common/models.py:1578 +msgid "Autofill serial numbers in forms" +msgstr "" + +#: common/models.py:1584 +msgid "Delete Depleted Stock" +msgstr "" + +#: common/models.py:1585 +msgid "Determines default behaviour when a stock item is depleted" +msgstr "" + +#: common/models.py:1591 +msgid "Batch Code Template" +msgstr "" + +#: common/models.py:1592 +msgid "Template for generating default batch codes for stock items" +msgstr "" + +#: common/models.py:1597 +msgid "Stock Expiry" +msgstr "" + +#: common/models.py:1598 +msgid "Enable stock expiry functionality" +msgstr "" + +#: common/models.py:1604 +msgid "Sell Expired Stock" +msgstr "" + +#: common/models.py:1605 +msgid "Allow sale of expired stock" +msgstr "" + +#: common/models.py:1611 +msgid "Stock Stale Time" +msgstr "" + +#: common/models.py:1612 +msgid "Number of days stock items are considered stale before expiring" +msgstr "" + +#: common/models.py:1619 +msgid "Build Expired Stock" +msgstr "" + +#: common/models.py:1620 +msgid "Allow building with expired stock" +msgstr "" + +#: common/models.py:1626 +msgid "Stock Ownership Control" +msgstr "" + +#: common/models.py:1627 +msgid "Enable ownership control over stock locations and items" +msgstr "" + +#: common/models.py:1633 +msgid "Stock Location Default Icon" +msgstr "" + +#: common/models.py:1634 +msgid "Stock location default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1639 +msgid "Show Installed Stock Items" +msgstr "" + +#: common/models.py:1640 +msgid "Display installed stock items in stock tables" +msgstr "" + +#: common/models.py:1646 +msgid "Build Order Reference Pattern" +msgstr "" + +#: common/models.py:1647 +msgid "Required pattern for generating Build Order reference field" +msgstr "" + +#: common/models.py:1653 +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1654 +msgid "Enable return order functionality in the user interface" +msgstr "" + +#: common/models.py:1660 +msgid "Return Order Reference Pattern" +msgstr "" + +#: common/models.py:1661 +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1667 +msgid "Edit Completed Return Orders" +msgstr "" + +#: common/models.py:1668 +msgid "Allow editing of return orders after they have been completed" +msgstr "" + +#: common/models.py:1674 +msgid "Sales Order Reference Pattern" +msgstr "" + +#: common/models.py:1675 +msgid "Required pattern for generating Sales Order reference field" +msgstr "" + +#: common/models.py:1681 +msgid "Sales Order Default Shipment" +msgstr "" + +#: common/models.py:1682 +msgid "Enable creation of default shipment with sales orders" +msgstr "" + +#: common/models.py:1688 +msgid "Edit Completed Sales Orders" +msgstr "" + +#: common/models.py:1689 +msgid "Allow editing of sales orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1695 +msgid "Purchase Order Reference Pattern" +msgstr "" + +#: common/models.py:1696 +msgid "Required pattern for generating Purchase Order reference field" +msgstr "" + +#: common/models.py:1702 +msgid "Edit Completed Purchase Orders" +msgstr "" + +#: common/models.py:1703 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1710 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1711 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1717 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1718 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1724 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1725 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1731 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1732 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1738 +msgid "Email required" +msgstr "" + +#: common/models.py:1739 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1745 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1746 +msgid "Automatically fill out user-details from SSO account-data" +msgstr "" + +#: common/models.py:1752 +msgid "Mail twice" +msgstr "" + +#: common/models.py:1753 +msgid "On signup ask users twice for their mail" +msgstr "" + +#: common/models.py:1759 +msgid "Password twice" +msgstr "" + +#: common/models.py:1760 +msgid "On signup ask users twice for their password" +msgstr "" + +#: common/models.py:1766 +msgid "Allowed domains" +msgstr "" + +#: common/models.py:1767 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgstr "" + +#: common/models.py:1773 +msgid "Group on signup" +msgstr "" + +#: common/models.py:1774 +msgid "Group to which new users are assigned on registration" +msgstr "" + +#: common/models.py:1780 +msgid "Enforce MFA" +msgstr "" + +#: common/models.py:1781 +msgid "Users must use multifactor security." +msgstr "" + +#: common/models.py:1787 +msgid "Check plugins on startup" +msgstr "" + +#: common/models.py:1788 +msgid "Check that all plugins are installed on startup - enable in container environments" +msgstr "" + +#: common/models.py:1796 +msgid "Enable URL integration" +msgstr "" + +#: common/models.py:1797 +msgid "Enable plugins to add URL routes" +msgstr "" + +#: common/models.py:1804 +msgid "Enable navigation integration" +msgstr "" + +#: common/models.py:1805 +msgid "Enable plugins to integrate into navigation" +msgstr "" + +#: common/models.py:1812 +msgid "Enable app integration" +msgstr "" + +#: common/models.py:1813 +msgid "Enable plugins to add apps" +msgstr "" + +#: common/models.py:1820 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:1821 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1828 +msgid "Enable event integration" +msgstr "" + +#: common/models.py:1829 +msgid "Enable plugins to respond to internal events" +msgstr "" + +#: common/models.py:1836 +msgid "Enable project codes" +msgstr "" + +#: common/models.py:1837 +msgid "Enable project codes for tracking projects" +msgstr "" + +#: common/models.py:1843 +msgid "Stocktake Functionality" +msgstr "" + +#: common/models.py:1844 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgstr "" + +#: common/models.py:1850 +msgid "Exclude External Locations" +msgstr "" + +#: common/models.py:1851 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "" + +#: common/models.py:1857 +msgid "Automatic Stocktake Period" +msgstr "" + +#: common/models.py:1858 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" +msgstr "" + +#: common/models.py:1867 +msgid "Report Deletion Interval" +msgstr "" + +#: common/models.py:1868 +msgid "Stocktake reports will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1885 common/models.py:2314 +msgid "Settings key (must be unique - case insensitive" +msgstr "" + +#: common/models.py:1925 +msgid "Hide inactive parts" +msgstr "" + +#: common/models.py:1926 +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "" + +#: common/models.py:1932 +msgid "Show subscribed parts" +msgstr "" + +#: common/models.py:1933 +msgid "Show subscribed parts on the homepage" +msgstr "" + +#: common/models.py:1939 +msgid "Show subscribed categories" +msgstr "" + +#: common/models.py:1940 +msgid "Show subscribed part categories on the homepage" +msgstr "" + +#: common/models.py:1946 +msgid "Show latest parts" +msgstr "" + +#: common/models.py:1947 +msgid "Show latest parts on the homepage" +msgstr "" + +#: common/models.py:1953 +msgid "Show unvalidated BOMs" +msgstr "" + +#: common/models.py:1954 +msgid "Show BOMs that await validation on the homepage" +msgstr "" + +#: common/models.py:1960 +msgid "Show recent stock changes" +msgstr "" + +#: common/models.py:1961 +msgid "Show recently changed stock items on the homepage" +msgstr "" + +#: common/models.py:1967 +msgid "Show low stock" +msgstr "" + +#: common/models.py:1968 +msgid "Show low stock items on the homepage" +msgstr "" + +#: common/models.py:1974 +msgid "Show depleted stock" +msgstr "" + +#: common/models.py:1975 +msgid "Show depleted stock items on the homepage" +msgstr "" + +#: common/models.py:1981 +msgid "Show needed stock" +msgstr "" + +#: common/models.py:1982 +msgid "Show stock items needed for builds on the homepage" +msgstr "" + +#: common/models.py:1988 +msgid "Show expired stock" +msgstr "" + +#: common/models.py:1989 +msgid "Show expired stock items on the homepage" +msgstr "" + +#: common/models.py:1995 +msgid "Show stale stock" +msgstr "" + +#: common/models.py:1996 +msgid "Show stale stock items on the homepage" +msgstr "" + +#: common/models.py:2002 +msgid "Show pending builds" +msgstr "" + +#: common/models.py:2003 +msgid "Show pending builds on the homepage" +msgstr "" + +#: common/models.py:2009 +msgid "Show overdue builds" +msgstr "" + +#: common/models.py:2010 +msgid "Show overdue builds on the homepage" +msgstr "" + +#: common/models.py:2016 +msgid "Show outstanding POs" +msgstr "" + +#: common/models.py:2017 +msgid "Show outstanding POs on the homepage" +msgstr "" + +#: common/models.py:2023 +msgid "Show overdue POs" +msgstr "" + +#: common/models.py:2024 +msgid "Show overdue POs on the homepage" +msgstr "" + +#: common/models.py:2030 +msgid "Show outstanding SOs" +msgstr "" + +#: common/models.py:2031 +msgid "Show outstanding SOs on the homepage" +msgstr "" + +#: common/models.py:2037 +msgid "Show overdue SOs" +msgstr "" + +#: common/models.py:2038 +msgid "Show overdue SOs on the homepage" +msgstr "" + +#: common/models.py:2044 +msgid "Show pending SO shipments" +msgstr "" + +#: common/models.py:2045 +msgid "Show pending SO shipments on the homepage" +msgstr "" + +#: common/models.py:2051 +msgid "Show News" +msgstr "" + +#: common/models.py:2052 +msgid "Show news on the homepage" +msgstr "" + +#: common/models.py:2058 +msgid "Inline label display" +msgstr "" + +#: common/models.py:2059 +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2065 +msgid "Default label printer" +msgstr "" + +#: common/models.py:2066 +msgid "Configure which label printer should be selected by default" +msgstr "" + +#: common/models.py:2072 +msgid "Inline report display" +msgstr "" + +#: common/models.py:2073 +msgid "Display PDF reports in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2079 +msgid "Search Parts" +msgstr "" + +#: common/models.py:2080 +msgid "Display parts in search preview window" +msgstr "" + +#: common/models.py:2086 +msgid "Search Supplier Parts" +msgstr "" + +#: common/models.py:2087 +msgid "Display supplier parts in search preview window" +msgstr "" + +#: common/models.py:2093 +msgid "Search Manufacturer Parts" +msgstr "" + +#: common/models.py:2094 +msgid "Display manufacturer parts in search preview window" +msgstr "" + +#: common/models.py:2100 +msgid "Hide Inactive Parts" +msgstr "" + +#: common/models.py:2101 +msgid "Excluded inactive parts from search preview window" +msgstr "" + +#: common/models.py:2107 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2108 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2114 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2115 +msgid "Display stock items in search preview window" +msgstr "" + +#: common/models.py:2121 +msgid "Hide Unavailable Stock Items" +msgstr "" + +#: common/models.py:2122 +msgid "Exclude stock items which are not available from the search preview window" +msgstr "" + +#: common/models.py:2128 +msgid "Search Locations" +msgstr "" + +#: common/models.py:2129 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2135 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2136 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2142 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2143 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2149 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2150 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2156 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2157 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2163 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2164 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2170 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2171 +msgid "Exclude inactive sales orders from search preview window" +msgstr "" + +#: common/models.py:2177 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2178 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2184 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2185 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2191 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2192 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2198 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2199 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2205 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2206 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2212 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2213 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2219 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2220 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2226 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2227 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2233 +msgid "Date Format" +msgstr "" + +#: common/models.py:2234 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2248 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2249 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2255 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2256 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2262 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2263 +msgid "Maximimum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2272 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2273 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2281 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2282 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2290 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2291 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2299 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2300 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2344 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2351 company/serializers.py:484 order/admin.py:41 +#: order/models.py:1131 order/models.py:1933 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1880 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:738 +msgid "Price" +msgstr "" + +#: common/models.py:2352 +msgid "Unit price at specified quantity" +msgstr "" + +#: common/models.py:2511 common/models.py:2689 +msgid "Endpoint" +msgstr "" + +#: common/models.py:2512 +msgid "Endpoint at which this webhook is received" +msgstr "" + +#: common/models.py:2521 +msgid "Name for this webhook" +msgstr "" + +#: common/models.py:2526 part/admin.py:50 part/models.py:991 +#: plugin/models.py:48 templates/js/translated/table_filters.js:135 +#: templates/js/translated/table_filters.js:219 +#: templates/js/translated/table_filters.js:488 +#: templates/js/translated/table_filters.js:516 +#: templates/js/translated/table_filters.js:712 users/models.py:154 +msgid "Active" +msgstr "" + +#: common/models.py:2527 +msgid "Is this webhook active" +msgstr "" + +#: common/models.py:2541 users/models.py:132 +msgid "Token" +msgstr "" + +#: common/models.py:2542 +msgid "Token for access" +msgstr "" + +#: common/models.py:2549 +msgid "Secret" +msgstr "" + +#: common/models.py:2550 +msgid "Shared secret for HMAC" +msgstr "" + +#: common/models.py:2656 +msgid "Message ID" +msgstr "" + +#: common/models.py:2657 +msgid "Unique identifier for this message" +msgstr "" + +#: common/models.py:2665 +msgid "Host" +msgstr "" + +#: common/models.py:2666 +msgid "Host from which this message was received" +msgstr "" + +#: common/models.py:2673 +msgid "Header" +msgstr "" + +#: common/models.py:2674 +msgid "Header of this message" +msgstr "" + +#: common/models.py:2680 +msgid "Body" +msgstr "" + +#: common/models.py:2681 +msgid "Body of this message" +msgstr "" + +#: common/models.py:2690 +msgid "Endpoint on which this message was received" +msgstr "" + +#: common/models.py:2695 +msgid "Worked on" +msgstr "" + +#: common/models.py:2696 +msgid "Was the work on this message finished?" +msgstr "" + +#: common/models.py:2850 +msgid "Id" +msgstr "" + +#: common/models.py:2856 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 +msgid "Title" +msgstr "" + +#: common/models.py:2866 templates/js/translated/news.js:60 +msgid "Published" +msgstr "" + +#: common/models.py:2871 templates/InvenTree/settings/plugin_settings.html:32 +#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:102 +msgid "Author" +msgstr "" + +#: common/models.py:2876 templates/js/translated/news.js:52 +msgid "Summary" +msgstr "" + +#: common/models.py:2881 +msgid "Read" +msgstr "" + +#: common/models.py:2882 +msgid "Was this news item read?" +msgstr "" + +#: common/models.py:2901 company/models.py:139 part/models.py:881 +#: report/templates/report/inventree_bill_of_materials_report.html:126 +#: report/templates/report/inventree_bill_of_materials_report.html:148 +#: report/templates/report/inventree_return_order_report_base.html:35 +#: stock/templates/stock/item_base.html:133 templates/503.html:31 +#: templates/hover_image.html:7 templates/hover_image.html:9 +#: templates/modals.html:6 +msgid "Image" +msgstr "" + +#: common/models.py:2902 +msgid "Image file" +msgstr "" + +#: common/models.py:2945 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:2967 +msgid "Unit name" +msgstr "" + +#: common/models.py:2973 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:2974 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:2980 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:2981 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:290 +#, python-brace-format +msgid "New {verbose_name}" +msgstr "" + +#: common/notifications.py:292 +msgid "A new order has been created and assigned to you" +msgstr "" + +#: common/notifications.py:298 common/notifications.py:305 +msgid "Items Received" +msgstr "" + +#: common/notifications.py:300 +msgid "Items have been received against a purchase order" +msgstr "" + +#: common/notifications.py:307 +msgid "Items have been received against a return order" +msgstr "" + +#: common/notifications.py:419 +msgid "Error raised by plugin" +msgstr "" + +#: common/views.py:85 order/templates/order/order_wizard/po_upload.html:51 +#: order/templates/order/purchase_order_detail.html:24 order/views.py:118 +#: part/templates/part/import_wizard/part_upload.html:58 part/views.py:108 +#: templates/patterns/wizard/upload.html:37 +msgid "Upload File" +msgstr "" + +#: common/views.py:86 order/templates/order/order_wizard/match_fields.html:52 +#: order/views.py:119 +#: part/templates/part/import_wizard/ajax_match_fields.html:45 +#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:109 +#: templates/patterns/wizard/match_fields.html:51 +msgid "Match Fields" +msgstr "" + +#: common/views.py:87 +msgid "Match Items" +msgstr "" + +#: common/views.py:420 +msgid "Fields matching failed" +msgstr "" + +#: common/views.py:481 +msgid "Parts imported" +msgstr "" + +#: common/views.py:508 order/templates/order/order_wizard/match_fields.html:27 +#: order/templates/order/order_wizard/match_parts.html:19 +#: order/templates/order/order_wizard/po_upload.html:49 +#: part/templates/part/import_wizard/match_fields.html:27 +#: part/templates/part/import_wizard/match_references.html:19 +#: part/templates/part/import_wizard/part_upload.html:56 +#: templates/patterns/wizard/match_fields.html:26 +#: templates/patterns/wizard/upload.html:35 +msgid "Previous Step" +msgstr "" + +#: company/models.py:106 +msgid "Company description" +msgstr "" + +#: company/models.py:107 +msgid "Description of the company" +msgstr "" + +#: company/models.py:113 company/templates/company/company_base.html:100 +#: templates/InvenTree/settings/plugin_settings.html:54 +#: templates/js/translated/company.js:522 +msgid "Website" +msgstr "" + +#: company/models.py:114 +msgid "Company website URL" +msgstr "" + +#: company/models.py:118 +msgid "Phone number" +msgstr "" + +#: company/models.py:119 +msgid "Contact phone number" +msgstr "" + +#: company/models.py:122 +msgid "Contact email address" +msgstr "" + +#: company/models.py:125 company/templates/company/company_base.html:139 +#: order/models.py:264 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 +msgid "Contact" +msgstr "" + +#: company/models.py:126 +msgid "Point of contact" +msgstr "" + +#: company/models.py:128 +msgid "Link to external company information" +msgstr "" + +#: company/models.py:142 +msgid "is customer" +msgstr "" + +#: company/models.py:142 +msgid "Do you sell items to this company?" +msgstr "" + +#: company/models.py:144 +msgid "is supplier" +msgstr "" + +#: company/models.py:144 +msgid "Do you purchase items from this company?" +msgstr "" + +#: company/models.py:146 +msgid "is manufacturer" +msgstr "" + +#: company/models.py:146 +msgid "Does this company manufacture parts?" +msgstr "" + +#: company/models.py:153 +msgid "Default currency used for this company" +msgstr "" + +#: company/models.py:232 company/models.py:333 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 +msgid "Company" +msgstr "" + +#: company/models.py:334 +msgid "Select company" +msgstr "" + +#: company/models.py:337 +msgid "Address title" +msgstr "" + +#: company/models.py:338 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:342 +msgid "Primary address" +msgstr "" + +#: company/models.py:343 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:346 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:347 +msgid "Address line 1" +msgstr "" + +#: company/models.py:351 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:352 +msgid "Address line 2" +msgstr "" + +#: company/models.py:356 company/models.py:357 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:361 +msgid "City/Region" +msgstr "" + +#: company/models.py:362 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:366 +msgid "State/Province" +msgstr "" + +#: company/models.py:367 +msgid "State or province" +msgstr "" + +#: company/models.py:371 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:372 +msgid "Address country" +msgstr "" + +#: company/models.py:376 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:377 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:381 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:382 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:387 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:412 company/models.py:688 stock/models.py:709 +#: stock/serializers.py:205 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 +msgid "Base Part" +msgstr "" + +#: company/models.py:416 company/models.py:692 +msgid "Select part" +msgstr "" + +#: company/models.py:427 company/templates/company/company_base.html:76 +#: company/templates/company/manufacturer_part.html:90 +#: company/templates/company/supplier_part.html:145 part/serializers.py:441 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:792 +msgid "Manufacturer" +msgstr "" + +#: company/models.py:428 +msgid "Select manufacturer" +msgstr "" + +#: company/models.py:434 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:447 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1797 +#: templates/js/translated/purchase_order.js:1842 +#: templates/js/translated/purchase_order.js:2044 +msgid "MPN" +msgstr "" + +#: company/models.py:435 +msgid "Manufacturer Part Number" +msgstr "" + +#: company/models.py:441 +msgid "URL for external manufacturer part link" +msgstr "" + +#: company/models.py:447 +msgid "Manufacturer part description" +msgstr "" + +#: company/models.py:494 company/models.py:518 company/models.py:713 +#: 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:525 +msgid "Parameter name" +msgstr "" + +#: company/models.py:531 +#: report/templates/report/inventree_test_report_base.html:104 +#: stock/models.py:2312 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1489 +#: templates/js/translated/stock.js:1502 +msgid "Value" +msgstr "" + +#: company/models.py:532 +msgid "Parameter value" +msgstr "" + +#: company/models.py:538 company/templates/company/supplier_part.html:168 +#: part/admin.py:40 part/models.py:955 part/models.py:3406 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1508 +#: templates/js/translated/part.js:1612 templates/js/translated/part.js:2365 +msgid "Units" +msgstr "" + +#: company/models.py:539 +msgid "Parameter units" +msgstr "" + +#: company/models.py:633 +msgid "Pack units must be compatible with the base part units" +msgstr "" + +#: company/models.py:639 +msgid "Pack units must be greater than zero" +msgstr "" + +#: company/models.py:655 +msgid "Linked manufacturer part must reference the same base part" +msgstr "" + +#: company/models.py:699 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:386 +#: order/templates/order/order_base.html:136 part/bom.py:284 part/bom.py:312 +#: part/serializers.py:430 plugin/builtin/suppliers/digikey.py:29 +#: plugin/builtin/suppliers/lcsc.py:30 plugin/builtin/suppliers/mouser.py:29 +#: plugin/builtin/suppliers/tme.py:30 stock/templates/stock/item_base.html:224 +#: templates/email/overdue_purchase_order.html:16 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1765 +#: templates/js/translated/pricing.js:498 +#: templates/js/translated/purchase_order.js:1680 +#: templates/js/translated/table_filters.js:796 +msgid "Supplier" +msgstr "" + +#: company/models.py:700 +msgid "Select supplier" +msgstr "" + +#: company/models.py:705 company/templates/company/supplier_part.html:139 +#: part/bom.py:285 part/bom.py:313 part/serializers.py:436 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1783 +#: templates/js/translated/pricing.js:510 +#: templates/js/translated/purchase_order.js:1841 +#: templates/js/translated/purchase_order.js:2019 +msgid "SKU" +msgstr "" + +#: company/models.py:706 part/serializers.py:436 +msgid "Supplier stock keeping unit" +msgstr "" + +#: company/models.py:714 +msgid "Select manufacturer part" +msgstr "" + +#: company/models.py:720 +msgid "URL for external supplier part link" +msgstr "" + +#: company/models.py:726 +msgid "Supplier part description" +msgstr "" + +#: company/models.py:731 company/templates/company/supplier_part.html:187 +#: part/admin.py:275 part/models.py:3808 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_bill_of_materials_report.html:140 +#: report/templates/report/inventree_po_report_base.html:32 +#: report/templates/report/inventree_return_order_report_base.html:27 +#: report/templates/report/inventree_slr_report.html:105 +#: report/templates/report/inventree_so_report_base.html:32 +#: stock/serializers.py:501 +msgid "Note" +msgstr "" + +#: company/models.py:735 part/models.py:1889 +msgid "base cost" +msgstr "" + +#: company/models.py:735 part/models.py:1889 +msgid "Minimum charge (e.g. stocking fee)" +msgstr "" + +#: company/models.py:737 company/templates/company/supplier_part.html:160 +#: stock/admin.py:137 stock/models.py:735 stock/serializers.py:1297 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2394 +msgid "Packaging" +msgstr "" + +#: company/models.py:737 +msgid "Part packaging" +msgstr "" + +#: company/models.py:741 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:311 +#: templates/js/translated/purchase_order.js:842 +#: templates/js/translated/purchase_order.js:1096 +#: templates/js/translated/purchase_order.js:2075 +#: templates/js/translated/purchase_order.js:2092 +msgid "Pack Quantity" +msgstr "" + +#: company/models.py:742 +msgid "Total quantity supplied in a single pack. Leave empty for single items." +msgstr "" + +#: company/models.py:758 part/models.py:1891 +msgid "multiple" +msgstr "" + +#: company/models.py:758 +msgid "Order multiple" +msgstr "" + +#: company/models.py:767 +msgid "Quantity available from supplier" +msgstr "" + +#: company/models.py:771 +msgid "Availability Updated" +msgstr "" + +#: company/models.py:772 +msgid "Date of last update of availability data" +msgstr "" + +#: company/serializers.py:153 +msgid "Default currency used for this supplier" +msgstr "" + +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:239 +msgid "Create Purchase Order" +msgstr "" + +#: company/templates/company/company_base.html:27 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:32 +msgid "Edit company information" +msgstr "" + +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:37 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 +msgid "Delete Company" +msgstr "" + +#: company/templates/company/company_base.html:47 +#: company/templates/company/manufacturer_part.html:51 +#: company/templates/company/supplier_part.html:83 +#: part/templates/part/part_thumb.html:20 +#: report/templates/report/inventree_build_order_base.html:98 +#: report/templates/report/inventree_po_report_base.html:40 +#: report/templates/report/inventree_so_report_base.html:40 +#: report/templates/report/inventree_test_report_base.html:84 +#: report/templates/report/inventree_test_report_base.html:163 +msgid "Part image" +msgstr "" + +#: company/templates/company/company_base.html:55 +#: part/templates/part/part_thumb.html:12 +msgid "Upload new image" +msgstr "" + +#: company/templates/company/company_base.html:58 +#: part/templates/part/part_thumb.html:14 +msgid "Download image from URL" +msgstr "" + +#: company/templates/company/company_base.html:60 +#: part/templates/part/part_thumb.html:16 +msgid "Delete image" +msgstr "" + +#: company/templates/company/company_base.html:86 order/models.py:782 +#: order/models.py:1736 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:754 +#: stock/models.py:755 stock/serializers.py:1044 +#: stock/templates/stock/item_base.html:405 +#: templates/email/overdue_sales_order.html:16 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:293 +#: templates/js/translated/sales_order.js:781 +#: templates/js/translated/stock.js:2930 +#: templates/js/translated/table_filters.js:800 +msgid "Customer" +msgstr "" + +#: company/templates/company/company_base.html:111 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:118 order/models.py:273 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 +msgid "Remove Image" +msgstr "" + +#: company/templates/company/company_base.html:206 +msgid "Remove associated image from this company" +msgstr "" + +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 +#: templates/InvenTree/settings/user.html:88 +#: templates/InvenTree/settings/user_sso.html:43 +msgid "Remove" +msgstr "" + +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 +msgid "Upload Image" +msgstr "" + +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 +msgid "Download Image" +msgstr "" + +#: company/templates/company/detail.html:15 +#: company/templates/company/manufacturer_part_sidebar.html:7 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 +msgid "Supplier Parts" +msgstr "" + +#: company/templates/company/detail.html:19 +msgid "Create new supplier part" +msgstr "" + +#: company/templates/company/detail.html:20 +#: company/templates/company/manufacturer_part.html:123 +#: part/templates/part/detail.html:356 +msgid "New Supplier Part" +msgstr "" + +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 +msgid "Manufacturer Parts" +msgstr "" + +#: company/templates/company/detail.html:45 +msgid "Create new manufacturer part" +msgstr "" + +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 +msgid "New Manufacturer Part" +msgstr "" + +#: company/templates/company/detail.html:65 +msgid "Supplier Stock" +msgstr "" + +#: company/templates/company/detail.html:75 +#: company/templates/company/sidebar.html:12 +#: company/templates/company/supplier_part_sidebar.html:7 +#: order/templates/order/order_base.html:13 +#: order/templates/order/purchase_orders.html:8 +#: order/templates/order/purchase_orders.html:12 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:180 +msgid "Purchase Orders" +msgstr "" + +#: company/templates/company/detail.html:79 +#: order/templates/order/purchase_orders.html:17 +msgid "Create new purchase order" +msgstr "" + +#: company/templates/company/detail.html:80 +#: order/templates/order/purchase_orders.html:18 +msgid "New Purchase Order" +msgstr "" + +#: company/templates/company/detail.html:101 +#: company/templates/company/sidebar.html:21 +#: order/templates/order/sales_order_base.html:13 +#: order/templates/order/sales_orders.html:8 +#: order/templates/order/sales_orders.html:15 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:181 +msgid "Sales Orders" +msgstr "" + +#: company/templates/company/detail.html:105 +#: order/templates/order/sales_orders.html:20 +msgid "Create new sales order" +msgstr "" + +#: company/templates/company/detail.html:106 +#: order/templates/order/sales_orders.html:21 +msgid "New Sales Order" +msgstr "" + +#: company/templates/company/detail.html:126 +msgid "Assigned Stock" +msgstr "" + +#: company/templates/company/detail.html:142 +#: company/templates/company/sidebar.html:29 +#: order/templates/order/return_order_base.html:13 +#: order/templates/order/return_orders.html:8 +#: order/templates/order/return_orders.html:15 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:182 +msgid "Return Orders" +msgstr "" + +#: company/templates/company/detail.html:146 +#: order/templates/order/return_orders.html:20 +msgid "Create new return order" +msgstr "" + +#: company/templates/company/detail.html:147 +#: order/templates/order/return_orders.html:21 +msgid "New Return Order" +msgstr "" + +#: company/templates/company/detail.html:168 +msgid "Company Notes" +msgstr "" + +#: company/templates/company/detail.html:183 +msgid "Company Contacts" +msgstr "" + +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 +msgid "Add Contact" +msgstr "" + +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "" + +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 +#: templates/InvenTree/search.html:180 templates/navbar.html:49 +msgid "Manufacturers" +msgstr "" + +#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 +msgid "Order part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:39 +#: templates/js/translated/company.js:1333 +msgid "Edit manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:43 +#: templates/js/translated/company.js:1334 +msgid "Delete manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:65 +#: company/templates/company/supplier_part.html:97 +msgid "Internal Part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:95 +msgid "No manufacturer information available" +msgstr "" + +#: company/templates/company/manufacturer_part.html:119 +#: company/templates/company/supplier_part.html:15 company/views.py:31 +#: part/admin.py:60 part/templates/part/part_sidebar.html:33 +#: templates/InvenTree/search.html:190 templates/navbar.html:48 +msgid "Suppliers" +msgstr "" + +#: company/templates/company/manufacturer_part.html:156 +#: company/templates/company/manufacturer_part_sidebar.html:5 +#: part/templates/part/category_sidebar.html:20 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 +#: templates/InvenTree/settings/category.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1419 +msgid "Add Parameter" +msgstr "" + +#: company/templates/company/sidebar.html:6 +msgid "Manufactured Parts" +msgstr "" + +#: company/templates/company/sidebar.html:10 +msgid "Supplied Parts" +msgstr "" + +#: company/templates/company/sidebar.html:16 +msgid "Supplied Stock Items" +msgstr "" + +#: company/templates/company/sidebar.html:25 +msgid "Assigned Stock Items" +msgstr "" + +#: company/templates/company/sidebar.html:33 +msgid "Contacts" +msgstr "" + +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + +#: company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 stock/models.py:718 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:758 +#: templates/js/translated/stock.js:2250 +msgid "Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 +msgid "Supplier part actions" +msgstr "" + +#: company/templates/company/supplier_part.html:55 +#: company/templates/company/supplier_part.html:56 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 +msgid "Order Part" +msgstr "" + +#: company/templates/company/supplier_part.html:60 +#: company/templates/company/supplier_part.html:61 +msgid "Update Availability" +msgstr "" + +#: company/templates/company/supplier_part.html:63 +#: company/templates/company/supplier_part.html:64 +#: templates/js/translated/company.js:294 +msgid "Edit Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:68 +#: company/templates/company/supplier_part.html:69 +#: templates/js/translated/company.js:269 +msgid "Duplicate Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:73 +msgid "Delete Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:74 +msgid "Delete Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:133 +msgid "No supplier information available" +msgstr "" + +#: company/templates/company/supplier_part.html:206 +msgid "Supplier Part Stock" +msgstr "" + +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 +msgid "Create new stock item" +msgstr "" + +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 +msgid "New Stock Item" +msgstr "" + +#: company/templates/company/supplier_part.html:223 +msgid "Supplier Part Orders" +msgstr "" + +#: company/templates/company/supplier_part.html:246 +msgid "Pricing Information" +msgstr "" + +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 +#: templates/js/translated/pricing.js:684 +msgid "Add Price Break" +msgstr "" + +#: company/templates/company/supplier_part.html:276 +msgid "Supplier Part QR Code" +msgstr "" + +#: company/templates/company/supplier_part.html:287 +msgid "Link Barcode to Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:359 +msgid "Update Part Availability" +msgstr "" + +#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:222 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:48 +#: stock/serializers.py:712 stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 +#: stock/templates/stock/location_sidebar.html:7 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1057 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2737 +#: users/models.py:178 +msgid "Stock Items" +msgstr "" + +#: company/templates/company/supplier_part_sidebar.html:9 +msgid "Supplier Part Pricing" +msgstr "" + +#: company/views.py:32 +msgid "New Supplier" +msgstr "" + +#: company/views.py:38 +msgid "New Manufacturer" +msgstr "" + +#: company/views.py:43 templates/InvenTree/search.html:210 +#: templates/navbar.html:60 +msgid "Customers" +msgstr "" + +#: company/views.py:44 +msgid "New Customer" +msgstr "" + +#: company/views.py:51 templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/views.py:52 +msgid "New Company" +msgstr "" + +#: label/models.py:117 +msgid "Label name" +msgstr "" + +#: label/models.py:124 +msgid "Label description" +msgstr "" + +#: label/models.py:131 +msgid "Label" +msgstr "" + +#: label/models.py:132 +msgid "Label template file" +msgstr "" + +#: label/models.py:138 report/models.py:311 +msgid "Enabled" +msgstr "" + +#: label/models.py:139 +msgid "Label template is enabled" +msgstr "" + +#: label/models.py:144 +msgid "Width [mm]" +msgstr "" + +#: label/models.py:145 +msgid "Label width, specified in mm" +msgstr "" + +#: label/models.py:151 +msgid "Height [mm]" +msgstr "" + +#: label/models.py:152 +msgid "Label height, specified in mm" +msgstr "" + +#: label/models.py:158 report/models.py:304 +msgid "Filename Pattern" +msgstr "" + +#: label/models.py:159 +msgid "Pattern for generating label filenames" +msgstr "" + +#: label/models.py:326 label/models.py:367 label/models.py:395 +#: label/models.py:431 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: label/models.py:327 label/models.py:368 label/models.py:396 +#: label/models.py:432 report/models.py:332 report/models.py:478 +#: report/models.py:516 report/models.py:554 report/models.py:675 +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 "" + +#: order/admin.py:29 order/models.py:72 +#: report/templates/report/inventree_po_report_base.html:31 +#: report/templates/report/inventree_so_report_base.html:31 +#: templates/js/translated/order.js:327 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1844 +msgid "Total Price" +msgstr "" + +#: order/api.py:231 +msgid "No matching purchase order found" +msgstr "" + +#: order/api.py:1408 order/models.py:1177 order/models.py:1260 +#: order/templates/order/order_base.html:9 +#: order/templates/order/order_base.html:18 +#: report/templates/report/inventree_po_report_base.html:14 +#: stock/templates/stock/item_base.html:176 +#: templates/email/overdue_purchase_order.html:15 +#: templates/js/translated/part.js:1742 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:165 +#: templates/js/translated/purchase_order.js:759 +#: templates/js/translated/purchase_order.js:1664 +#: templates/js/translated/stock.js:2230 templates/js/translated/stock.js:2878 +msgid "Purchase Order" +msgstr "" + +#: order/api.py:1412 order/models.py:1903 order/models.py:1949 +#: 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:278 +#: templates/js/translated/stock.js:2912 +msgid "Return Order" +msgstr "" + +#: order/api.py:1414 templates/js/translated/sales_order.js:1039 +msgid "Unknown" +msgstr "" + +#: order/models.py:73 +msgid "Total price for this order" +msgstr "" + +#: order/models.py:78 order/serializers.py:50 +msgid "Order Currency" +msgstr "" + +#: order/models.py:80 order/serializers.py:51 +msgid "Currency for this order (leave blank to use company default)" +msgstr "" + +#: order/models.py:206 +msgid "Contact does not match selected company" +msgstr "" + +#: order/models.py:226 +msgid "Order description (optional)" +msgstr "" + +#: order/models.py:231 +msgid "Select project code for this order" +msgstr "" + +#: order/models.py:234 order/models.py:1093 order/models.py:1451 +msgid "Link to external page" +msgstr "" + +#: order/models.py:239 +msgid "Expected date for order delivery. Order will be overdue after this date." +msgstr "" + +#: order/models.py:248 +msgid "Created By" +msgstr "" + +#: order/models.py:255 +msgid "User or group responsible for this order" +msgstr "" + +#: order/models.py:265 +msgid "Point of contact for this order" +msgstr "" + +#: order/models.py:274 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:364 order/models.py:769 +msgid "Order reference" +msgstr "" + +#: order/models.py:372 order/models.py:794 +msgid "Purchase order status" +msgstr "" + +#: order/models.py:387 +msgid "Company from which the items are being ordered" +msgstr "" + +#: order/models.py:395 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1693 +msgid "Supplier Reference" +msgstr "" + +#: order/models.py:395 +msgid "Supplier order reference code" +msgstr "" + +#: order/models.py:402 +msgid "received by" +msgstr "" + +#: order/models.py:407 order/models.py:1759 +msgid "Issue Date" +msgstr "" + +#: order/models.py:408 order/models.py:1760 +msgid "Date order was issued" +msgstr "" + +#: order/models.py:414 order/models.py:1766 +msgid "Date order was completed" +msgstr "" + +#: order/models.py:449 +msgid "Part supplier must match PO supplier" +msgstr "" + +#: order/models.py:610 +msgid "Quantity must be a positive number" +msgstr "" + +#: order/models.py:783 +msgid "Company to which the items are being sold" +msgstr "" + +#: order/models.py:802 order/models.py:1753 +msgid "Customer Reference " +msgstr "" + +#: order/models.py:802 order/models.py:1754 +msgid "Customer order reference code" +msgstr "" + +#: order/models.py:804 order/models.py:1405 +#: templates/js/translated/sales_order.js:840 +#: templates/js/translated/sales_order.js:1021 +msgid "Shipment Date" +msgstr "" + +#: order/models.py:811 +msgid "shipped by" +msgstr "" + +#: order/models.py:860 +msgid "Order cannot be completed as no parts have been assigned" +msgstr "" + +#: order/models.py:864 +msgid "Only an open order can be marked as complete" +msgstr "" + +#: order/models.py:867 templates/js/translated/sales_order.js:503 +msgid "Order cannot be completed as there are incomplete shipments" +msgstr "" + +#: order/models.py:870 +msgid "Order cannot be completed as there are incomplete line items" +msgstr "" + +#: order/models.py:1074 +msgid "Item quantity" +msgstr "" + +#: order/models.py:1086 +msgid "Line item reference" +msgstr "" + +#: order/models.py:1088 +msgid "Line item notes" +msgstr "" + +#: order/models.py:1099 +msgid "Target date for this line item (leave blank to use the target date from the order)" +msgstr "" + +#: order/models.py:1117 +msgid "Line item description (optional)" +msgstr "" + +#: order/models.py:1122 +msgid "Context" +msgstr "" + +#: order/models.py:1123 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:1132 +msgid "Unit price" +msgstr "" + +#: order/models.py:1162 +msgid "Supplier part must match supplier" +msgstr "" + +#: order/models.py:1170 +msgid "deleted" +msgstr "" + +#: order/models.py:1176 order/models.py:1260 order/models.py:1300 +#: order/models.py:1399 order/models.py:1548 order/models.py:1902 +#: order/models.py:1949 templates/js/translated/sales_order.js:1485 +msgid "Order" +msgstr "" + +#: order/models.py:1194 +msgid "Supplier part" +msgstr "" + +#: order/models.py:1201 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1865 templates/js/translated/part.js:1896 +#: templates/js/translated/purchase_order.js:1299 +#: templates/js/translated/purchase_order.js:2160 +#: templates/js/translated/return_order.js:761 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:598 +msgid "Received" +msgstr "" + +#: order/models.py:1202 +msgid "Number of items received" +msgstr "" + +#: order/models.py:1209 stock/models.py:857 stock/serializers.py:319 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2281 +msgid "Purchase Price" +msgstr "" + +#: order/models.py:1210 +msgid "Unit purchase price" +msgstr "" + +#: order/models.py:1223 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:1288 +msgid "Virtual part cannot be assigned to a sales order" +msgstr "" + +#: order/models.py:1293 +msgid "Only salable parts can be assigned to a sales order" +msgstr "" + +#: order/models.py:1319 part/templates/part/part_pricing.html:107 +#: part/templates/part/prices.html:128 templates/js/translated/pricing.js:957 +msgid "Sale Price" +msgstr "" + +#: order/models.py:1320 +msgid "Unit sale price" +msgstr "" + +#: order/models.py:1330 +msgid "Shipped quantity" +msgstr "" + +#: order/models.py:1406 +msgid "Date of shipment" +msgstr "" + +#: order/models.py:1411 templates/js/translated/sales_order.js:1033 +msgid "Delivery Date" +msgstr "" + +#: order/models.py:1412 +msgid "Date of delivery of shipment" +msgstr "" + +#: order/models.py:1419 +msgid "Checked By" +msgstr "" + +#: order/models.py:1420 +msgid "User who checked this shipment" +msgstr "" + +#: order/models.py:1427 order/models.py:1626 order/serializers.py:1282 +#: order/serializers.py:1410 templates/js/translated/model_renderers.js:446 +msgid "Shipment" +msgstr "" + +#: order/models.py:1428 +msgid "Shipment number" +msgstr "" + +#: order/models.py:1436 +msgid "Tracking Number" +msgstr "" + +#: order/models.py:1437 +msgid "Shipment tracking information" +msgstr "" + +#: order/models.py:1444 +msgid "Invoice Number" +msgstr "" + +#: order/models.py:1445 +msgid "Reference number for associated invoice" +msgstr "" + +#: order/models.py:1467 +msgid "Shipment has already been sent" +msgstr "" + +#: order/models.py:1470 +msgid "Shipment has no allocated stock items" +msgstr "" + +#: order/models.py:1583 order/models.py:1585 +msgid "Stock item has not been assigned" +msgstr "" + +#: order/models.py:1591 +msgid "Cannot allocate stock item to a line with a different part" +msgstr "" + +#: order/models.py:1593 +msgid "Cannot allocate stock to a line without a part" +msgstr "" + +#: order/models.py:1596 +msgid "Allocation quantity cannot exceed stock quantity" +msgstr "" + +#: order/models.py:1606 order/serializers.py:1146 +msgid "Quantity must be 1 for serialized stock item" +msgstr "" + +#: order/models.py:1609 +msgid "Sales order does not match shipment" +msgstr "" + +#: order/models.py:1610 +msgid "Shipment does not match sales order" +msgstr "" + +#: order/models.py:1618 +msgid "Line" +msgstr "" + +#: order/models.py:1627 +msgid "Sales order shipment reference" +msgstr "" + +#: order/models.py:1640 order/models.py:1910 +#: templates/js/translated/return_order.js:719 +msgid "Item" +msgstr "" + +#: order/models.py:1641 +msgid "Select stock item to allocate" +msgstr "" + +#: order/models.py:1644 +msgid "Enter stock allocation quantity" +msgstr "" + +#: order/models.py:1723 +msgid "Return Order reference" +msgstr "" + +#: order/models.py:1737 +msgid "Company from which items are being returned" +msgstr "" + +#: order/models.py:1748 +msgid "Return order status" +msgstr "" + +#: order/models.py:1895 +msgid "Only serialized items can be assigned to a Return Order" +msgstr "" + +#: order/models.py:1911 +msgid "Select item to return from customer" +msgstr "" + +#: order/models.py:1916 +msgid "Received Date" +msgstr "" + +#: order/models.py:1917 +msgid "The date this this return item was received" +msgstr "" + +#: order/models.py:1928 templates/js/translated/return_order.js:730 +#: templates/js/translated/table_filters.js:123 +msgid "Outcome" +msgstr "" + +#: order/models.py:1928 +msgid "Outcome for this line item" +msgstr "" + +#: order/models.py:1934 +msgid "Cost associated with return or repair for this line item" +msgstr "" + +#: order/serializers.py:258 +msgid "Order cannot be cancelled" +msgstr "" + +#: order/serializers.py:273 order/serializers.py:1164 +msgid "Allow order to be closed with incomplete line items" +msgstr "" + +#: order/serializers.py:283 order/serializers.py:1174 +msgid "Order has incomplete line items" +msgstr "" + +#: order/serializers.py:396 +msgid "Order is not open" +msgstr "" + +#: order/serializers.py:414 +msgid "Purchase price currency" +msgstr "" + +#: order/serializers.py:432 +msgid "Supplier part must be specified" +msgstr "" + +#: order/serializers.py:437 +msgid "Purchase order must be specified" +msgstr "" + +#: order/serializers.py:443 +msgid "Supplier must match purchase order" +msgstr "" + +#: order/serializers.py:444 +msgid "Purchase order must match supplier" +msgstr "" + +#: order/serializers.py:482 order/serializers.py:1250 +msgid "Line Item" +msgstr "" + +#: order/serializers.py:488 +msgid "Line item does not match purchase order" +msgstr "" + +#: order/serializers.py:498 order/serializers.py:617 order/serializers.py:1624 +msgid "Select destination location for received items" +msgstr "" + +#: order/serializers.py:517 templates/js/translated/purchase_order.js:1123 +msgid "Enter batch code for incoming stock items" +msgstr "" + +#: order/serializers.py:525 templates/js/translated/purchase_order.js:1147 +msgid "Enter serial numbers for incoming stock items" +msgstr "" + +#: order/serializers.py:538 templates/js/translated/barcode.js:52 +msgid "Barcode" +msgstr "" + +#: order/serializers.py:539 +msgid "Scanned barcode" +msgstr "" + +#: order/serializers.py:555 +msgid "Barcode is already in use" +msgstr "" + +#: order/serializers.py:579 +msgid "An integer quantity must be provided for trackable parts" +msgstr "" + +#: order/serializers.py:633 order/serializers.py:1638 +msgid "Line items must be provided" +msgstr "" + +#: order/serializers.py:650 +msgid "Destination location must be specified" +msgstr "" + +#: order/serializers.py:661 +msgid "Supplied barcode values must be unique" +msgstr "" + +#: order/serializers.py:986 +msgid "Sale price currency" +msgstr "" + +#: order/serializers.py:1043 +msgid "No shipment details provided" +msgstr "" + +#: order/serializers.py:1107 order/serializers.py:1259 +msgid "Line item is not associated with this order" +msgstr "" + +#: order/serializers.py:1129 +msgid "Quantity must be positive" +msgstr "" + +#: order/serializers.py:1272 +msgid "Enter serial numbers to allocate" +msgstr "" + +#: order/serializers.py:1294 order/serializers.py:1418 +msgid "Shipment has already been shipped" +msgstr "" + +#: order/serializers.py:1297 order/serializers.py:1421 +msgid "Shipment is not associated with this order" +msgstr "" + +#: order/serializers.py:1351 +msgid "No match found for the following serial numbers" +msgstr "" + +#: order/serializers.py:1361 +msgid "The following serial numbers are already allocated" +msgstr "" + +#: order/serializers.py:1591 +msgid "Return order line item" +msgstr "" + +#: order/serializers.py:1597 +msgid "Line item does not match return order" +msgstr "" + +#: order/serializers.py:1600 +msgid "Line item has already been received" +msgstr "" + +#: order/serializers.py:1631 +msgid "Items can only be received against orders which are in progress" +msgstr "" + +#: order/serializers.py:1710 +msgid "Line price currency" +msgstr "" + +#: order/tasks.py:26 +msgid "Overdue Purchase Order" +msgstr "" + +#: order/tasks.py:31 +#, python-brace-format +msgid "Purchase order {po} is now overdue" +msgstr "" + +#: order/tasks.py:87 +msgid "Overdue Sales Order" +msgstr "" + +#: order/tasks.py:92 +#, python-brace-format +msgid "Sales order {so} is now overdue" +msgstr "" + +#: order/templates/order/order_base.html:51 +msgid "Print purchase order report" +msgstr "" + +#: order/templates/order/order_base.html:53 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 +msgid "Export order to file" +msgstr "" + +#: order/templates/order/order_base.html:59 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 +msgid "Order actions" +msgstr "" + +#: order/templates/order/order_base.html:64 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 +msgid "Edit order" +msgstr "" + +#: order/templates/order/order_base.html:68 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 +msgid "Cancel order" +msgstr "" + +#: order/templates/order/order_base.html:73 +msgid "Duplicate order" +msgstr "" + +#: order/templates/order/order_base.html:79 +#: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 +#: order/templates/order/return_order_base.html:83 +#: order/templates/order/sales_order_base.html:83 +#: order/templates/order/sales_order_base.html:84 +msgid "Issue Order" +msgstr "" + +#: order/templates/order/order_base.html:83 +#: order/templates/order/return_order_base.html:86 +msgid "Mark order as complete" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:91 +msgid "Supplier part thumbnail" +msgstr "" + +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 +msgid "Order Reference" +msgstr "" + +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 +msgid "Order Status" +msgstr "" + +#: order/templates/order/order_base.html:141 +msgid "No suppplier information available" +msgstr "" + +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 +msgid "Completed Line Items" +msgstr "" + +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 +msgid "Incomplete" +msgstr "" + +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 +#: report/templates/report/inventree_build_order_base.html:121 +msgid "Issued" +msgstr "" + +#: order/templates/order/order_base.html:224 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 +msgid "Total cost could not be calculated" +msgstr "" + +#: order/templates/order/order_base.html:318 +msgid "Purchase Order QR Code" +msgstr "" + +#: order/templates/order/order_base.html:330 +msgid "Link Barcode to Purchase Order" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:9 +#: part/templates/part/import_wizard/ajax_match_fields.html:9 +#: part/templates/part/import_wizard/match_fields.html:9 +#: templates/patterns/wizard/match_fields.html:8 +msgid "Missing selections for the following required columns" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:20 +#: part/templates/part/import_wizard/ajax_match_fields.html:20 +#: part/templates/part/import_wizard/match_fields.html:20 +#: templates/patterns/wizard/match_fields.html:19 +msgid "Duplicate selections found, see below. Fix them then retry submitting." +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:29 +#: order/templates/order/order_wizard/match_parts.html:21 +#: part/templates/part/import_wizard/match_fields.html:29 +#: part/templates/part/import_wizard/match_references.html:21 +#: templates/patterns/wizard/match_fields.html:28 +msgid "Submit Selections" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:35 +#: part/templates/part/import_wizard/ajax_match_fields.html:28 +#: part/templates/part/import_wizard/match_fields.html:35 +#: templates/patterns/wizard/match_fields.html:34 +msgid "File Fields" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:42 +#: part/templates/part/import_wizard/ajax_match_fields.html:35 +#: part/templates/part/import_wizard/match_fields.html:42 +#: templates/patterns/wizard/match_fields.html:41 +msgid "Remove column" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:60 +#: part/templates/part/import_wizard/ajax_match_fields.html:53 +#: part/templates/part/import_wizard/match_fields.html:60 +#: templates/patterns/wizard/match_fields.html:59 +msgid "Duplicate selection" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:71 +#: order/templates/order/order_wizard/match_parts.html:52 +#: part/templates/part/import_wizard/ajax_match_fields.html:64 +#: part/templates/part/import_wizard/ajax_match_references.html:42 +#: part/templates/part/import_wizard/match_fields.html:71 +#: part/templates/part/import_wizard/match_references.html:49 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:521 +#: templates/js/translated/build.js:1613 +#: templates/js/translated/purchase_order.js:703 +#: templates/js/translated/purchase_order.js:1229 +#: templates/js/translated/return_order.js:503 +#: templates/js/translated/sales_order.js:1106 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 +#: templates/patterns/wizard/match_fields.html:70 +msgid "Remove row" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:12 +#: part/templates/part/import_wizard/ajax_match_references.html:12 +#: part/templates/part/import_wizard/match_references.html:12 +msgid "Errors exist in the submitted data" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:28 +#: part/templates/part/import_wizard/ajax_match_references.html:21 +#: part/templates/part/import_wizard/match_references.html:28 +msgid "Row" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:29 +msgid "Select Supplier Part" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:8 +msgid "Return to Orders" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:13 +msgid "Upload File for Purchase Order" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:14 +msgid "Order is already processed. Files cannot be uploaded." +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:27 +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: part/templates/part/import_wizard/part_upload.html:26 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + +#: order/templates/order/po_sidebar.html:5 +#: order/templates/order/return_order_detail.html:18 +#: order/templates/order/so_sidebar.html:5 +#: report/templates/report/inventree_po_report_base.html:22 +#: report/templates/report/inventree_return_order_report_base.html:19 +#: report/templates/report/inventree_so_report_base.html:22 +msgid "Line Items" +msgstr "" + +#: order/templates/order/po_sidebar.html:7 +msgid "Received Stock" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:18 +msgid "Purchase Order Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:27 +#: order/templates/order/return_order_detail.html:24 +#: order/templates/order/sales_order_detail.html:24 +#: templates/js/translated/purchase_order.js:430 +#: templates/js/translated/return_order.js:456 +#: templates/js/translated/sales_order.js:234 +msgid "Add Line Item" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:31 +#: order/templates/order/purchase_order_detail.html:32 +#: order/templates/order/return_order_detail.html:28 +#: order/templates/order/return_order_detail.html:29 +msgid "Receive Line Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:50 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:74 +msgid "Received Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 +msgid "Order Notes" +msgstr "" + +#: order/templates/order/return_order_base.html:18 +#: order/templates/order/sales_order_base.html:18 +msgid "Customer logo thumbnail" +msgstr "" + +#: order/templates/order/return_order_base.html:60 +msgid "Print return order report" +msgstr "" + +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 +msgid "Print packing list" +msgstr "" + +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:306 +#: templates/js/translated/sales_order.js:794 +msgid "Customer Reference" +msgstr "" + +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:99 +#: part/templates/part/part_pricing.html:114 +#: templates/js/translated/part.js:1069 +#: templates/js/translated/purchase_order.js:1743 +#: templates/js/translated/return_order.js:378 +#: templates/js/translated/sales_order.js:852 +msgid "Total Cost" +msgstr "" + +#: order/templates/order/return_order_base.html:263 +msgid "Return Order QR Code" +msgstr "" + +#: order/templates/order/return_order_base.html:275 +msgid "Link Barcode to Return Order" +msgstr "" + +#: order/templates/order/return_order_sidebar.html:5 +msgid "Order Details" +msgstr "" + +#: order/templates/order/sales_order_base.html:60 +msgid "Print sales order report" +msgstr "" + +#: order/templates/order/sales_order_base.html:88 +#: order/templates/order/sales_order_base.html:89 +msgid "Ship Items" +msgstr "" + +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:481 +msgid "Complete Sales Order" +msgstr "" + +#: order/templates/order/sales_order_base.html:131 +msgid "This Sales Order has not been fully allocated" +msgstr "" + +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 +#: order/templates/order/so_sidebar.html:11 +msgid "Completed Shipments" +msgstr "" + +#: order/templates/order/sales_order_base.html:312 +msgid "Sales Order QR Code" +msgstr "" + +#: order/templates/order/sales_order_base.html:324 +msgid "Link Barcode to Sales Order" +msgstr "" + +#: order/templates/order/sales_order_detail.html:18 +msgid "Sales Order Items" +msgstr "" + +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 +msgid "Pending Shipments" +msgstr "" + +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +msgid "Actions" +msgstr "" + +#: order/templates/order/sales_order_detail.html:80 +msgid "New Shipment" +msgstr "" + +#: order/views.py:120 +msgid "Match Supplier Parts" +msgstr "" + +#: order/views.py:389 +msgid "Sales order not found" +msgstr "" + +#: order/views.py:395 +msgid "Price not found" +msgstr "" + +#: order/views.py:398 +#, python-brace-format +msgid "Updated {part} unit-price to {price}" +msgstr "" + +#: order/views.py:403 +#, python-brace-format +msgid "Updated {part} unit-price to {price} and quantity to {qty}" +msgstr "" + +#: part/admin.py:33 part/admin.py:269 part/models.py:3671 part/stocktake.py:217 +#: stock/admin.py:119 +msgid "Part ID" +msgstr "" + +#: part/admin.py:34 part/admin.py:271 part/models.py:3675 part/stocktake.py:218 +#: stock/admin.py:120 +msgid "Part Name" +msgstr "" + +#: part/admin.py:35 part/stocktake.py:219 +msgid "Part Description" +msgstr "" + +#: part/admin.py:36 part/models.py:856 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1223 templates/js/translated/part.js:2336 +#: templates/js/translated/stock.js:2006 +msgid "IPN" +msgstr "" + +#: part/admin.py:37 part/models.py:863 part/templates/part/part_base.html:277 +#: report/models.py:189 templates/js/translated/part.js:1228 +#: templates/js/translated/part.js:2342 +msgid "Revision" +msgstr "" + +#: part/admin.py:38 part/admin.py:195 part/models.py:842 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 +msgid "Keywords" +msgstr "" + +#: part/admin.py:42 part/admin.py:189 part/stocktake.py:220 +msgid "Category ID" +msgstr "" + +#: part/admin.py:43 part/admin.py:190 part/stocktake.py:221 +msgid "Category Name" +msgstr "" + +#: part/admin.py:44 part/admin.py:194 +msgid "Default Location ID" +msgstr "" + +#: part/admin.py:45 +msgid "Default Supplier ID" +msgstr "" + +#: part/admin.py:46 part/models.py:831 part/templates/part/part_base.html:177 +msgid "Variant Of" +msgstr "" + +#: part/admin.py:47 part/models.py:948 part/templates/part/part_base.html:203 +msgid "Minimum Stock" +msgstr "" + +#: part/admin.py:61 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 +msgid "In Stock" +msgstr "" + +#: part/admin.py:62 part/bom.py:177 part/templates/part/part_base.html:210 +#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2600 +#: templates/js/translated/part.js:706 templates/js/translated/part.js:2143 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: part/admin.py:63 part/templates/part/part_sidebar.html:27 +msgid "Used In" +msgstr "" + +#: part/admin.py:65 part/templates/part/part_base.html:241 stock/admin.py:142 +#: templates/js/translated/part.js:711 templates/js/translated/part.js:2147 +msgid "Building" +msgstr "" + +#: part/admin.py:66 part/models.py:2934 templates/js/translated/part.js:966 +msgid "Minimum Cost" +msgstr "" + +#: part/admin.py:67 part/models.py:2940 templates/js/translated/part.js:976 +msgid "Maximum Cost" +msgstr "" + +#: part/admin.py:192 part/admin.py:266 stock/admin.py:43 stock/admin.py:134 +msgid "Parent ID" +msgstr "" + +#: part/admin.py:193 part/admin.py:268 stock/admin.py:44 +msgid "Parent Name" +msgstr "" + +#: part/admin.py:196 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 +msgid "Category Path" +msgstr "" + +#: part/admin.py:199 part/models.py:366 part/serializers.py:340 +#: 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:2799 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:175 +msgid "Parts" +msgstr "" + +#: part/admin.py:261 +msgid "BOM Level" +msgstr "" + +#: part/admin.py:263 +msgid "BOM Item ID" +msgstr "" + +#: part/admin.py:267 +msgid "Parent IPN" +msgstr "" + +#: part/admin.py:270 part/models.py:3679 +msgid "Part IPN" +msgstr "" + +#: part/admin.py:276 templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 +msgid "Minimum Price" +msgstr "" + +#: part/admin.py:277 templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 +msgid "Maximum Price" +msgstr "" + +#: part/api.py:505 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:525 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:543 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:629 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:774 +msgid "Valid" +msgstr "" + +#: part/api.py:775 +msgid "Validate entire Bill of Materials" +msgstr "" + +#: part/api.py:781 +msgid "This option must be selected" +msgstr "" + +#: part/bom.py:174 part/models.py:97 part/models.py:890 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 +msgid "Default Location" +msgstr "" + +#: part/bom.py:175 templates/email/low_stock_notification.html:16 +msgid "Total Stock" +msgstr "" + +#: part/bom.py:176 part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1890 +msgid "Available Stock" +msgstr "" + +#: part/forms.py:48 +msgid "Input quantity for price calculation" +msgstr "" + +#: part/models.py:79 part/models.py:3620 part/templates/part/category.html:16 +#: part/templates/part/part_app_base.html:10 +msgid "Part Category" +msgstr "" + +#: part/models.py:80 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:174 +msgid "Part Categories" +msgstr "" + +#: part/models.py:98 +msgid "Default location for parts in this category" +msgstr "" + +#: part/models.py:103 stock/models.py:154 templates/js/translated/stock.js:2743 +#: templates/js/translated/table_filters.js:239 +#: templates/js/translated/table_filters.js:283 +msgid "Structural" +msgstr "" + +#: part/models.py:105 +msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." +msgstr "" + +#: part/models.py:109 +msgid "Default keywords" +msgstr "" + +#: part/models.py:109 +msgid "Default keywords for parts in this category" +msgstr "" + +#: part/models.py:114 stock/models.py:85 stock/models.py:142 +#: templates/InvenTree/settings/settings_staff_js.html:436 +msgid "Icon" +msgstr "" + +#: part/models.py:115 stock/models.py:143 +msgid "Icon (optional)" +msgstr "" + +#: part/models.py:134 +msgid "You cannot make this part category structural because some parts are already assigned to it!" +msgstr "" + +#: part/models.py:451 +msgid "Invalid choice for parent part" +msgstr "" + +#: part/models.py:494 part/models.py:497 +#, python-brace-format +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" + +#: part/models.py:506 +#, python-brace-format +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" + +#: part/models.py:573 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:643 +msgid "Stock item with this serial number already exists" +msgstr "" + +#: part/models.py:770 +msgid "Duplicate IPN not allowed in part settings" +msgstr "" + +#: part/models.py:775 +msgid "Part with this Name, IPN and Revision already exists." +msgstr "" + +#: part/models.py:789 +msgid "Parts cannot be assigned to structural part categories!" +msgstr "" + +#: part/models.py:813 part/models.py:3676 +msgid "Part name" +msgstr "" + +#: part/models.py:819 +msgid "Is Template" +msgstr "" + +#: part/models.py:820 +msgid "Is this part a template part?" +msgstr "" + +#: part/models.py:830 +msgid "Is this part a variant of another part?" +msgstr "" + +#: part/models.py:837 +msgid "Part description (optional)" +msgstr "" + +#: part/models.py:843 +msgid "Part keywords to improve visibility in search results" +msgstr "" + +#: part/models.py:850 part/models.py:3199 part/models.py:3619 +#: part/serializers.py:353 part/serializers.py:967 +#: part/templates/part/part_base.html:260 +#: templates/InvenTree/settings/settings_staff_js.html:280 +#: templates/js/translated/notification.js:60 +#: templates/js/translated/part.js:2372 +msgid "Category" +msgstr "" + +#: part/models.py:851 +msgid "Part category" +msgstr "" + +#: part/models.py:857 +msgid "Internal Part Number" +msgstr "" + +#: part/models.py:862 +msgid "Part revision or version number" +msgstr "" + +#: part/models.py:888 +msgid "Where is this item normally stored?" +msgstr "" + +#: part/models.py:933 part/templates/part/part_base.html:376 +msgid "Default Supplier" +msgstr "" + +#: part/models.py:934 +msgid "Default supplier part" +msgstr "" + +#: part/models.py:941 +msgid "Default Expiry" +msgstr "" + +#: part/models.py:942 +msgid "Expiry time (in days) for stock items of this part" +msgstr "" + +#: part/models.py:949 +msgid "Minimum allowed stock level" +msgstr "" + +#: part/models.py:956 +msgid "Units of measure for this part" +msgstr "" + +#: part/models.py:965 +msgid "Can this part be built from other parts?" +msgstr "" + +#: part/models.py:971 +msgid "Can this part be used to build other parts?" +msgstr "" + +#: part/models.py:977 +msgid "Does this part have tracking for unique items?" +msgstr "" + +#: part/models.py:982 +msgid "Can this part be purchased from external suppliers?" +msgstr "" + +#: part/models.py:987 +msgid "Can this part be sold to customers?" +msgstr "" + +#: part/models.py:992 +msgid "Is this part active?" +msgstr "" + +#: part/models.py:997 +msgid "Is this a virtual part, such as a software product or license?" +msgstr "" + +#: part/models.py:999 +msgid "BOM checksum" +msgstr "" + +#: part/models.py:999 +msgid "Stored BOM checksum" +msgstr "" + +#: part/models.py:1002 +msgid "BOM checked by" +msgstr "" + +#: part/models.py:1004 +msgid "BOM checked date" +msgstr "" + +#: part/models.py:1008 +msgid "Creation User" +msgstr "" + +#: part/models.py:1014 +msgid "Owner responsible for this part" +msgstr "" + +#: part/models.py:1020 part/templates/part/part_base.html:339 +#: stock/templates/stock/item_base.html:451 +#: templates/js/translated/part.js:2466 +msgid "Last Stocktake" +msgstr "" + +#: part/models.py:1891 +msgid "Sell multiple" +msgstr "" + +#: part/models.py:2857 +msgid "Currency used to cache pricing calculations" +msgstr "" + +#: part/models.py:2874 +msgid "Minimum BOM Cost" +msgstr "" + +#: part/models.py:2875 +msgid "Minimum cost of component parts" +msgstr "" + +#: part/models.py:2880 +msgid "Maximum BOM Cost" +msgstr "" + +#: part/models.py:2881 +msgid "Maximum cost of component parts" +msgstr "" + +#: part/models.py:2886 +msgid "Minimum Purchase Cost" +msgstr "" + +#: part/models.py:2887 +msgid "Minimum historical purchase cost" +msgstr "" + +#: part/models.py:2892 +msgid "Maximum Purchase Cost" +msgstr "" + +#: part/models.py:2893 +msgid "Maximum historical purchase cost" +msgstr "" + +#: part/models.py:2898 +msgid "Minimum Internal Price" +msgstr "" + +#: part/models.py:2899 +msgid "Minimum cost based on internal price breaks" +msgstr "" + +#: part/models.py:2904 +msgid "Maximum Internal Price" +msgstr "" + +#: part/models.py:2905 +msgid "Maximum cost based on internal price breaks" +msgstr "" + +#: part/models.py:2910 +msgid "Minimum Supplier Price" +msgstr "" + +#: part/models.py:2911 +msgid "Minimum price of part from external suppliers" +msgstr "" + +#: part/models.py:2916 +msgid "Maximum Supplier Price" +msgstr "" + +#: part/models.py:2917 +msgid "Maximum price of part from external suppliers" +msgstr "" + +#: part/models.py:2922 +msgid "Minimum Variant Cost" +msgstr "" + +#: part/models.py:2923 +msgid "Calculated minimum cost of variant parts" +msgstr "" + +#: part/models.py:2928 +msgid "Maximum Variant Cost" +msgstr "" + +#: part/models.py:2929 +msgid "Calculated maximum cost of variant parts" +msgstr "" + +#: part/models.py:2935 +msgid "Calculated overall minimum cost" +msgstr "" + +#: part/models.py:2941 +msgid "Calculated overall maximum cost" +msgstr "" + +#: part/models.py:2946 +msgid "Minimum Sale Price" +msgstr "" + +#: part/models.py:2947 +msgid "Minimum sale price based on price breaks" +msgstr "" + +#: part/models.py:2952 +msgid "Maximum Sale Price" +msgstr "" + +#: part/models.py:2953 +msgid "Maximum sale price based on price breaks" +msgstr "" + +#: part/models.py:2958 +msgid "Minimum Sale Cost" +msgstr "" + +#: part/models.py:2959 +msgid "Minimum historical sale price" +msgstr "" + +#: part/models.py:2964 +msgid "Maximum Sale Cost" +msgstr "" + +#: part/models.py:2965 +msgid "Maximum historical sale price" +msgstr "" + +#: part/models.py:2984 +msgid "Part for stocktake" +msgstr "" + +#: part/models.py:2989 +msgid "Item Count" +msgstr "" + +#: part/models.py:2990 +msgid "Number of individual stock entries at time of stocktake" +msgstr "" + +#: part/models.py:2997 +msgid "Total available stock at time of stocktake" +msgstr "" + +#: part/models.py:3001 part/models.py:3081 +#: part/templates/part/part_scheduling.html:13 +#: report/templates/report/inventree_test_report_base.html:106 +#: templates/InvenTree/settings/plugin_settings.html:37 +#: templates/InvenTree/settings/settings_staff_js.html:520 +#: templates/js/translated/part.js:1082 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1722 +#: templates/js/translated/stock.js:2792 +msgid "Date" +msgstr "" + +#: part/models.py:3002 +msgid "Date stocktake was performed" +msgstr "" + +#: part/models.py:3010 +msgid "Additional notes" +msgstr "" + +#: part/models.py:3018 +msgid "User who performed this stocktake" +msgstr "" + +#: part/models.py:3023 +msgid "Minimum Stock Cost" +msgstr "" + +#: part/models.py:3024 +msgid "Estimated minimum cost of stock on hand" +msgstr "" + +#: part/models.py:3029 +msgid "Maximum Stock Cost" +msgstr "" + +#: part/models.py:3030 +msgid "Estimated maximum cost of stock on hand" +msgstr "" + +#: part/models.py:3088 templates/InvenTree/settings/settings_staff_js.html:509 +msgid "Report" +msgstr "" + +#: part/models.py:3089 +msgid "Stocktake report file (generated internally)" +msgstr "" + +#: part/models.py:3094 templates/InvenTree/settings/settings_staff_js.html:516 +msgid "Part Count" +msgstr "" + +#: part/models.py:3095 +msgid "Number of parts covered by stocktake" +msgstr "" + +#: part/models.py:3103 +msgid "User who requested this stocktake report" +msgstr "" + +#: part/models.py:3239 +msgid "Test templates can only be created for trackable parts" +msgstr "" + +#: part/models.py:3256 +msgid "Test with this name already exists for this part" +msgstr "" + +#: part/models.py:3276 templates/js/translated/part.js:2863 +msgid "Test Name" +msgstr "" + +#: part/models.py:3277 +msgid "Enter a name for the test" +msgstr "" + +#: part/models.py:3282 +msgid "Test Description" +msgstr "" + +#: part/models.py:3283 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:3288 templates/js/translated/part.js:2872 +#: templates/js/translated/table_filters.js:477 +msgid "Required" +msgstr "" + +#: part/models.py:3289 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:3294 templates/js/translated/part.js:2880 +msgid "Requires Value" +msgstr "" + +#: part/models.py:3295 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:3300 templates/js/translated/part.js:2887 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:3301 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:3346 +msgid "Checkbox parameters cannot have units" +msgstr "" + +#: part/models.py:3351 +msgid "Checkbox parameters cannot have choices" +msgstr "" + +#: part/models.py:3369 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3385 +msgid "Parameter template name must be unique" +msgstr "" + +#: part/models.py:3400 +msgid "Parameter Name" +msgstr "" + +#: part/models.py:3406 +msgid "Physical units for this parameter" +msgstr "" + +#: part/models.py:3416 +msgid "Parameter description" +msgstr "" + +#: part/models.py:3422 templates/js/translated/part.js:1624 +#: templates/js/translated/table_filters.js:817 +msgid "Checkbox" +msgstr "" + +#: part/models.py:3423 +msgid "Is this parameter a checkbox?" +msgstr "" + +#: part/models.py:3428 templates/js/translated/part.js:1633 +msgid "Choices" +msgstr "" + +#: part/models.py:3429 +msgid "Valid choices for this parameter (comma-separated)" +msgstr "" + +#: part/models.py:3503 +msgid "Invalid choice for parameter value" +msgstr "" + +#: part/models.py:3545 +msgid "Parent Part" +msgstr "" + +#: part/models.py:3550 part/models.py:3625 part/models.py:3626 +#: templates/InvenTree/settings/settings_staff_js.html:275 +msgid "Parameter Template" +msgstr "" + +#: part/models.py:3555 +msgid "Data" +msgstr "" + +#: part/models.py:3555 +msgid "Parameter Value" +msgstr "" + +#: part/models.py:3630 templates/InvenTree/settings/settings_staff_js.html:284 +msgid "Default Value" +msgstr "" + +#: part/models.py:3631 +msgid "Default Parameter Value" +msgstr "" + +#: part/models.py:3668 +msgid "Part ID or part name" +msgstr "" + +#: part/models.py:3672 +msgid "Unique part ID value" +msgstr "" + +#: part/models.py:3680 +msgid "Part IPN value" +msgstr "" + +#: part/models.py:3683 +msgid "Level" +msgstr "" + +#: part/models.py:3684 +msgid "BOM level" +msgstr "" + +#: part/models.py:3690 part/models.py:4085 +msgid "BOM Item" +msgstr "" + +#: part/models.py:3771 +msgid "Select parent part" +msgstr "" + +#: part/models.py:3779 +msgid "Sub part" +msgstr "" + +#: part/models.py:3780 +msgid "Select part to be used in BOM" +msgstr "" + +#: part/models.py:3786 +msgid "BOM quantity for this BOM item" +msgstr "" + +#: part/models.py:3791 +msgid "This BOM item is optional" +msgstr "" + +#: part/models.py:3797 +msgid "This BOM item is consumable (it is not tracked in build orders)" +msgstr "" + +#: part/models.py:3801 part/templates/part/upload_bom.html:55 +msgid "Overage" +msgstr "" + +#: part/models.py:3802 +msgid "Estimated build wastage quantity (absolute or percentage)" +msgstr "" + +#: part/models.py:3805 +msgid "BOM item reference" +msgstr "" + +#: part/models.py:3808 +msgid "BOM item notes" +msgstr "" + +#: part/models.py:3812 +msgid "Checksum" +msgstr "" + +#: part/models.py:3812 +msgid "BOM line checksum" +msgstr "" + +#: part/models.py:3817 templates/js/translated/table_filters.js:174 +msgid "Validated" +msgstr "" + +#: part/models.py:3818 +msgid "This BOM item has been validated" +msgstr "" + +#: part/models.py:3823 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:3824 +msgid "This BOM item is inherited by BOMs for variant parts" +msgstr "" + +#: part/models.py:3829 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 +msgid "Allow Variants" +msgstr "" + +#: part/models.py:3830 +msgid "Stock items for variant parts can be used for this BOM item" +msgstr "" + +#: part/models.py:3916 stock/models.py:613 +msgid "Quantity must be integer value for trackable parts" +msgstr "" + +#: part/models.py:3925 part/models.py:3927 +msgid "Sub part must be specified" +msgstr "" + +#: part/models.py:4052 +msgid "BOM Item Substitute" +msgstr "" + +#: part/models.py:4073 +msgid "Substitute part cannot be the same as the master part" +msgstr "" + +#: part/models.py:4086 +msgid "Parent BOM item" +msgstr "" + +#: part/models.py:4094 +msgid "Substitute part" +msgstr "" + +#: part/models.py:4109 +msgid "Part 1" +msgstr "" + +#: part/models.py:4113 +msgid "Part 2" +msgstr "" + +#: part/models.py:4113 +msgid "Select Related Part" +msgstr "" + +#: part/models.py:4130 +msgid "Part relationship cannot be created between a part and itself" +msgstr "" + +#: part/models.py:4134 +msgid "Duplicate relationship already exists" +msgstr "" + +#: part/serializers.py:170 part/serializers.py:193 stock/serializers.py:324 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:346 +msgid "No parts selected" +msgstr "" + +#: part/serializers.py:354 +msgid "Select category" +msgstr "" + +#: part/serializers.py:384 +msgid "Original Part" +msgstr "" + +#: part/serializers.py:384 +msgid "Select original part to duplicate" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy Image" +msgstr "" + +#: part/serializers.py:389 +msgid "Copy image from original part" +msgstr "" + +#: part/serializers.py:394 part/templates/part/detail.html:277 +msgid "Copy BOM" +msgstr "" + +#: part/serializers.py:394 +msgid "Copy bill of materials from original part" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy Parameters" +msgstr "" + +#: part/serializers.py:399 +msgid "Copy parameter data from original part" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy Notes" +msgstr "" + +#: part/serializers.py:404 +msgid "Copy notes from original part" +msgstr "" + +#: part/serializers.py:414 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:414 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:420 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:420 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:430 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:441 +msgid "Select manufacturer (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:447 +msgid "Manufacturer part number" +msgstr "" + +#: part/serializers.py:453 +msgid "Selected company is not a valid supplier" +msgstr "" + +#: part/serializers.py:460 +msgid "Selected company is not a valid manufacturer" +msgstr "" + +#: part/serializers.py:471 +msgid "Manufacturer part matching this MPN already exists" +msgstr "" + +#: part/serializers.py:479 +msgid "Supplier part matching this SKU already exists" +msgstr "" + +#: part/serializers.py:738 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:468 +msgid "Duplicate Part" +msgstr "" + +#: part/serializers.py:738 +msgid "Copy initial data from another Part" +msgstr "" + +#: part/serializers.py:743 templates/js/translated/part.js:102 +msgid "Initial Stock" +msgstr "" + +#: part/serializers.py:743 +msgid "Create Part with initial stock quantity" +msgstr "" + +#: part/serializers.py:748 +msgid "Supplier Information" +msgstr "" + +#: part/serializers.py:748 +msgid "Add initial supplier information for this part" +msgstr "" + +#: part/serializers.py:754 +msgid "Copy Category Parameters" +msgstr "" + +#: part/serializers.py:755 +msgid "Copy parameter templates from selected part category" +msgstr "" + +#: part/serializers.py:961 +msgid "Limit stocktake report to a particular part, and any variant parts" +msgstr "" + +#: part/serializers.py:967 +msgid "Limit stocktake report to a particular part category, and any child categories" +msgstr "" + +#: part/serializers.py:973 +msgid "Limit stocktake report to a particular stock location, and any child locations" +msgstr "" + +#: part/serializers.py:978 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:979 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:984 +msgid "Generate Report" +msgstr "" + +#: part/serializers.py:985 +msgid "Generate report file containing calculated stocktake data" +msgstr "" + +#: part/serializers.py:990 +msgid "Update Parts" +msgstr "" + +#: part/serializers.py:991 +msgid "Update specified parts with calculated stocktake data" +msgstr "" + +#: part/serializers.py:998 +msgid "Stocktake functionality is not enabled" +msgstr "" + +#: part/serializers.py:1087 +msgid "Update" +msgstr "" + +#: part/serializers.py:1088 +msgid "Update pricing for this part" +msgstr "" + +#: part/serializers.py:1395 +msgid "Select part to copy BOM from" +msgstr "" + +#: part/serializers.py:1403 +msgid "Remove Existing Data" +msgstr "" + +#: part/serializers.py:1404 +msgid "Remove existing BOM items before copying" +msgstr "" + +#: part/serializers.py:1409 +msgid "Include Inherited" +msgstr "" + +#: part/serializers.py:1410 +msgid "Include BOM items which are inherited from templated parts" +msgstr "" + +#: part/serializers.py:1415 +msgid "Skip Invalid Rows" +msgstr "" + +#: part/serializers.py:1416 +msgid "Enable this option to skip invalid rows" +msgstr "" + +#: part/serializers.py:1421 +msgid "Copy Substitute Parts" +msgstr "" + +#: part/serializers.py:1422 +msgid "Copy substitute parts when duplicate BOM items" +msgstr "" + +#: part/serializers.py:1462 +msgid "Clear Existing BOM" +msgstr "" + +#: part/serializers.py:1463 +msgid "Delete existing BOM items before uploading" +msgstr "" + +#: part/serializers.py:1493 +msgid "No part column specified" +msgstr "" + +#: part/serializers.py:1537 +msgid "Multiple matching parts found" +msgstr "" + +#: part/serializers.py:1540 +msgid "No matching part found" +msgstr "" + +#: part/serializers.py:1543 +msgid "Part is not designated as a component" +msgstr "" + +#: part/serializers.py:1552 +msgid "Quantity not provided" +msgstr "" + +#: part/serializers.py:1560 +msgid "Invalid quantity" +msgstr "" + +#: part/serializers.py:1581 +msgid "At least one BOM item is required" +msgstr "" + +#: part/stocktake.py:223 templates/js/translated/part.js:1063 +#: templates/js/translated/part.js:1817 templates/js/translated/part.js:1872 +#: templates/js/translated/purchase_order.js:2075 +msgid "Total Quantity" +msgstr "" + +#: part/stocktake.py:224 +msgid "Total Cost Min" +msgstr "" + +#: part/stocktake.py:225 +msgid "Total Cost Max" +msgstr "" + +#: part/stocktake.py:289 +msgid "Stocktake Report Available" +msgstr "" + +#: part/stocktake.py:290 +msgid "A new stocktake report is available for download" +msgstr "" + +#: part/tasks.py:33 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:34 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + +#: part/templates/part/bom.html:6 +msgid "You do not have permission to edit the BOM." +msgstr "" + +#: part/templates/part/bom.html:15 +msgid "The BOM this part has been changed, and must be validated" +msgstr "" + +#: part/templates/part/bom.html:17 +#, python-format +msgid "The BOM for %(part)s was last checked by %(checker)s on %(check_date)s" +msgstr "" + +#: part/templates/part/bom.html:21 +#, python-format +msgid "The BOM for %(part)s has not been validated." +msgstr "" + +#: part/templates/part/category.html:35 +msgid "Perform stocktake for this part category" +msgstr "" + +#: part/templates/part/category.html:41 part/templates/part/category.html:45 +msgid "You are subscribed to notifications for this category" +msgstr "" + +#: part/templates/part/category.html:49 +msgid "Subscribe to notifications for this category" +msgstr "" + +#: part/templates/part/category.html:55 +msgid "Category Actions" +msgstr "" + +#: part/templates/part/category.html:60 +msgid "Edit category" +msgstr "" + +#: part/templates/part/category.html:61 +msgid "Edit Category" +msgstr "" + +#: part/templates/part/category.html:65 +msgid "Delete category" +msgstr "" + +#: part/templates/part/category.html:66 +msgid "Delete Category" +msgstr "" + +#: part/templates/part/category.html:102 +msgid "Top level part category" +msgstr "" + +#: part/templates/part/category.html:122 part/templates/part/category.html:207 +#: part/templates/part/category_sidebar.html:7 +msgid "Subcategories" +msgstr "" + +#: part/templates/part/category.html:127 +msgid "Parts (Including subcategories)" +msgstr "" + +#: part/templates/part/category.html:165 +msgid "Create new part" +msgstr "" + +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 +msgid "New Part" +msgstr "" + +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 +msgid "Part Parameters" +msgstr "" + +#: part/templates/part/category.html:211 +msgid "Create new part category" +msgstr "" + +#: part/templates/part/category.html:212 +msgid "New Category" +msgstr "" + +#: part/templates/part/category_sidebar.html:13 +msgid "Import Parts" +msgstr "" + +#: part/templates/part/copy_part.html:10 +#, python-format +msgid "Make a copy of part '%(full_name)s'." +msgstr "" + +#: part/templates/part/copy_part.html:14 +#: part/templates/part/create_part.html:11 +msgid "Possible Matching Parts" +msgstr "" + +#: part/templates/part/copy_part.html:15 +#: part/templates/part/create_part.html:12 +msgid "The new part may be a duplicate of these existing parts" +msgstr "" + +#: part/templates/part/create_part.html:17 +#, python-format +msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" +msgstr "" + +#: part/templates/part/detail.html:20 +msgid "Part Stock" +msgstr "" + +#: part/templates/part/detail.html:44 +msgid "Refresh scheduling data" +msgstr "" + +#: part/templates/part/detail.html:45 part/templates/part/prices.html:15 +#: templates/js/translated/tables.js:552 +msgid "Refresh" +msgstr "" + +#: part/templates/part/detail.html:66 +msgid "Add stocktake information" +msgstr "" + +#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 +#: stock/admin.py:148 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2186 users/models.py:176 +msgid "Stocktake" +msgstr "" + +#: part/templates/part/detail.html:83 +msgid "Part Test Templates" +msgstr "" + +#: part/templates/part/detail.html:88 +msgid "Add Test Template" +msgstr "" + +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 +msgid "Sales Order Allocations" +msgstr "" + +#: part/templates/part/detail.html:156 +msgid "Part Notes" +msgstr "" + +#: part/templates/part/detail.html:171 +msgid "Part Variants" +msgstr "" + +#: part/templates/part/detail.html:175 +msgid "Create new variant" +msgstr "" + +#: part/templates/part/detail.html:176 +msgid "New Variant" +msgstr "" + +#: part/templates/part/detail.html:199 +msgid "Add new parameter" +msgstr "" + +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 +msgid "Related Parts" +msgstr "" + +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +msgid "Add Related" +msgstr "" + +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 +#: report/templates/report/inventree_bill_of_materials_report.html:100 +msgid "Bill of Materials" +msgstr "" + +#: part/templates/part/detail.html:260 +msgid "Export actions" +msgstr "" + +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 +msgid "Export BOM" +msgstr "" + +#: part/templates/part/detail.html:266 +msgid "Print BOM Report" +msgstr "" + +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 +msgid "Upload BOM" +msgstr "" + +#: part/templates/part/detail.html:278 +msgid "Validate BOM" +msgstr "" + +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +msgid "Add BOM Item" +msgstr "" + +#: part/templates/part/detail.html:297 +msgid "Assemblies" +msgstr "" + +#: part/templates/part/detail.html:313 +msgid "Part Builds" +msgstr "" + +#: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 +msgid "Build Order Allocations" +msgstr "" + +#: part/templates/part/detail.html:352 +msgid "Part Suppliers" +msgstr "" + +#: part/templates/part/detail.html:372 +msgid "Part Manufacturers" +msgstr "" + +#: part/templates/part/detail.html:659 +msgid "Related Part" +msgstr "" + +#: part/templates/part/detail.html:667 +msgid "Add Related Part" +msgstr "" + +#: part/templates/part/detail.html:752 +msgid "Add Test Result Template" +msgstr "" + +#: part/templates/part/import_wizard/ajax_part_upload.html:29 +#: part/templates/part/import_wizard/part_upload.html:14 +msgid "Insufficient privileges." +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:8 +msgid "Return to Parts" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:13 +msgid "Import Parts from File" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:31 +msgid "Requirements for part import" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:33 +msgid "The part import file must contain the required named columns as provided in the " +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:33 +msgid "Part Import Template" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:89 +msgid "Download Part Import Template" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:92 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 +msgid "Format" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:93 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 +#: templates/js/translated/order.js:130 +msgid "Select file format" +msgstr "" + +#: part/templates/part/part_app_base.html:12 +msgid "Part List" +msgstr "" + +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 +msgid "You are subscribed to notifications for this part" +msgstr "" + +#: part/templates/part/part_base.html:33 +msgid "Subscribe to notifications for this part" +msgstr "" + +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 +msgid "Print Label" +msgstr "" + +#: part/templates/part/part_base.html:58 +msgid "Show pricing information" +msgstr "" + +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 +msgid "Stock actions" +msgstr "" + +#: part/templates/part/part_base.html:70 +msgid "Count part stock" +msgstr "" + +#: part/templates/part/part_base.html:76 +msgid "Transfer part stock" +msgstr "" + +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2288 +msgid "Part actions" +msgstr "" + +#: part/templates/part/part_base.html:94 +msgid "Duplicate part" +msgstr "" + +#: part/templates/part/part_base.html:97 +msgid "Edit part" +msgstr "" + +#: part/templates/part/part_base.html:100 +msgid "Delete part" +msgstr "" + +#: part/templates/part/part_base.html:119 +msgid "Part is a template part (variants can be made from this part)" +msgstr "" + +#: part/templates/part/part_base.html:123 +msgid "Part can be assembled from other parts" +msgstr "" + +#: part/templates/part/part_base.html:127 +msgid "Part can be used in assemblies" +msgstr "" + +#: part/templates/part/part_base.html:131 +msgid "Part stock is tracked by serial number" +msgstr "" + +#: part/templates/part/part_base.html:135 +msgid "Part can be purchased from external suppliers" +msgstr "" + +#: part/templates/part/part_base.html:139 +msgid "Part can be sold to customers" +msgstr "" + +#: part/templates/part/part_base.html:145 +msgid "Part is not active" +msgstr "" + +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:304 +#: templates/js/translated/part.js:811 templates/js/translated/part.js:1215 +msgid "Inactive" +msgstr "" + +#: part/templates/part/part_base.html:153 +msgid "Part is virtual (not a physical part)" +msgstr "" + +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 +msgid "Allocated to Build Orders" +msgstr "" + +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 +msgid "Allocated to Sales Orders" +msgstr "" + +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +msgid "Can Build" +msgstr "" + +#: part/templates/part/part_base.html:291 +msgid "Minimum stock level" +msgstr "" + +#: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 +#: templates/js/translated/part.js:1261 templates/js/translated/part.js:2439 +#: templates/js/translated/pricing.js:391 +#: templates/js/translated/pricing.js:1054 +msgid "Price Range" +msgstr "" + +#: part/templates/part/part_base.html:352 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:444 +msgid "Part QR Code" +msgstr "" + +#: part/templates/part/part_base.html:461 +msgid "Link Barcode to Part" +msgstr "" + +#: part/templates/part/part_base.html:472 templates/js/translated/part.js:2282 +msgid "part" +msgstr "" + +#: part/templates/part/part_base.html:512 +msgid "Calculate" +msgstr "" + +#: part/templates/part/part_base.html:529 +msgid "Remove associated image from this part" +msgstr "" + +#: part/templates/part/part_base.html:580 +msgid "No matching images found" +msgstr "" + +#: part/templates/part/part_base.html:676 +msgid "Hide Part Details" +msgstr "" + +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:73 +#: part/templates/part/prices.html:216 templates/js/translated/pricing.js:485 +msgid "Supplier Pricing" +msgstr "" + +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:95 +#: part/templates/part/part_pricing.html:110 +msgid "Unit Cost" +msgstr "" + +#: part/templates/part/part_pricing.html:40 +msgid "No supplier pricing available" +msgstr "" + +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:87 +#: part/templates/part/prices.html:239 +msgid "BOM Pricing" +msgstr "" + +#: part/templates/part/part_pricing.html:66 +msgid "Unit Purchase Price" +msgstr "" + +#: part/templates/part/part_pricing.html:72 +msgid "Total Purchase Price" +msgstr "" + +#: part/templates/part/part_pricing.html:83 +msgid "No BOM pricing available" +msgstr "" + +#: part/templates/part/part_pricing.html:92 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/part_pricing.html:123 +msgid "No pricing information is available for this part." +msgstr "" + +#: part/templates/part/part_scheduling.html:14 +msgid "Scheduled Quantity" +msgstr "" + +#: part/templates/part/part_sidebar.html:11 +msgid "Variants" +msgstr "" + +#: part/templates/part/part_sidebar.html:14 +#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 +#: stock/templates/stock/stock_app_base.html:10 +#: templates/InvenTree/search.html:153 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1239 templates/js/translated/part.js:2140 +#: templates/js/translated/part.js:2387 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2040 templates/navbar.html:31 +msgid "Stock" +msgstr "" + +#: part/templates/part/part_sidebar.html:30 +#: templates/InvenTree/settings/sidebar.html:39 +msgid "Pricing" +msgstr "" + +#: part/templates/part/part_sidebar.html:44 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:54 +msgid "Test Templates" +msgstr "" + +#: part/templates/part/part_thumb.html:11 +msgid "Select from existing images" +msgstr "" + +#: part/templates/part/prices.html:11 +msgid "Pricing Overview" +msgstr "" + +#: part/templates/part/prices.html:14 +msgid "Refresh Part Pricing" +msgstr "" + +#: part/templates/part/prices.html:25 stock/admin.py:147 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2216 +msgid "Last Updated" +msgstr "" + +#: part/templates/part/prices.html:34 part/templates/part/prices.html:116 +msgid "Price Category" +msgstr "" + +#: part/templates/part/prices.html:35 part/templates/part/prices.html:117 +msgid "Minimum" +msgstr "" + +#: part/templates/part/prices.html:36 part/templates/part/prices.html:118 +msgid "Maximum" +msgstr "" + +#: part/templates/part/prices.html:48 part/templates/part/prices.html:163 +msgid "Internal Pricing" +msgstr "" + +#: part/templates/part/prices.html:61 part/templates/part/prices.html:195 +msgid "Purchase History" +msgstr "" + +#: part/templates/part/prices.html:95 part/templates/part/prices.html:263 +msgid "Variant Pricing" +msgstr "" + +#: part/templates/part/prices.html:102 +msgid "Overall Pricing" +msgstr "" + +#: part/templates/part/prices.html:138 part/templates/part/prices.html:315 +msgid "Sale History" +msgstr "" + +#: part/templates/part/prices.html:146 +msgid "Sale price data is not available for this part" +msgstr "" + +#: part/templates/part/prices.html:153 +msgid "Price range data is not available for this part." +msgstr "" + +#: part/templates/part/prices.html:164 part/templates/part/prices.html:196 +#: part/templates/part/prices.html:217 part/templates/part/prices.html:240 +#: part/templates/part/prices.html:264 part/templates/part/prices.html:287 +#: part/templates/part/prices.html:316 +msgid "Jump to overview" +msgstr "" + +#: part/templates/part/prices.html:169 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/prices.html:286 +msgid "Sale Pricing" +msgstr "" + +#: part/templates/part/prices.html:292 +msgid "Add Sell Price Break" +msgstr "" + +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:701 +#: templates/js/translated/part.js:2135 templates/js/translated/part.js:2137 +msgid "No Stock" +msgstr "" + +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 +msgid "Low Stock" +msgstr "" + +#: part/templates/part/upload_bom.html:8 +msgid "Return to BOM" +msgstr "" + +#: part/templates/part/upload_bom.html:13 +msgid "Upload Bill of Materials" +msgstr "" + +#: part/templates/part/upload_bom.html:19 +msgid "BOM upload requirements" +msgstr "" + +#: part/templates/part/upload_bom.html:23 +#: part/templates/part/upload_bom.html:90 +msgid "Upload BOM File" +msgstr "" + +#: part/templates/part/upload_bom.html:29 +msgid "Submit BOM Data" +msgstr "" + +#: part/templates/part/upload_bom.html:37 +msgid "Requirements for BOM upload" +msgstr "" + +#: part/templates/part/upload_bom.html:39 +msgid "The BOM file must contain the required named columns as provided in the " +msgstr "" + +#: part/templates/part/upload_bom.html:39 +msgid "BOM Upload Template" +msgstr "" + +#: part/templates/part/upload_bom.html:40 +msgid "Each part must already exist in the database" +msgstr "" + +#: part/templates/part/variant_part.html:9 +msgid "Create new part variant" +msgstr "" + +#: part/templates/part/variant_part.html:10 +msgid "Create a new variant part from this template" +msgstr "" + +#: part/templatetags/inventree_extras.py:185 +msgid "Unknown database" +msgstr "" + +#: part/templatetags/inventree_extras.py:231 +msgid "{version.inventreeInstanceTitle()} v{version.inventreeVersion()}" +msgstr "" + +#: part/views.py:110 +msgid "Match References" +msgstr "" + +#: part/views.py:242 +#, python-brace-format +msgid "Can't import part {new_part.name} because there is no category assigned" +msgstr "" + +#: part/views.py:383 +msgid "Select Part Image" +msgstr "" + +#: part/views.py:409 +msgid "Updated part image" +msgstr "" + +#: part/views.py:412 +msgid "Part image not found" +msgstr "" + +#: part/views.py:507 +msgid "Part Pricing" +msgstr "" + +#: plugin/base/action/api.py:27 +msgid "No action specified" +msgstr "" + +#: plugin/base/action/api.py:38 +msgid "No matching action found" +msgstr "" + +#: plugin/base/barcodes/api.py:56 plugin/base/barcodes/api.py:111 +#: plugin/base/barcodes/api.py:269 +msgid "Missing barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:82 +msgid "No match found for barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:86 +msgid "Match found for barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:121 +#: templates/js/translated/purchase_order.js:1399 +msgid "Barcode matches existing item" +msgstr "" + +#: plugin/base/barcodes/api.py:217 +msgid "No match found for provided value" +msgstr "" + +#: plugin/base/barcodes/api.py:275 +msgid "Invalid purchase order" +msgstr "" + +#: plugin/base/barcodes/api.py:281 +msgid "Invalid stock location" +msgstr "" + +#: plugin/base/barcodes/api.py:292 +msgid "Item has already been received" +msgstr "" + +#: plugin/base/barcodes/api.py:314 +msgid "Invalid supplier barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:170 +msgid "Supplier barcode doesn't contain order number" +msgstr "" + +#: plugin/base/barcodes/mixins.py:183 +#, python-brace-format +msgid "Found multiple placed purchase orders for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:185 +#, python-brace-format +msgid "Failed to find placed purchase order for '{order_number}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:215 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:248 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:259 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:301 plugin/base/barcodes/mixins.py:324 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/label/label.py:40 +msgid "Label printing failed" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:25 +msgid "InvenTree Barcodes" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:26 +msgid "Provides native support for barcodes" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:28 +#: plugin/builtin/integration/core_notifications.py:34 +#: plugin/builtin/integration/currency_exchange.py:22 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/label_sheet.py:56 +#: plugin/builtin/suppliers/digikey.py:24 plugin/builtin/suppliers/lcsc.py:25 +#: plugin/builtin/suppliers/mouser.py:24 plugin/builtin/suppliers/tme.py:25 +msgid "InvenTree contributors" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:33 +msgid "InvenTree Notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:35 +msgid "Integrated outgoing notification methods" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:40 +#: plugin/builtin/integration/core_notifications.py:81 +msgid "Enable email notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:41 +#: plugin/builtin/integration/core_notifications.py:82 +msgid "Allow sending of emails for event notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:46 +msgid "Enable slack notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:47 +msgid "Allow sending of slack channel messages for event notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:52 +msgid "Slack incoming webhook url" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:53 +msgid "URL that is used to send messages to a slack channel" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:162 +msgid "Open link" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:24 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:40 report/models.py:203 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:53 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:54 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:87 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:116 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:21 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:22 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:30 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:22 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:23 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:31 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:21 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:22 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:30 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:22 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:23 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:31 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:140 +msgid "Permission denied: only staff users can install plugins" +msgstr "" + +#: plugin/installer.py:186 +msgid "Installed plugin successfully" +msgstr "" + +#: plugin/installer.py:192 +#, python-brace-format +msgid "Installed plugin into {path}" +msgstr "" + +#: plugin/installer.py:201 +msgid "Plugin installation failed" +msgstr "" + +#: plugin/models.py:28 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:29 +msgid "Plugin Configurations" +msgstr "" + +#: plugin/models.py:34 users/models.py:73 +msgid "Key" +msgstr "" + +#: plugin/models.py:35 +msgid "Key of plugin" +msgstr "" + +#: plugin/models.py:43 +msgid "PluginName of the plugin" +msgstr "" + +#: plugin/models.py:49 +msgid "Is the plugin active" +msgstr "" + +#: plugin/models.py:129 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:500 +msgid "Installed" +msgstr "" + +#: plugin/models.py:138 +msgid "Sample plugin" +msgstr "" + +#: plugin/models.py:146 +msgid "Builtin Plugin" +msgstr "" + +#: plugin/models.py:171 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:50 +msgid "Plugin" +msgstr "" + +#: plugin/models.py:222 +msgid "Method" +msgstr "" + +#: plugin/plugin.py:265 +msgid "No author found" +msgstr "" + +#: plugin/registry.py:510 +#, python-brace-format +msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" +msgstr "" + +#: plugin/registry.py:512 +#, python-brace-format +msgid "Plugin requires at least version {v}" +msgstr "" + +#: plugin/registry.py:514 +#, python-brace-format +msgid "Plugin requires at most version {v}" +msgstr "" + +#: plugin/samples/integration/sample.py:50 +msgid "Enable PO" +msgstr "" + +#: plugin/samples/integration/sample.py:51 +msgid "Enable PO functionality in InvenTree interface" +msgstr "" + +#: plugin/samples/integration/sample.py:56 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:57 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:61 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:62 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:67 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:68 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:87 +msgid "Source URL" +msgstr "" + +#: plugin/serializers.py:88 +msgid "Source for the package - this can be a custom registry or a VCS path" +msgstr "" + +#: plugin/serializers.py:93 +msgid "Package Name" +msgstr "" + +#: plugin/serializers.py:94 +msgid "Name for the Plugin Package - can also contain a version indicator" +msgstr "" + +#: plugin/serializers.py:97 +msgid "Confirm plugin installation" +msgstr "" + +#: plugin/serializers.py:98 +msgid "This will install this plugin now into the current instance. The instance will go into maintenance." +msgstr "" + +#: plugin/serializers.py:110 +msgid "Installation not confirmed" +msgstr "" + +#: plugin/serializers.py:112 +msgid "Either packagename of URL must be provided" +msgstr "" + +#: plugin/serializers.py:141 +msgid "Activate Plugin" +msgstr "" + +#: plugin/serializers.py:142 +msgid "Activate this plugin" +msgstr "" + +#: report/api.py:172 +msgid "No valid objects provided to template" +msgstr "" + +#: report/api.py:209 report/api.py:245 +#, python-brace-format +msgid "Template file '{template}' is missing or does not exist" +msgstr "" + +#: report/api.py:322 +msgid "Test report" +msgstr "" + +#: report/helpers.py:13 +msgid "A4" +msgstr "" + +#: report/helpers.py:14 +msgid "A3" +msgstr "" + +#: report/helpers.py:15 +msgid "Legal" +msgstr "" + +#: report/helpers.py:16 +msgid "Letter" +msgstr "" + +#: report/models.py:171 +msgid "Template name" +msgstr "" + +#: report/models.py:177 +msgid "Report template file" +msgstr "" + +#: report/models.py:184 +msgid "Report template description" +msgstr "" + +#: report/models.py:190 +msgid "Report revision number (auto-increments)" +msgstr "" + +#: report/models.py:198 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:204 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:305 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:312 +msgid "Report template is enabled" +msgstr "" + +#: report/models.py:333 +msgid "StockItem query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:341 +msgid "Include Installed Tests" +msgstr "" + +#: report/models.py:342 +msgid "Include test results for stock items installed inside assembled item" +msgstr "" + +#: report/models.py:402 +msgid "Build Filters" +msgstr "" + +#: report/models.py:403 +msgid "Build query filters (comma-separated list of key=value pairs" +msgstr "" + +#: report/models.py:444 +msgid "Part Filters" +msgstr "" + +#: report/models.py:445 +msgid "Part query filters (comma-separated list of key=value pairs" +msgstr "" + +#: report/models.py:479 +msgid "Purchase order query filters" +msgstr "" + +#: report/models.py:517 +msgid "Sales order query filters" +msgstr "" + +#: report/models.py:555 +msgid "Return order query filters" +msgstr "" + +#: report/models.py:606 +msgid "Snippet" +msgstr "" + +#: report/models.py:607 +msgid "Report snippet file" +msgstr "" + +#: report/models.py:611 +msgid "Snippet file description" +msgstr "" + +#: report/models.py:647 +msgid "Asset" +msgstr "" + +#: report/models.py:648 +msgid "Report asset file" +msgstr "" + +#: report/models.py:655 +msgid "Asset file description" +msgstr "" + +#: report/models.py:676 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/templates/report/inventree_bill_of_materials_report.html:133 +msgid "Materials needed" +msgstr "" + +#: report/templates/report/inventree_build_order_base.html:146 +msgid "Required For" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:15 +msgid "Supplier was deleted" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:30 +#: report/templates/report/inventree_so_report_base.html:30 +#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 +#: templates/js/translated/pricing.js:596 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2106 +#: templates/js/translated/sales_order.js:1834 +msgid "Unit Price" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:55 +#: report/templates/report/inventree_return_order_report_base.html:48 +#: report/templates/report/inventree_so_report_base.html:55 +msgid "Extra Line Items" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:72 +#: report/templates/report/inventree_so_report_base.html:72 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/sales_order.js:1803 +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:759 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:511 templates/js/translated/build.js:1351 +#: templates/js/translated/build.js:2340 +#: templates/js/translated/model_renderers.js:222 +#: templates/js/translated/return_order.js:537 +#: templates/js/translated/return_order.js:721 +#: templates/js/translated/sales_order.js:312 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1693 +#: templates/js/translated/stock.js:596 +msgid "Serial Number" +msgstr "" + +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:21 +msgid "Stock Item Test Report" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:97 +msgid "Test Results" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:102 +#: stock/models.py:2300 templates/js/translated/stock.js:1475 +msgid "Test" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:103 +#: stock/models.py:2306 +msgid "Result" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:130 +msgid "Pass" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:132 +msgid "Fail" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:139 +msgid "No result (required)" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:141 +msgid "No result" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:154 +#: stock/templates/stock/stock_sidebar.html:16 +msgid "Installed Items" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:168 +#: stock/admin.py:122 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3081 +msgid "Serial" +msgstr "" + +#: stock/admin.py:40 stock/admin.py:126 +msgid "Location ID" +msgstr "" + +#: stock/admin.py:41 stock/admin.py:127 +msgid "Location Name" +msgstr "" + +#: stock/admin.py:45 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 +msgid "Location Path" +msgstr "" + +#: stock/admin.py:118 +msgid "Stock Item ID" +msgstr "" + +#: stock/admin.py:125 +msgid "Status Code" +msgstr "" + +#: stock/admin.py:128 +msgid "Supplier Part ID" +msgstr "" + +#: stock/admin.py:129 +msgid "Supplier ID" +msgstr "" + +#: stock/admin.py:130 +msgid "Supplier Name" +msgstr "" + +#: stock/admin.py:131 +msgid "Customer ID" +msgstr "" + +#: stock/admin.py:132 stock/models.py:742 +#: stock/templates/stock/item_base.html:354 +msgid "Installed In" +msgstr "" + +#: stock/admin.py:133 +msgid "Build ID" +msgstr "" + +#: stock/admin.py:135 +msgid "Sales Order ID" +msgstr "" + +#: stock/admin.py:136 +msgid "Purchase Order ID" +msgstr "" + +#: stock/admin.py:143 +msgid "Review Needed" +msgstr "" + +#: stock/admin.py:144 +msgid "Delete on Deplete" +msgstr "" + +#: stock/admin.py:149 stock/models.py:823 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2200 users/models.py:98 +msgid "Expiry Date" +msgstr "" + +#: stock/api.py:499 templates/js/translated/table_filters.js:427 +msgid "External Location" +msgstr "" + +#: stock/api.py:693 +msgid "Quantity is required" +msgstr "" + +#: stock/api.py:700 +msgid "Valid part must be supplied" +msgstr "" + +#: stock/api.py:728 +msgid "The given supplier part does not exist" +msgstr "" + +#: stock/api.py:737 +msgid "The supplier part has a pack size defined, but flag use_pack_size not set" +msgstr "" + +#: stock/api.py:760 +msgid "Serial numbers cannot be supplied for a non-trackable part" +msgstr "" + +#: stock/models.py:56 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:57 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:86 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:118 stock/models.py:726 +#: stock/templates/stock/location.html:17 +#: stock/templates/stock/stock_app_base.html:8 +msgid "Stock Location" +msgstr "" + +#: stock/models.py:119 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:177 +msgid "Stock Locations" +msgstr "" + +#: stock/models.py:148 stock/models.py:862 +#: stock/templates/stock/item_base.html:247 +msgid "Owner" +msgstr "" + +#: stock/models.py:149 stock/models.py:863 +msgid "Select Owner" +msgstr "" + +#: stock/models.py:156 +msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." +msgstr "" + +#: stock/models.py:162 templates/js/translated/stock.js:2752 +#: templates/js/translated/table_filters.js:243 +msgid "External" +msgstr "" + +#: stock/models.py:163 +msgid "This is an external stock location" +msgstr "" + +#: stock/models.py:169 templates/js/translated/stock.js:2761 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:172 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:237 +msgid "You cannot make this stock location structural because some stock items are already located into it!" +msgstr "" + +#: stock/models.py:593 +msgid "Stock items cannot be located into structural stock locations!" +msgstr "" + +#: stock/models.py:619 stock/serializers.py:229 +msgid "Stock item cannot be created for virtual parts" +msgstr "" + +#: stock/models.py:636 +#, python-brace-format +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" + +#: stock/models.py:644 stock/models.py:653 +msgid "Quantity must be 1 for item with a serial number" +msgstr "" + +#: stock/models.py:645 +msgid "Serial number cannot be set if quantity greater than 1" +msgstr "" + +#: stock/models.py:667 +msgid "Item cannot belong to itself" +msgstr "" + +#: stock/models.py:673 +msgid "Item must have a build reference if is_building=True" +msgstr "" + +#: stock/models.py:687 +msgid "Build reference does not point to the same part object" +msgstr "" + +#: stock/models.py:701 +msgid "Parent Stock Item" +msgstr "" + +#: stock/models.py:711 +msgid "Base part" +msgstr "" + +#: stock/models.py:719 +msgid "Select a matching supplier part for this stock item" +msgstr "" + +#: stock/models.py:729 +msgid "Where is this stock item located?" +msgstr "" + +#: stock/models.py:736 stock/serializers.py:1298 +msgid "Packaging this stock item is stored in" +msgstr "" + +#: stock/models.py:745 +msgid "Is this item installed in another item?" +msgstr "" + +#: stock/models.py:761 +msgid "Serial number for this item" +msgstr "" + +#: stock/models.py:775 stock/serializers.py:1283 +msgid "Batch code for this stock item" +msgstr "" + +#: stock/models.py:780 +msgid "Stock Quantity" +msgstr "" + +#: stock/models.py:787 +msgid "Source Build" +msgstr "" + +#: stock/models.py:789 +msgid "Build for this stock item" +msgstr "" + +#: stock/models.py:795 stock/templates/stock/item_base.html:363 +msgid "Consumed By" +msgstr "" + +#: stock/models.py:797 +msgid "Build order which consumed this stock item" +msgstr "" + +#: stock/models.py:808 +msgid "Source Purchase Order" +msgstr "" + +#: stock/models.py:811 +msgid "Purchase order for this stock item" +msgstr "" + +#: stock/models.py:817 +msgid "Destination Sales Order" +msgstr "" + +#: stock/models.py:824 +msgid "Expiry date for stock item. Stock will be considered expired after this date" +msgstr "" + +#: stock/models.py:839 +msgid "Delete on deplete" +msgstr "" + +#: stock/models.py:839 +msgid "Delete this Stock Item when stock is depleted" +msgstr "" + +#: stock/models.py:858 +msgid "Single unit purchase price at time of purchase" +msgstr "" + +#: stock/models.py:886 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1411 +msgid "Part is not set as trackable" +msgstr "" + +#: stock/models.py:1417 +msgid "Quantity must be integer" +msgstr "" + +#: stock/models.py:1423 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" + +#: stock/models.py:1426 +msgid "Serial numbers must be a list of integers" +msgstr "" + +#: stock/models.py:1429 +msgid "Quantity does not match serial numbers" +msgstr "" + +#: stock/models.py:1436 stock/serializers.py:449 +msgid "Serial numbers already exist" +msgstr "" + +#: stock/models.py:1507 +msgid "Stock item has been assigned to a sales order" +msgstr "" + +#: stock/models.py:1510 +msgid "Stock item is installed in another item" +msgstr "" + +#: stock/models.py:1513 +msgid "Stock item contains other items" +msgstr "" + +#: stock/models.py:1516 +msgid "Stock item has been assigned to a customer" +msgstr "" + +#: stock/models.py:1519 +msgid "Stock item is currently in production" +msgstr "" + +#: stock/models.py:1522 +msgid "Serialized stock cannot be merged" +msgstr "" + +#: stock/models.py:1529 stock/serializers.py:1194 +msgid "Duplicate stock items" +msgstr "" + +#: stock/models.py:1533 +msgid "Stock items must refer to the same part" +msgstr "" + +#: stock/models.py:1537 +msgid "Stock items must refer to the same supplier part" +msgstr "" + +#: stock/models.py:1541 +msgid "Stock status codes must match" +msgstr "" + +#: stock/models.py:1735 +msgid "StockItem cannot be moved as it is not in stock" +msgstr "" + +#: stock/models.py:2218 +msgid "Entry notes" +msgstr "" + +#: stock/models.py:2276 +msgid "Value must be provided for this test" +msgstr "" + +#: stock/models.py:2282 +msgid "Attachment must be uploaded for this test" +msgstr "" + +#: stock/models.py:2301 +msgid "Test name" +msgstr "" + +#: stock/models.py:2307 +msgid "Test result" +msgstr "" + +#: stock/models.py:2313 +msgid "Test output value" +msgstr "" + +#: stock/models.py:2320 +msgid "Test result attachment" +msgstr "" + +#: stock/models.py:2326 +msgid "Test notes" +msgstr "" + +#: stock/serializers.py:121 +msgid "Serial number is too large" +msgstr "" + +#: stock/serializers.py:222 +msgid "Use pack size when adding: the quantity defined is the number of packs" +msgstr "" + +#: stock/serializers.py:321 +msgid "Purchase price of this stock item, per unit or pack" +msgstr "" + +#: stock/serializers.py:382 +msgid "Enter number of stock items to serialize" +msgstr "" + +#: stock/serializers.py:394 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({q})" +msgstr "" + +#: stock/serializers.py:400 +msgid "Enter serial numbers for new items" +msgstr "" + +#: stock/serializers.py:411 stock/serializers.py:1151 stock/serializers.py:1422 +msgid "Destination stock location" +msgstr "" + +#: stock/serializers.py:418 +msgid "Optional note field" +msgstr "" + +#: stock/serializers.py:428 +msgid "Serial numbers cannot be assigned to this part" +msgstr "" + +#: stock/serializers.py:489 +msgid "Select stock item to install" +msgstr "" + +#: stock/serializers.py:496 +msgid "Quantity to Install" +msgstr "" + +#: stock/serializers.py:497 +msgid "Enter the quantity of items to install" +msgstr "" + +#: stock/serializers.py:502 stock/serializers.py:581 stock/serializers.py:675 +#: stock/serializers.py:731 +msgid "Add transaction note (optional)" +msgstr "" + +#: stock/serializers.py:511 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:519 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:526 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:538 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:576 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:615 +msgid "Select part to convert stock item into" +msgstr "" + +#: stock/serializers.py:625 +msgid "Selected part is not a valid option for conversion" +msgstr "" + +#: stock/serializers.py:639 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:670 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:713 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:719 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:1006 +msgid "Part must be salable" +msgstr "" + +#: stock/serializers.py:1010 +msgid "Item is allocated to a sales order" +msgstr "" + +#: stock/serializers.py:1014 +msgid "Item is allocated to a build order" +msgstr "" + +#: stock/serializers.py:1045 +msgid "Customer to assign stock items" +msgstr "" + +#: stock/serializers.py:1051 +msgid "Selected company is not a customer" +msgstr "" + +#: stock/serializers.py:1059 +msgid "Stock assignment notes" +msgstr "" + +#: stock/serializers.py:1069 stock/serializers.py:1329 +msgid "A list of stock items must be provided" +msgstr "" + +#: stock/serializers.py:1158 +msgid "Stock merging notes" +msgstr "" + +#: stock/serializers.py:1163 +msgid "Allow mismatched suppliers" +msgstr "" + +#: stock/serializers.py:1164 +msgid "Allow stock items with different supplier parts to be merged" +msgstr "" + +#: stock/serializers.py:1169 +msgid "Allow mismatched status" +msgstr "" + +#: stock/serializers.py:1170 +msgid "Allow stock items with different status codes to be merged" +msgstr "" + +#: stock/serializers.py:1180 +msgid "At least two stock items must be provided" +msgstr "" + +#: stock/serializers.py:1269 +msgid "StockItem primary key value" +msgstr "" + +#: stock/serializers.py:1290 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1319 +msgid "Stock transaction notes" +msgstr "" + +#: stock/templates/stock/item.html:17 +msgid "Stock Tracking Information" +msgstr "" + +#: stock/templates/stock/item.html:63 +msgid "Child Stock Items" +msgstr "" + +#: stock/templates/stock/item.html:72 +msgid "This stock item does not have any child items" +msgstr "" + +#: stock/templates/stock/item.html:81 +#: stock/templates/stock/stock_sidebar.html:12 +msgid "Test Data" +msgstr "" + +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 +msgid "Test Report" +msgstr "" + +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:279 +msgid "Delete Test Data" +msgstr "" + +#: stock/templates/stock/item.html:93 +msgid "Add Test Data" +msgstr "" + +#: stock/templates/stock/item.html:125 +msgid "Stock Item Notes" +msgstr "" + +#: stock/templates/stock/item.html:140 +msgid "Installed Stock Items" +msgstr "" + +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3239 +msgid "Install Stock Item" +msgstr "" + +#: stock/templates/stock/item.html:267 +msgid "Delete all test results for this stock item" +msgstr "" + +#: stock/templates/stock/item.html:296 templates/js/translated/stock.js:1667 +msgid "Add Test Result" +msgstr "" + +#: stock/templates/stock/item_base.html:33 +msgid "Locate stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:51 +msgid "Scan to Location" +msgstr "" + +#: stock/templates/stock/item_base.html:59 +#: stock/templates/stock/location.html:70 +#: templates/js/translated/filters.js:431 +msgid "Printing actions" +msgstr "" + +#: stock/templates/stock/item_base.html:75 +msgid "Stock adjustment actions" +msgstr "" + +#: stock/templates/stock/item_base.html:79 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1792 +msgid "Count stock" +msgstr "" + +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1774 +msgid "Add stock" +msgstr "" + +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1783 +msgid "Remove stock" +msgstr "" + +#: stock/templates/stock/item_base.html:85 +msgid "Serialize stock" +msgstr "" + +#: stock/templates/stock/item_base.html:88 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1801 +msgid "Transfer stock" +msgstr "" + +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1855 +msgid "Assign to customer" +msgstr "" + +#: stock/templates/stock/item_base.html:94 +msgid "Return to stock" +msgstr "" + +#: stock/templates/stock/item_base.html:97 +msgid "Uninstall stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:97 +msgid "Uninstall" +msgstr "" + +#: stock/templates/stock/item_base.html:101 +msgid "Install stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:101 +msgid "Install" +msgstr "" + +#: stock/templates/stock/item_base.html:115 +msgid "Convert to variant" +msgstr "" + +#: stock/templates/stock/item_base.html:118 +msgid "Duplicate stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:120 +msgid "Edit stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:123 +msgid "Delete stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 +#: templates/js/translated/build.js:2108 templates/navbar.html:38 +msgid "Build" +msgstr "" + +#: stock/templates/stock/item_base.html:193 +msgid "Parent Item" +msgstr "" + +#: stock/templates/stock/item_base.html:211 +msgid "No manufacturer set" +msgstr "" + +#: stock/templates/stock/item_base.html:251 +msgid "You are not in the list of owners of this item. This stock item cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:252 +#: stock/templates/stock/location.html:149 +msgid "Read only" +msgstr "" + +#: stock/templates/stock/item_base.html:265 +msgid "This stock item is unavailable" +msgstr "" + +#: stock/templates/stock/item_base.html:271 +msgid "This stock item is in production and cannot be edited." +msgstr "" + +#: stock/templates/stock/item_base.html:272 +msgid "Edit the stock item from the build view." +msgstr "" + +#: stock/templates/stock/item_base.html:287 +msgid "This stock item is allocated to Sales Order" +msgstr "" + +#: stock/templates/stock/item_base.html:295 +msgid "This stock item is allocated to Build Order" +msgstr "" + +#: stock/templates/stock/item_base.html:311 +msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" +msgstr "" + +#: stock/templates/stock/item_base.html:317 +msgid "previous page" +msgstr "" + +#: stock/templates/stock/item_base.html:317 +msgid "Navigate to previous serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:326 +msgid "next page" +msgstr "" + +#: stock/templates/stock/item_base.html:326 +msgid "Navigate to next serial number" +msgstr "" + +#: stock/templates/stock/item_base.html:340 +msgid "Available Quantity" +msgstr "" + +#: stock/templates/stock/item_base.html:398 +#: templates/js/translated/build.js:2365 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:413 +msgid "Tests" +msgstr "" + +#: stock/templates/stock/item_base.html:419 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:437 +#, python-format +msgid "This StockItem expired on %(item.expiry_date)s" +msgstr "" + +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:148 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:439 +#, python-format +msgid "This StockItem expires on %(item.expiry_date)s" +msgstr "" + +#: stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 +msgid "Stale" +msgstr "" + +#: stock/templates/stock/item_base.html:455 +msgid "No stocktake performed" +msgstr "" + +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1922 +msgid "stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:532 +msgid "Edit Stock Status" +msgstr "" + +#: stock/templates/stock/item_base.html:541 +msgid "Stock Item QR Code" +msgstr "" + +#: stock/templates/stock/item_base.html:552 +msgid "Link Barcode to Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:616 +msgid "Select one of the part variants listed below." +msgstr "" + +#: stock/templates/stock/item_base.html:619 +msgid "Warning" +msgstr "" + +#: stock/templates/stock/item_base.html:620 +msgid "This action cannot be easily undone" +msgstr "" + +#: stock/templates/stock/item_base.html:628 +msgid "Convert Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:662 +msgid "Return to Stock" +msgstr "" + +#: stock/templates/stock/item_serialize.html:5 +msgid "Create serialized items from this stock item." +msgstr "" + +#: stock/templates/stock/item_serialize.html:7 +msgid "Select quantity to serialize, and unique serial numbers." +msgstr "" + +#: stock/templates/stock/location.html:38 +msgid "Perform stocktake for this stock location" +msgstr "" + +#: stock/templates/stock/location.html:45 +msgid "Locate stock location" +msgstr "" + +#: stock/templates/stock/location.html:63 +msgid "Scan stock items into this location" +msgstr "" + +#: stock/templates/stock/location.html:63 +msgid "Scan In Stock Items" +msgstr "" + +#: stock/templates/stock/location.html:64 +msgid "Scan stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:64 +msgid "Scan In Container" +msgstr "" + +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 +msgid "Location actions" +msgstr "" + +#: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 +msgid "Delete location" +msgstr "" + +#: stock/templates/stock/location.html:138 +msgid "Top level stock location" +msgstr "" + +#: stock/templates/stock/location.html:144 +msgid "Location Owner" +msgstr "" + +#: stock/templates/stock/location.html:148 +msgid "You are not in the list of owners of this location. This stock location cannot be edited." +msgstr "" + +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 +#: stock/templates/stock/location_sidebar.html:5 +msgid "Sublocations" +msgstr "" + +#: stock/templates/stock/location.html:217 +msgid "Create new stock location" +msgstr "" + +#: stock/templates/stock/location.html:218 +msgid "New Location" +msgstr "" + +#: stock/templates/stock/location.html:289 +#: templates/js/translated/stock.js:2543 +msgid "stock location" +msgstr "" + +#: stock/templates/stock/location.html:317 +msgid "Scanned stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:390 +msgid "Stock Location QR Code" +msgstr "" + +#: stock/templates/stock/location.html:401 +msgid "Link Barcode to Stock Location" +msgstr "" + +#: stock/templates/stock/stock_app_base.html:16 +msgid "Loading..." +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:5 +msgid "Stock Tracking" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:8 +msgid "Allocations" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:20 +msgid "Child Items" +msgstr "" + +#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7 +msgid "Permission Denied" +msgstr "" + +#: templates/403.html:15 +msgid "You do not have permission to view this page." +msgstr "" + +#: templates/403_csrf.html:11 +msgid "Authentication Failure" +msgstr "" + +#: templates/403_csrf.html:14 +msgid "You have been logged out from InvenTree." +msgstr "" + +#: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 +#: templates/navbar.html:150 +msgid "Login" +msgstr "" + +#: templates/404.html:6 templates/404.html:12 +msgid "Page Not Found" +msgstr "" + +#: templates/404.html:15 +msgid "The requested page does not exist" +msgstr "" + +#: templates/500.html:6 templates/500.html:12 +msgid "Internal Server Error" +msgstr "" + +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" +msgstr "" + +#: templates/500.html:16 +msgid "Refer to the error log in the admin interface for further details" +msgstr "" + +#: templates/503.html:11 templates/503.html:33 +msgid "Site is in Maintenance" +msgstr "" + +#: templates/503.html:39 +msgid "The site is currently in maintenance and should be up again soon!" +msgstr "" + +#: templates/InvenTree/index.html:7 +msgid "Index" +msgstr "" + +#: templates/InvenTree/index.html:39 +msgid "Subscribed Parts" +msgstr "" + +#: templates/InvenTree/index.html:52 +msgid "Subscribed Categories" +msgstr "" + +#: templates/InvenTree/index.html:62 +msgid "Latest Parts" +msgstr "" + +#: templates/InvenTree/index.html:77 +msgid "BOM Waiting Validation" +msgstr "" + +#: templates/InvenTree/index.html:106 +msgid "Recently Updated" +msgstr "" + +#: templates/InvenTree/index.html:134 +msgid "Depleted Stock" +msgstr "" + +#: templates/InvenTree/index.html:148 +msgid "Required for Build Orders" +msgstr "" + +#: templates/InvenTree/index.html:156 +msgid "Expired Stock" +msgstr "" + +#: templates/InvenTree/index.html:172 +msgid "Stale Stock" +msgstr "" + +#: templates/InvenTree/index.html:199 +msgid "Build Orders In Progress" +msgstr "" + +#: templates/InvenTree/index.html:210 +msgid "Overdue Build Orders" +msgstr "" + +#: templates/InvenTree/index.html:230 +msgid "Outstanding Purchase Orders" +msgstr "" + +#: templates/InvenTree/index.html:241 +msgid "Overdue Purchase Orders" +msgstr "" + +#: templates/InvenTree/index.html:262 +msgid "Outstanding Sales Orders" +msgstr "" + +#: templates/InvenTree/index.html:273 +msgid "Overdue Sales Orders" +msgstr "" + +#: templates/InvenTree/index.html:299 +msgid "InvenTree News" +msgstr "" + +#: templates/InvenTree/index.html:301 +msgid "Current News" +msgstr "" + +#: templates/InvenTree/notifications/history.html:9 +msgid "Notification History" +msgstr "" + +#: templates/InvenTree/notifications/history.html:13 +#: templates/InvenTree/notifications/history.html:14 +#: templates/InvenTree/notifications/notifications.html:75 +msgid "Delete Notifications" +msgstr "" + +#: templates/InvenTree/notifications/inbox.html:9 +msgid "Pending Notifications" +msgstr "" + +#: templates/InvenTree/notifications/inbox.html:13 +#: templates/InvenTree/notifications/inbox.html:14 +msgid "Mark all as read" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:10 +#: templates/InvenTree/notifications/sidebar.html:5 +#: templates/InvenTree/settings/sidebar.html:17 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 +msgid "Notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:38 +msgid "No unread notifications found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:58 +msgid "No notification history found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:65 +msgid "Delete all read notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:89 +#: templates/js/translated/notification.js:85 +msgid "Delete Notification" +msgstr "" + +#: templates/InvenTree/notifications/sidebar.html:8 +msgid "Inbox" +msgstr "" + +#: templates/InvenTree/notifications/sidebar.html:10 +msgid "History" +msgstr "" + +#: templates/InvenTree/search.html:8 +msgid "Search Results" +msgstr "" + +#: templates/InvenTree/settings/barcode.html:8 +msgid "Barcode Settings" +msgstr "" + +#: templates/InvenTree/settings/build.html:8 +msgid "Build Order Settings" +msgstr "" + +#: templates/InvenTree/settings/category.html:7 +msgid "Category Settings" +msgstr "" + +#: templates/InvenTree/settings/global.html:8 +msgid "Server Settings" +msgstr "" + +#: templates/InvenTree/settings/label.html:8 +#: templates/InvenTree/settings/user_labels.html:9 +msgid "Label Settings" +msgstr "" + +#: templates/InvenTree/settings/login.html:8 +msgid "Login Settings" +msgstr "" + +#: templates/InvenTree/settings/login.html:15 +msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!" +msgstr "" + +#: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5 +#: templates/socialaccount/signup.html:5 +msgid "Signup" +msgstr "" + +#: templates/InvenTree/settings/login.html:34 +msgid "Single Sign On" +msgstr "" + +#: templates/InvenTree/settings/mixins/settings.html:5 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 +msgid "Settings" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:5 +msgid "URLs" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:8 +#, python-format +msgid "The Base-URL for this plugin is %(base)s." +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:23 +msgid "Open in new tab" +msgstr "" + +#: templates/InvenTree/settings/notifications.html:9 +#: templates/InvenTree/settings/user_notifications.html:9 +msgid "Notification Settings" +msgstr "" + +#: templates/InvenTree/settings/notifications.html:18 +msgid "Slug" +msgstr "" + +#: templates/InvenTree/settings/part.html:7 +msgid "Part Settings" +msgstr "" + +#: templates/InvenTree/settings/part.html:42 +msgid "Part Import" +msgstr "" + +#: templates/InvenTree/settings/part.html:46 +msgid "Import Part" +msgstr "" + +#: templates/InvenTree/settings/part_parameters.html:20 +msgid "Part Parameter Templates" +msgstr "" + +#: templates/InvenTree/settings/part_stocktake.html:7 +msgid "Stocktake Settings" +msgstr "" + +#: templates/InvenTree/settings/part_stocktake.html:25 +msgid "Stocktake Reports" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:9 +#: templates/InvenTree/settings/sidebar.html:64 +msgid "Plugin Settings" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:15 +msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." +msgstr "" + +#: templates/InvenTree/settings/plugin.html:35 +#: templates/InvenTree/settings/sidebar.html:66 +msgid "Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:41 +#: templates/js/translated/plugin.js:150 +msgid "Install Plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:49 +msgid "External plugins are not enabled for this InvenTree installation" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:64 +msgid "Plugin Error Stack" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:73 +msgid "Stage" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:75 +#: templates/js/translated/notification.js:76 +msgid "Message" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:16 +msgid "Plugin information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:85 +msgid "Version" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:47 +msgid "no version information supplied" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:61 +msgid "License" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:70 +msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running." +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:76 +msgid "Package information" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:82 +msgid "Installation method" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:85 +msgid "This plugin was installed as a package" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:87 +msgid "This plugin was found in a local server path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:93 +msgid "Installation path" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:100 +#: templates/js/translated/plugin.js:67 +#: templates/js/translated/table_filters.js:492 +msgid "Builtin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:101 +msgid "This is a builtin plugin which cannot be disabled" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:107 +#: templates/js/translated/plugin.js:71 +#: templates/js/translated/table_filters.js:496 +msgid "Sample" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:108 +msgid "This is a sample plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:113 +msgid "Commit Author" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:117 +#: templates/about.html:36 +msgid "Commit Date" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:121 +#: templates/about.html:29 +msgid "Commit Hash" +msgstr "" + +#: templates/InvenTree/settings/plugin_settings.html:125 +msgid "Commit Message" +msgstr "" + +#: templates/InvenTree/settings/po.html:7 +msgid "Purchase Order Settings" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:7 +msgid "Pricing Settings" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:34 +msgid "Exchange Rates" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:38 +msgid "Update Now" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:46 +#: templates/InvenTree/settings/pricing.html:50 +msgid "Last Update" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:50 +msgid "Never" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:8 +msgid "Project Code Settings" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:21 +#: templates/InvenTree/settings/sidebar.html:33 +msgid "Project Codes" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:25 +#: templates/InvenTree/settings/settings_staff_js.html:196 +msgid "New Project Code" +msgstr "" + +#: templates/InvenTree/settings/report.html:8 +#: templates/InvenTree/settings/user_reporting.html:9 +msgid "Report Settings" +msgstr "" + +#: templates/InvenTree/settings/returns.html:7 +msgid "Return Order Settings" +msgstr "" + +#: templates/InvenTree/settings/setting.html:31 +msgid "No value set" +msgstr "" + +#: templates/InvenTree/settings/setting.html:46 +msgid "Edit setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:58 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:60 +msgid "Edit Notification Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:63 +msgid "Edit Global Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:65 +msgid "Edit User Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:49 +msgid "Rate" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js:511 templates/js/translated/helpers.js:105 +#: templates/js/translated/part.js:389 templates/js/translated/pricing.js:629 +#: templates/js/translated/stock.js:245 users/models.py:393 +msgid "Delete" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:95 +msgid "Edit Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:110 +msgid "Delete Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:124 +msgid "New Custom Unit" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:140 +msgid "No project codes found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:156 +#: templates/InvenTree/settings/settings_staff_js.html:170 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:157 +#: templates/InvenTree/settings/settings_staff_js.html:183 +msgid "Delete Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:265 +msgid "No category parameter templates found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:288 +#: templates/js/translated/part.js:1642 +msgid "Edit Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:289 +#: templates/js/translated/part.js:1643 +msgid "Delete Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:306 +msgid "Edit Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:333 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:368 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:398 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:420 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:441 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/InvenTree/settings/settings_staff_js.html:460 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:447 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:470 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:480 +#: templates/InvenTree/settings/stock.html:35 +msgid "New Location Type" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:6 +#: templates/InvenTree/settings/user_settings.html:9 +msgid "User Settings" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:9 +msgid "Account" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:11 +msgid "Display" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:13 +msgid "Home Page" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:15 +#: templates/js/translated/forms.js:2064 templates/js/translated/tables.js:543 +#: templates/navbar.html:107 templates/search.html:8 +#: templates/search_form.html:6 templates/search_form.html:7 +msgid "Search" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:19 +#: templates/InvenTree/settings/sidebar.html:43 +msgid "Reporting" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:24 +msgid "Global Settings" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9 +msgid "Server" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:41 +msgid "Labels" +msgstr "" + +#: templates/InvenTree/settings/sidebar.html:45 +msgid "Categories" +msgstr "" + +#: templates/InvenTree/settings/so.html:7 +msgid "Sales Order Settings" +msgstr "" + +#: templates/InvenTree/settings/stock.html:7 +msgid "Stock Settings" +msgstr "" + +#: templates/InvenTree/settings/stock.html:31 +msgid "Stock Location Types" +msgstr "" + +#: templates/InvenTree/settings/user.html:13 +msgid "Account Settings" +msgstr "" + +#: templates/InvenTree/settings/user.html:19 +#: templates/account/password_reset_from_key.html:4 +#: templates/account/password_reset_from_key.html:7 +msgid "Change Password" +msgstr "" + +#: templates/InvenTree/settings/user.html:33 +msgid "Username" +msgstr "" + +#: templates/InvenTree/settings/user.html:37 +msgid "First Name" +msgstr "" + +#: templates/InvenTree/settings/user.html:41 +msgid "Last Name" +msgstr "" + +#: templates/InvenTree/settings/user.html:55 +msgid "The following email addresses are associated with your account:" +msgstr "" + +#: templates/InvenTree/settings/user.html:76 +msgid "Verified" +msgstr "" + +#: templates/InvenTree/settings/user.html:78 +msgid "Unverified" +msgstr "" + +#: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 +msgid "Primary" +msgstr "" + +#: templates/InvenTree/settings/user.html:86 +msgid "Make Primary" +msgstr "" + +#: templates/InvenTree/settings/user.html:87 +msgid "Re-send Verification" +msgstr "" + +#: templates/InvenTree/settings/user.html:96 +msgid "Warning:" +msgstr "" + +#: templates/InvenTree/settings/user.html:97 +msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc." +msgstr "" + +#: templates/InvenTree/settings/user.html:105 +msgid "Add Email Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:110 +msgid "Add Email" +msgstr "" + +#: templates/InvenTree/settings/user.html:120 +msgid "Multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:125 +msgid "You have these factors available:" +msgstr "" + +#: templates/InvenTree/settings/user.html:135 +msgid "TOTP" +msgstr "" + +#: templates/InvenTree/settings/user.html:141 +msgid "Static" +msgstr "" + +#: templates/InvenTree/settings/user.html:150 +msgid "Multifactor authentication is not configured for your account" +msgstr "" + +#: templates/InvenTree/settings/user.html:157 +msgid "Change factors" +msgstr "" + +#: templates/InvenTree/settings/user.html:158 +msgid "Setup multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:160 +msgid "Remove multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:168 +msgid "Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:174 +msgid "Log out active sessions (except this one)" +msgstr "" + +#: templates/InvenTree/settings/user.html:175 +msgid "Log Out Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:184 +msgid "unknown on unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:185 +msgid "unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:189 +msgid "IP Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:190 +msgid "Device" +msgstr "" + +#: templates/InvenTree/settings/user.html:191 +msgid "Last Activity" +msgstr "" + +#: templates/InvenTree/settings/user.html:204 +#, python-format +msgid "%(time)s ago (this session)" +msgstr "" + +#: templates/InvenTree/settings/user.html:206 +#, python-format +msgid "%(time)s ago" +msgstr "" + +#: templates/InvenTree/settings/user.html:218 +msgid "Do you really want to remove the selected email address?" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:9 +msgid "Display Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:29 +msgid "Theme Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:39 +msgid "Select theme" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:50 +msgid "Set Theme" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:58 +msgid "Language Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:67 +msgid "Select language" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:83 +#, python-format +msgid "%(lang_translated)s%% translated" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:85 +msgid "No translations available" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:92 +msgid "Set Language" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:95 +msgid "Some languages are not complete" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:97 +msgid "Show only sufficient" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:99 +msgid "and hidden." +msgstr "" + +#: templates/InvenTree/settings/user_display.html:99 +msgid "Show them too" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:106 +msgid "Help the translation efforts!" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:107 +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgstr "" + +#: templates/InvenTree/settings/user_display.html:108 +msgid "InvenTree Translation Project" +msgstr "" + +#: templates/InvenTree/settings/user_homepage.html:9 +msgid "Home Page Settings" +msgstr "" + +#: templates/InvenTree/settings/user_search.html:9 +msgid "Search Settings" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:9 +msgid "Single Sign On Accounts" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:16 +msgid "You can sign in to your account using any of the following third party accounts:" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:52 +msgid "There are no social network accounts connected to this account." +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:58 +msgid "Add SSO Account" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:67 +msgid "Single Sign On is not enabled for this server" +msgstr "" + +#: templates/about.html:9 +msgid "InvenTree Version" +msgstr "" + +#: templates/about.html:14 +msgid "Development Version" +msgstr "" + +#: templates/about.html:17 +msgid "Up to Date" +msgstr "" + +#: templates/about.html:19 +msgid "Update Available" +msgstr "" + +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 +msgid "InvenTree Documentation" +msgstr "" + +#: templates/about.html:54 +msgid "API Version" +msgstr "" + +#: templates/about.html:59 +msgid "Python Version" +msgstr "" + +#: templates/about.html:64 +msgid "Django Version" +msgstr "" + +#: templates/about.html:69 +msgid "View Code on GitHub" +msgstr "" + +#: templates/about.html:74 +msgid "Credits" +msgstr "" + +#: templates/about.html:79 +msgid "Mobile App" +msgstr "" + +#: templates/about.html:84 +msgid "Submit Bug Report" +msgstr "" + +#: templates/about.html:91 templates/clip.html:4 +#: templates/js/translated/helpers.js:585 +msgid "copy to clipboard" +msgstr "" + +#: templates/about.html:91 +msgid "copy version information" +msgstr "" + +#: templates/account/base.html:66 templates/navbar.html:17 +msgid "InvenTree logo" +msgstr "" + +#: templates/account/email_confirm.html:6 +#: templates/account/email_confirm.html:9 +msgid "Confirm Email Address" +msgstr "" + +#: templates/account/email_confirm.html:15 +#, python-format +msgid "Please confirm that %(email)s is an email address for user %(user_display)s." +msgstr "" + +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:746 +msgid "Confirm" +msgstr "" + +#: templates/account/email_confirm.html:29 +#, python-format +msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request." +msgstr "" + +#: templates/account/login.html:6 templates/account/login.html:17 +#: templates/account/login.html:38 templates/socialaccount/login.html:5 +msgid "Sign In" +msgstr "" + +#: templates/account/login.html:21 +msgid "Not a member?" +msgstr "" + +#: templates/account/login.html:23 templates/account/signup.html:11 +#: templates/account/signup.html:22 templates/socialaccount/signup.html:8 +#: templates/socialaccount/signup.html:20 +msgid "Sign Up" +msgstr "" + +#: templates/account/login.html:45 +msgid "Forgot Password?" +msgstr "" + +#: templates/account/login.html:53 +msgid "or log in with" +msgstr "" + +#: templates/account/logout.html:5 templates/account/logout.html:8 +#: templates/account/logout.html:20 +msgid "Sign Out" +msgstr "" + +#: templates/account/logout.html:10 +msgid "Are you sure you want to sign out?" +msgstr "" + +#: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +msgid "Return to Site" +msgstr "" + +#: templates/account/password_reset.html:5 +#: templates/account/password_reset.html:12 +msgid "Password Reset" +msgstr "" + +#: templates/account/password_reset.html:18 +msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." +msgstr "" + +#: templates/account/password_reset.html:23 +msgid "Reset My Password" +msgstr "" + +#: templates/account/password_reset.html:27 templates/account/signup.html:37 +msgid "This function is currently disabled. Please contact an administrator." +msgstr "" + +#: templates/account/password_reset_from_key.html:7 +msgid "Bad Token" +msgstr "" + +#: templates/account/password_reset_from_key.html:11 +#, python-format +msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." +msgstr "" + +#: templates/account/password_reset_from_key.html:18 +msgid "Change password" +msgstr "" + +#: templates/account/password_reset_from_key.html:22 +msgid "Your password is now changed." +msgstr "" + +#: templates/account/signup.html:13 +#, python-format +msgid "Already have an account? Then please sign in." +msgstr "" + +#: templates/account/signup.html:28 +msgid "Use a SSO-provider for signup" +msgstr "" + +#: templates/account/signup_closed.html:5 +#: templates/account/signup_closed.html:8 +msgid "Sign Up Closed" +msgstr "" + +#: templates/account/signup_closed.html:10 +msgid "Sign up is currently closed." +msgstr "" + +#: templates/account/signup_closed.html:15 +#: templates/socialaccount/authentication_error.html:19 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:27 +msgid "Return to login page" +msgstr "" + +#: templates/admin_button.html:8 +msgid "View in administration panel" +msgstr "" + +#: templates/allauth_2fa/authenticate.html:5 +msgid "Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/authenticate.html:13 +msgid "Authenticate" +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:6 +msgid "Two-Factor Authentication Backup Tokens" +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:17 +msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones." +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:20 +msgid "No backup tokens are available. Press the button below to generate some." +msgstr "" + +#: templates/allauth_2fa/backup_tokens.html:28 +msgid "Generate Tokens" +msgstr "" + +#: templates/allauth_2fa/remove.html:6 +msgid "Disable Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/remove.html:9 +msgid "Are you sure?" +msgstr "" + +#: templates/allauth_2fa/remove.html:17 +msgid "Disable 2FA" +msgstr "" + +#: templates/allauth_2fa/setup.html:6 +msgid "Setup Two-Factor Authentication" +msgstr "" + +#: templates/allauth_2fa/setup.html:10 +msgid "Step 1" +msgstr "" + +#: templates/allauth_2fa/setup.html:14 +msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)." +msgstr "" + +#: templates/allauth_2fa/setup.html:23 +msgid "Step 2" +msgstr "" + +#: templates/allauth_2fa/setup.html:27 +msgid "Input a token generated by the app:" +msgstr "" + +#: templates/allauth_2fa/setup.html:37 +msgid "Verify" +msgstr "" + +#: templates/attachment_button.html:4 templates/js/translated/attachment.js:70 +msgid "Add Link" +msgstr "" + +#: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 +msgid "Add Attachment" +msgstr "" + +#: templates/barcode_data.html:5 +msgid "Barcode Identifier" +msgstr "" + +#: templates/base.html:103 +msgid "Server Restart Required" +msgstr "" + +#: templates/base.html:106 +msgid "A configuration option has been changed which requires a server restart" +msgstr "" + +#: templates/base.html:106 templates/base.html:116 +msgid "Contact your system administrator for further information" +msgstr "" + +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + +#: templates/email/build_order_completed.html:9 +#: templates/email/new_order_assigned.html:9 +#: templates/email/overdue_build_order.html:9 +#: templates/email/overdue_purchase_order.html:9 +#: templates/email/overdue_sales_order.html:9 +#: templates/email/purchase_order_received.html:9 +#: templates/email/return_order_received.html:9 +msgid "Click on the following link to view this order" +msgstr "" + +#: templates/email/build_order_required_stock.html:7 +msgid "Stock is required for the following build order" +msgstr "" + +#: templates/email/build_order_required_stock.html:8 +#, python-format +msgid "Build order %(build)s - building %(quantity)s x %(part)s" +msgstr "" + +#: templates/email/build_order_required_stock.html:10 +msgid "Click on the following link to view this build order" +msgstr "" + +#: templates/email/build_order_required_stock.html:14 +msgid "The following parts are low on required stock" +msgstr "" + +#: templates/email/build_order_required_stock.html:18 +#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2544 +msgid "Required Quantity" +msgstr "" + +#: templates/email/build_order_required_stock.html:38 +#: templates/email/low_stock_notification.html:30 +msgid "You are receiving this email because you are subscribed to notifications for this part " +msgstr "" + +#: templates/email/low_stock_notification.html:9 +msgid "Click on the following link to view this part" +msgstr "" + +#: templates/email/low_stock_notification.html:18 +#: templates/js/translated/part.js:3182 +msgid "Minimum Quantity" +msgstr "" + +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 +msgid "No Response" +msgstr "" + +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 +msgid "No response from the InvenTree server" +msgstr "" + +#: templates/js/translated/api.js:232 +msgid "Error 400: Bad request" +msgstr "" + +#: templates/js/translated/api.js:233 +msgid "API request returned error code 400" +msgstr "" + +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 +msgid "Error 401: Not Authenticated" +msgstr "" + +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 +msgid "Authentication credentials not supplied" +msgstr "" + +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 +msgid "Error 403: Permission Denied" +msgstr "" + +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 +msgid "You do not have the required permissions to access this function" +msgstr "" + +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 +msgid "Error 404: Resource Not Found" +msgstr "" + +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 +msgid "The requested resource could not be located on the server" +msgstr "" + +#: templates/js/translated/api.js:252 +msgid "Error 405: Method Not Allowed" +msgstr "" + +#: templates/js/translated/api.js:253 +msgid "HTTP method not allowed at URL" +msgstr "" + +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 +msgid "Error 408: Timeout" +msgstr "" + +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 +msgid "Connection timeout while requesting data from server" +msgstr "" + +#: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 +msgid "Error code" +msgstr "" + +#: templates/js/translated/attachment.js:114 +msgid "All selected attachments will be deleted" +msgstr "" + +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 +msgid "No attachments found" +msgstr "" + +#: templates/js/translated/attachment.js:315 +msgid "Edit Attachment" +msgstr "" + +#: templates/js/translated/attachment.js:346 +msgid "Upload Date" +msgstr "" + +#: templates/js/translated/attachment.js:366 +msgid "Edit attachment" +msgstr "" + +#: templates/js/translated/attachment.js:374 +msgid "Delete attachment" +msgstr "" + +#: templates/js/translated/barcode.js:43 +msgid "Scan barcode data here using barcode scanner" +msgstr "" + +#: templates/js/translated/barcode.js:45 +msgid "Enter barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:59 +msgid "Scan barcode using connected webcam" +msgstr "" + +#: templates/js/translated/barcode.js:138 +msgid "Enter optional notes for stock transfer" +msgstr "" + +#: templates/js/translated/barcode.js:139 +msgid "Enter notes" +msgstr "" + +#: templates/js/translated/barcode.js:188 +msgid "Server error" +msgstr "" + +#: templates/js/translated/barcode.js:217 +msgid "Unknown response from server" +msgstr "" + +#: templates/js/translated/barcode.js:252 +#: templates/js/translated/modals.js:1120 +msgid "Invalid server response" +msgstr "" + +#: templates/js/translated/barcode.js:372 +msgid "Scan barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:420 templates/navbar.html:114 +msgid "Scan Barcode" +msgstr "" + +#: templates/js/translated/barcode.js:440 +msgid "No URL in response" +msgstr "" + +#: templates/js/translated/barcode.js:481 +msgid "This will remove the link to the associated barcode" +msgstr "" + +#: templates/js/translated/barcode.js:487 +msgid "Unlink" +msgstr "" + +#: templates/js/translated/barcode.js:550 templates/js/translated/stock.js:1155 +msgid "Remove stock item" +msgstr "" + +#: templates/js/translated/barcode.js:593 +msgid "Scan Stock Items Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:595 +msgid "Scan stock item barcode to check in to this location" +msgstr "" + +#: templates/js/translated/barcode.js:598 +#: templates/js/translated/barcode.js:795 +msgid "Check In" +msgstr "" + +#: templates/js/translated/barcode.js:630 +msgid "No barcode provided" +msgstr "" + +#: templates/js/translated/barcode.js:670 +msgid "Stock Item already scanned" +msgstr "" + +#: templates/js/translated/barcode.js:674 +msgid "Stock Item already in this location" +msgstr "" + +#: templates/js/translated/barcode.js:681 +msgid "Added stock item" +msgstr "" + +#: templates/js/translated/barcode.js:690 +msgid "Barcode does not match valid stock item" +msgstr "" + +#: templates/js/translated/barcode.js:709 +msgid "Scan Stock Container Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:711 +msgid "Scan stock container barcode to check in to this location" +msgstr "" + +#: templates/js/translated/barcode.js:745 +msgid "Barcode does not match valid stock location" +msgstr "" + +#: templates/js/translated/barcode.js:789 +msgid "Check Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:858 +#: templates/js/translated/barcode.js:867 +msgid "Barcode does not match a valid location" +msgstr "" + +#: templates/js/translated/bom.js:78 +msgid "Create BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:132 +msgid "Display row data" +msgstr "" + +#: templates/js/translated/bom.js:188 +msgid "Row Data" +msgstr "" + +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js:802 templates/modals.html:15 +#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50 +msgid "Close" +msgstr "" + +#: templates/js/translated/bom.js:306 +msgid "Download BOM Template" +msgstr "" + +#: templates/js/translated/bom.js:351 +msgid "Multi Level BOM" +msgstr "" + +#: templates/js/translated/bom.js:352 +msgid "Include BOM data for subassemblies" +msgstr "" + +#: templates/js/translated/bom.js:357 +msgid "Levels" +msgstr "" + +#: templates/js/translated/bom.js:358 +msgid "Select maximum number of BOM levels to export (0 = all levels)" +msgstr "" + +#: templates/js/translated/bom.js:365 +msgid "Include Alternative Parts" +msgstr "" + +#: templates/js/translated/bom.js:366 +msgid "Include alternative parts in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:371 +msgid "Include Parameter Data" +msgstr "" + +#: templates/js/translated/bom.js:372 +msgid "Include part parameter data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:377 +msgid "Include Stock Data" +msgstr "" + +#: templates/js/translated/bom.js:378 +msgid "Include part stock data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:383 +msgid "Include Manufacturer Data" +msgstr "" + +#: templates/js/translated/bom.js:384 +msgid "Include part manufacturer data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:389 +msgid "Include Supplier Data" +msgstr "" + +#: templates/js/translated/bom.js:390 +msgid "Include part supplier data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:395 +msgid "Include Pricing Data" +msgstr "" + +#: templates/js/translated/bom.js:396 +msgid "Include part pricing data in exported BOM" +msgstr "" + +#: templates/js/translated/bom.js:591 +msgid "Remove substitute part" +msgstr "" + +#: templates/js/translated/bom.js:645 +msgid "Select and add a new substitute part using the input below" +msgstr "" + +#: templates/js/translated/bom.js:656 +msgid "Are you sure you wish to remove this substitute part link?" +msgstr "" + +#: templates/js/translated/bom.js:662 +msgid "Remove Substitute Part" +msgstr "" + +#: templates/js/translated/bom.js:701 +msgid "Add Substitute" +msgstr "" + +#: templates/js/translated/bom.js:702 +msgid "Edit BOM Item Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:764 +msgid "All selected BOM items will be deleted" +msgstr "" + +#: templates/js/translated/bom.js:780 +msgid "Delete selected BOM items?" +msgstr "" + +#: templates/js/translated/bom.js:826 +msgid "Delete items" +msgstr "" + +#: templates/js/translated/bom.js:936 +msgid "Load BOM for subassembly" +msgstr "" + +#: templates/js/translated/bom.js:946 +msgid "Substitutes Available" +msgstr "" + +#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2488 +msgid "Variant stock allowed" +msgstr "" + +#: templates/js/translated/bom.js:1014 +msgid "Substitutes" +msgstr "" + +#: templates/js/translated/bom.js:1139 +msgid "BOM pricing is complete" +msgstr "" + +#: templates/js/translated/bom.js:1144 +msgid "BOM pricing is incomplete" +msgstr "" + +#: templates/js/translated/bom.js:1151 +msgid "No pricing available" +msgstr "" + +#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2582 +#: templates/js/translated/sales_order.js:1907 +msgid "No Stock Available" +msgstr "" + +#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2586 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2588 +#: templates/js/translated/part.js:1253 +#: templates/js/translated/sales_order.js:1904 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2590 +msgid "Includes substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2573 +msgid "Consumable item" +msgstr "" + +#: templates/js/translated/bom.js:1279 +msgid "Validate BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1281 +msgid "This line has been validated" +msgstr "" + +#: templates/js/translated/bom.js:1283 +msgid "Edit substitute parts" +msgstr "" + +#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +msgid "Edit BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1287 +msgid "Delete BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:1307 +msgid "View BOM" +msgstr "" + +#: templates/js/translated/bom.js:1391 +msgid "No BOM items found" +msgstr "" + +#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2473 +msgid "Required Part" +msgstr "" + +#: templates/js/translated/bom.js:1677 +msgid "Inherited from parent BOM" +msgstr "" + +#: templates/js/translated/build.js:139 +msgid "Edit Build Order" +msgstr "" + +#: templates/js/translated/build.js:182 +msgid "Create Build Order" +msgstr "" + +#: templates/js/translated/build.js:214 +msgid "Cancel Build Order" +msgstr "" + +#: templates/js/translated/build.js:223 +msgid "Are you sure you wish to cancel this build?" +msgstr "" + +#: templates/js/translated/build.js:229 +msgid "Stock items have been allocated to this build order" +msgstr "" + +#: templates/js/translated/build.js:236 +msgid "There are incomplete outputs remaining for this build order" +msgstr "" + +#: templates/js/translated/build.js:288 +msgid "Build order is ready to be completed" +msgstr "" + +#: templates/js/translated/build.js:296 +msgid "This build order cannot be completed as there are incomplete outputs" +msgstr "" + +#: templates/js/translated/build.js:301 +msgid "Build Order is incomplete" +msgstr "" + +#: templates/js/translated/build.js:319 +msgid "Complete Build Order" +msgstr "" + +#: templates/js/translated/build.js:360 templates/js/translated/stock.js:119 +#: templates/js/translated/stock.js:294 +msgid "Next available serial number" +msgstr "" + +#: templates/js/translated/build.js:362 templates/js/translated/stock.js:121 +#: templates/js/translated/stock.js:296 +msgid "Latest serial number" +msgstr "" + +#: templates/js/translated/build.js:371 +msgid "The Bill of Materials contains trackable parts" +msgstr "" + +#: templates/js/translated/build.js:372 +msgid "Build outputs must be generated individually" +msgstr "" + +#: templates/js/translated/build.js:380 +msgid "Trackable parts can have serial numbers specified" +msgstr "" + +#: templates/js/translated/build.js:381 +msgid "Enter serial numbers to generate multiple single build outputs" +msgstr "" + +#: templates/js/translated/build.js:388 +msgid "Create Build Output" +msgstr "" + +#: templates/js/translated/build.js:419 +msgid "Allocate stock items to this build output" +msgstr "" + +#: templates/js/translated/build.js:427 +msgid "Deallocate stock from build output" +msgstr "" + +#: templates/js/translated/build.js:436 +msgid "Complete build output" +msgstr "" + +#: templates/js/translated/build.js:444 +msgid "Scrap build output" +msgstr "" + +#: templates/js/translated/build.js:451 +msgid "Delete build output" +msgstr "" + +#: templates/js/translated/build.js:471 +msgid "Are you sure you wish to deallocate the selected stock items from this build?" +msgstr "" + +#: templates/js/translated/build.js:489 +msgid "Deallocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:575 templates/js/translated/build.js:703 +#: templates/js/translated/build.js:829 +msgid "Select Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:576 templates/js/translated/build.js:704 +#: templates/js/translated/build.js:830 +msgid "At least one build output must be selected" +msgstr "" + +#: templates/js/translated/build.js:590 +msgid "Selected build outputs will be marked as complete" +msgstr "" + +#: templates/js/translated/build.js:594 templates/js/translated/build.js:728 +#: templates/js/translated/build.js:852 +msgid "Output" +msgstr "" + +#: templates/js/translated/build.js:622 +msgid "Complete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:719 +msgid "Selected build outputs will be marked as scrapped" +msgstr "" + +#: templates/js/translated/build.js:721 +msgid "Scrapped output are marked as rejected" +msgstr "" + +#: templates/js/translated/build.js:722 +msgid "Allocated stock items will no longer be available" +msgstr "" + +#: templates/js/translated/build.js:723 +msgid "The completion status of the build order will not be adjusted" +msgstr "" + +#: templates/js/translated/build.js:754 +msgid "Scrap Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:844 +msgid "Selected build outputs will be deleted" +msgstr "" + +#: templates/js/translated/build.js:846 +msgid "Build output data will be permanently deleted" +msgstr "" + +#: templates/js/translated/build.js:847 +msgid "Allocated stock items will be returned to stock" +msgstr "" + +#: templates/js/translated/build.js:865 +msgid "Delete Build Outputs" +msgstr "" + +#: templates/js/translated/build.js:952 +msgid "No build order allocations found" +msgstr "" + +#: templates/js/translated/build.js:981 templates/js/translated/build.js:2329 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:995 +msgid "Location not specified" +msgstr "" + +#: templates/js/translated/build.js:1017 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1035 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1053 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1107 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1108 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1112 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1281 +msgid "No active build outputs found" +msgstr "" + +#: templates/js/translated/build.js:1374 +msgid "Allocated Lines" +msgstr "" + +#: templates/js/translated/build.js:1388 +msgid "Required Tests" +msgstr "" + +#: templates/js/translated/build.js:1560 +#: templates/js/translated/purchase_order.js:627 +#: templates/js/translated/sales_order.js:1168 +msgid "Select Parts" +msgstr "" + +#: templates/js/translated/build.js:1561 +#: templates/js/translated/sales_order.js:1169 +msgid "You must select at least one part to allocate" +msgstr "" + +#: templates/js/translated/build.js:1624 +#: templates/js/translated/sales_order.js:1118 +msgid "Specify stock allocation quantity" +msgstr "" + +#: templates/js/translated/build.js:1701 +msgid "All Parts Allocated" +msgstr "" + +#: templates/js/translated/build.js:1702 +msgid "All selected parts have been fully allocated" +msgstr "" + +#: templates/js/translated/build.js:1716 +#: templates/js/translated/sales_order.js:1183 +msgid "Select source location (leave blank to take from all locations)" +msgstr "" + +#: templates/js/translated/build.js:1744 +msgid "Allocate Stock Items to Build Order" +msgstr "" + +#: templates/js/translated/build.js:1755 +#: templates/js/translated/sales_order.js:1280 +msgid "No matching stock locations" +msgstr "" + +#: templates/js/translated/build.js:1828 +#: templates/js/translated/sales_order.js:1359 +msgid "No matching stock items" +msgstr "" + +#: templates/js/translated/build.js:1925 +msgid "Automatic Stock Allocation" +msgstr "" + +#: templates/js/translated/build.js:1926 +msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" +msgstr "" + +#: templates/js/translated/build.js:1928 +msgid "If a location is specified, stock will only be allocated from that location" +msgstr "" + +#: templates/js/translated/build.js:1929 +msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" +msgstr "" + +#: templates/js/translated/build.js:1930 +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:1961 +msgid "Allocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:2067 +msgid "No builds matching query" +msgstr "" + +#: templates/js/translated/build.js:2102 templates/js/translated/build.js:2467 +#: templates/js/translated/forms.js:2060 templates/js/translated/forms.js:2076 +#: templates/js/translated/part.js:2311 templates/js/translated/part.js:2737 +#: templates/js/translated/stock.js:1953 templates/js/translated/stock.js:2681 +msgid "Select" +msgstr "" + +#: templates/js/translated/build.js:2116 +msgid "Build order is overdue" +msgstr "" + +#: templates/js/translated/build.js:2162 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2198 templates/js/translated/stock.js:3013 +msgid "No user information" +msgstr "" + +#: templates/js/translated/build.js:2213 +msgid "group" +msgstr "" + +#: templates/js/translated/build.js:2374 +#: templates/js/translated/sales_order.js:1643 +msgid "Edit stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2375 +#: templates/js/translated/sales_order.js:1644 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2390 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2402 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2443 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2444 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2462 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2492 templates/js/translated/part.js:787 +#: templates/js/translated/part.js:1199 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2527 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2576 +#: templates/js/translated/sales_order.js:1914 +msgid "Insufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2578 +#: templates/js/translated/sales_order.js:1912 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2625 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2630 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2637 +#: templates/js/translated/sales_order.js:2013 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2642 templates/js/translated/stock.js:1836 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2646 +#: templates/js/translated/sales_order.js:2007 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2650 +msgid "Remove stock allocation" +msgstr "" + +#: templates/js/translated/company.js:98 +msgid "Add Manufacturer" +msgstr "" + +#: templates/js/translated/company.js:111 +#: templates/js/translated/company.js:213 +msgid "Add Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:132 +msgid "Edit Manufacturer Part" +msgstr "" + +#: templates/js/translated/company.js:201 +#: templates/js/translated/purchase_order.js:93 +msgid "Add Supplier" +msgstr "" + +#: templates/js/translated/company.js:243 +#: templates/js/translated/purchase_order.js:349 +msgid "Add Supplier Part" +msgstr "" + +#: templates/js/translated/company.js:344 +msgid "All selected supplier parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:360 +msgid "Delete Supplier Parts" +msgstr "" + +#: templates/js/translated/company.js:465 +msgid "Add new Company" +msgstr "" + +#: templates/js/translated/company.js:536 +msgid "Parts Supplied" +msgstr "" + +#: templates/js/translated/company.js:545 +msgid "Parts Manufactured" +msgstr "" + +#: templates/js/translated/company.js:560 +msgid "No company information found" +msgstr "" + +#: templates/js/translated/company.js:609 +msgid "Create New Contact" +msgstr "" + +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 +msgid "Edit Contact" +msgstr "" + +#: templates/js/translated/company.js:662 +msgid "All selected contacts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 +msgid "Role" +msgstr "" + +#: templates/js/translated/company.js:676 +msgid "Delete Contacts" +msgstr "" + +#: templates/js/translated/company.js:707 +msgid "No contacts found" +msgstr "" + +#: templates/js/translated/company.js:720 +msgid "Phone Number" +msgstr "" + +#: templates/js/translated/company.js:726 +msgid "Email Address" +msgstr "" + +#: templates/js/translated/company.js:752 +msgid "Delete Contact" +msgstr "" + +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 +msgid "All selected manufacturer parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1117 +msgid "Delete Manufacturer Parts" +msgstr "" + +#: templates/js/translated/company.js:1151 +msgid "All selected parameters will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1165 +msgid "Delete Parameters" +msgstr "" + +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2239 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 +msgid "No manufacturer parts found" +msgstr "" + +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:795 +#: templates/js/translated/part.js:1207 +msgid "Template part" +msgstr "" + +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:799 +#: templates/js/translated/part.js:1211 +msgid "Assembled part" +msgstr "" + +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1461 +msgid "No parameters found" +msgstr "" + +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1524 +msgid "Edit parameter" +msgstr "" + +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1525 +msgid "Delete parameter" +msgstr "" + +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1430 +msgid "Edit Parameter" +msgstr "" + +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1546 +msgid "Delete Parameter" +msgstr "" + +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 +msgid "No supplier parts found" +msgstr "" + +#: templates/js/translated/company.js:1654 +msgid "Base Units" +msgstr "" + +#: templates/js/translated/company.js:1684 +msgid "Availability" +msgstr "" + +#: templates/js/translated/company.js:1715 +msgid "Edit supplier part" +msgstr "" + +#: templates/js/translated/company.js:1716 +msgid "Delete supplier part" +msgstr "" + +#: templates/js/translated/company.js:1769 +#: templates/js/translated/pricing.js:694 +msgid "Delete Price Break" +msgstr "" + +#: templates/js/translated/company.js:1779 +#: templates/js/translated/pricing.js:712 +msgid "Edit Price Break" +msgstr "" + +#: templates/js/translated/company.js:1794 +msgid "No price break information found" +msgstr "" + +#: templates/js/translated/company.js:1823 +msgid "Last updated" +msgstr "" + +#: templates/js/translated/company.js:1830 +msgid "Edit price break" +msgstr "" + +#: templates/js/translated/company.js:1831 +msgid "Delete price break" +msgstr "" + +#: templates/js/translated/filters.js:186 +#: templates/js/translated/filters.js:672 +msgid "true" +msgstr "" + +#: templates/js/translated/filters.js:190 +#: templates/js/translated/filters.js:673 +msgid "false" +msgstr "" + +#: templates/js/translated/filters.js:214 +msgid "Select filter" +msgstr "" + +#: templates/js/translated/filters.js:437 +msgid "Print Labels" +msgstr "" + +#: templates/js/translated/filters.js:441 +msgid "Print Reports" +msgstr "" + +#: templates/js/translated/filters.js:453 +msgid "Download table data" +msgstr "" + +#: templates/js/translated/filters.js:460 +msgid "Reload table data" +msgstr "" + +#: templates/js/translated/filters.js:469 +msgid "Add new filter" +msgstr "" + +#: templates/js/translated/filters.js:477 +msgid "Clear all filters" +msgstr "" + +#: templates/js/translated/filters.js:582 +msgid "Create filter" +msgstr "" + +#: templates/js/translated/forms.js:374 templates/js/translated/forms.js:389 +#: templates/js/translated/forms.js:403 templates/js/translated/forms.js:417 +msgid "Action Prohibited" +msgstr "" + +#: templates/js/translated/forms.js:376 +msgid "Create operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:391 +msgid "Update operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:405 +msgid "Delete operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:419 +msgid "View operation not allowed" +msgstr "" + +#: templates/js/translated/forms.js:772 +msgid "Keep this form open" +msgstr "" + +#: templates/js/translated/forms.js:874 +msgid "Enter a valid number" +msgstr "" + +#: templates/js/translated/forms.js:1422 templates/modals.html:19 +#: templates/modals.html:43 +msgid "Form errors exist" +msgstr "" + +#: templates/js/translated/forms.js:1876 +msgid "No results found" +msgstr "" + +#: templates/js/translated/forms.js:2180 templates/js/translated/search.js:239 +msgid "Searching" +msgstr "" + +#: templates/js/translated/forms.js:2394 +msgid "Clear input" +msgstr "" + +#: templates/js/translated/forms.js:2851 +msgid "File Column" +msgstr "" + +#: templates/js/translated/forms.js:2851 +msgid "Field Name" +msgstr "" + +#: templates/js/translated/forms.js:2863 +msgid "Select Columns" +msgstr "" + +#: templates/js/translated/helpers.js:77 +msgid "YES" +msgstr "" + +#: templates/js/translated/helpers.js:80 +msgid "NO" +msgstr "" + +#: templates/js/translated/helpers.js:93 +msgid "True" +msgstr "" + +#: templates/js/translated/helpers.js:94 +msgid "False" +msgstr "" + +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" +msgstr "" + +#: templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 +msgid "Select Items" +msgstr "" + +#: templates/js/translated/label.js:54 +msgid "No items selected for printing" +msgstr "" + +#: templates/js/translated/label.js:72 +msgid "No Labels Found" +msgstr "" + +#: templates/js/translated/label.js:73 +msgid "No label templates found which match the selected items" +msgstr "" + +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:143 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:144 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:150 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:163 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:182 +msgid "Labels sent to printer" +msgstr "" + +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 +msgid "Cancel" +msgstr "" + +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 +#: templates/modals.html:28 templates/modals.html:51 +msgid "Submit" +msgstr "" + +#: templates/js/translated/modals.js:156 +msgid "Form Title" +msgstr "" + +#: templates/js/translated/modals.js:445 +msgid "Waiting for server..." +msgstr "" + +#: templates/js/translated/modals.js:596 +msgid "Show Error Information" +msgstr "" + +#: templates/js/translated/modals.js:682 +msgid "Accept" +msgstr "" + +#: templates/js/translated/modals.js:740 +msgid "Loading Data" +msgstr "" + +#: templates/js/translated/modals.js:1011 +msgid "Invalid response from server" +msgstr "" + +#: templates/js/translated/modals.js:1011 +msgid "Form data missing from server response" +msgstr "" + +#: templates/js/translated/modals.js:1023 +msgid "Error posting form data" +msgstr "" + +#: templates/js/translated/modals.js:1120 +msgid "JSON response missing form data" +msgstr "" + +#: templates/js/translated/modals.js:1135 +msgid "Error 400: Bad Request" +msgstr "" + +#: templates/js/translated/modals.js:1136 +msgid "Server returned error code 400" +msgstr "" + +#: templates/js/translated/modals.js:1159 +msgid "Error requesting form data" +msgstr "" + +#: templates/js/translated/news.js:33 +msgid "No news found" +msgstr "" + +#: templates/js/translated/news.js:38 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1601 +msgid "ID" +msgstr "" + +#: templates/js/translated/notification.js:52 +msgid "Age" +msgstr "" + +#: templates/js/translated/notification.js:65 +msgid "Notification" +msgstr "" + +#: templates/js/translated/notification.js:224 +msgid "Mark as unread" +msgstr "" + +#: templates/js/translated/notification.js:228 +msgid "Mark as read" +msgstr "" + +#: templates/js/translated/notification.js:254 +msgid "No unread notifications" +msgstr "" + +#: templates/js/translated/notification.js:296 templates/notifications.html:12 +msgid "Notifications will load here" +msgstr "" + +#: templates/js/translated/order.js:89 +msgid "Add Extra Line Item" +msgstr "" + +#: templates/js/translated/order.js:126 +msgid "Export Order" +msgstr "" + +#: templates/js/translated/order.js:241 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:255 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:268 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:281 +#: templates/js/translated/purchase_order.js:1981 +msgid "No line items found" +msgstr "" + +#: templates/js/translated/order.js:369 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:370 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:374 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/part.js:90 +msgid "Part Attributes" +msgstr "" + +#: templates/js/translated/part.js:94 +msgid "Part Creation Options" +msgstr "" + +#: templates/js/translated/part.js:98 +msgid "Part Duplication Options" +msgstr "" + +#: templates/js/translated/part.js:121 +msgid "Add Part Category" +msgstr "" + +#: templates/js/translated/part.js:305 +msgid "Parent part category" +msgstr "" + +#: templates/js/translated/part.js:329 templates/js/translated/stock.js:175 +msgid "Icon (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/part.js:349 +msgid "Create Part Category" +msgstr "" + +#: templates/js/translated/part.js:352 +msgid "Create new category after this one" +msgstr "" + +#: templates/js/translated/part.js:353 +msgid "Part category created" +msgstr "" + +#: templates/js/translated/part.js:367 +msgid "Edit Part Category" +msgstr "" + +#: templates/js/translated/part.js:380 +msgid "Are you sure you want to delete this part category?" +msgstr "" + +#: templates/js/translated/part.js:385 +msgid "Move to parent category" +msgstr "" + +#: templates/js/translated/part.js:394 +msgid "Delete Part Category" +msgstr "" + +#: templates/js/translated/part.js:398 +msgid "Action for parts in this category" +msgstr "" + +#: templates/js/translated/part.js:403 +msgid "Action for child categories" +msgstr "" + +#: templates/js/translated/part.js:427 +msgid "Create Part" +msgstr "" + +#: templates/js/translated/part.js:429 +msgid "Create another part after this one" +msgstr "" + +#: templates/js/translated/part.js:430 +msgid "Part created successfully" +msgstr "" + +#: templates/js/translated/part.js:458 +msgid "Edit Part" +msgstr "" + +#: templates/js/translated/part.js:460 +msgid "Part edited" +msgstr "" + +#: templates/js/translated/part.js:471 +msgid "Create Part Variant" +msgstr "" + +#: templates/js/translated/part.js:528 +msgid "Active Part" +msgstr "" + +#: templates/js/translated/part.js:529 +msgid "Part cannot be deleted as it is currently active" +msgstr "" + +#: templates/js/translated/part.js:543 +msgid "Deleting this part cannot be reversed" +msgstr "" + +#: templates/js/translated/part.js:545 +msgid "Any stock items for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:546 +msgid "This part will be removed from any Bills of Material" +msgstr "" + +#: templates/js/translated/part.js:547 +msgid "All manufacturer and supplier information for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:554 +msgid "Delete Part" +msgstr "" + +#: templates/js/translated/part.js:590 +msgid "You are subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:592 +msgid "You have subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:597 +msgid "Subscribe to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:599 +msgid "You have unsubscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:616 +msgid "Validating the BOM will mark each line item as valid" +msgstr "" + +#: templates/js/translated/part.js:626 +msgid "Validate Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:629 +msgid "Validated Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:654 +msgid "Copy Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:682 +#: templates/js/translated/table_filters.js:743 +msgid "Low stock" +msgstr "" + +#: templates/js/translated/part.js:685 +msgid "No stock available" +msgstr "" + +#: templates/js/translated/part.js:745 +msgid "Demand" +msgstr "" + +#: templates/js/translated/part.js:768 +msgid "Unit" +msgstr "" + +#: templates/js/translated/part.js:791 templates/js/translated/part.js:1203 +msgid "Virtual part" +msgstr "" + +#: templates/js/translated/part.js:803 +msgid "Subscribed part" +msgstr "" + +#: templates/js/translated/part.js:807 +msgid "Salable part" +msgstr "" + +#: templates/js/translated/part.js:886 +msgid "Schedule generation of a new stocktake report." +msgstr "" + +#: templates/js/translated/part.js:886 +msgid "Once complete, the stocktake report will be available for download." +msgstr "" + +#: templates/js/translated/part.js:894 +msgid "Generate Stocktake Report" +msgstr "" + +#: templates/js/translated/part.js:898 +msgid "Stocktake report scheduled" +msgstr "" + +#: templates/js/translated/part.js:1047 +msgid "No stocktake information available" +msgstr "" + +#: templates/js/translated/part.js:1105 templates/js/translated/part.js:1141 +msgid "Edit Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1109 templates/js/translated/part.js:1151 +msgid "Delete Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1278 +msgid "No variants found" +msgstr "" + +#: templates/js/translated/part.js:1596 +msgid "No part parameter templates found" +msgstr "" + +#: templates/js/translated/part.js:1659 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1671 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/js/translated/part.js:1679 +msgid "Delete Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1713 +#: templates/js/translated/purchase_order.js:1645 +msgid "No purchase orders found" +msgstr "" + +#: templates/js/translated/part.js:1856 +#: templates/js/translated/purchase_order.js:2144 +#: templates/js/translated/return_order.js:753 +#: templates/js/translated/sales_order.js:1872 +msgid "This line item is overdue" +msgstr "" + +#: templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:2211 +msgid "Receive line item" +msgstr "" + +#: templates/js/translated/part.js:1964 +msgid "Delete part relationship" +msgstr "" + +#: templates/js/translated/part.js:1986 +msgid "Delete Part Relationship" +msgstr "" + +#: templates/js/translated/part.js:2074 templates/js/translated/part.js:2501 +msgid "No parts found" +msgstr "" + +#: templates/js/translated/part.js:2195 +msgid "Set the part category for the selected parts" +msgstr "" + +#: templates/js/translated/part.js:2200 +msgid "Set Part Category" +msgstr "" + +#: templates/js/translated/part.js:2230 +msgid "Set category" +msgstr "" + +#: templates/js/translated/part.js:2283 +msgid "parts" +msgstr "" + +#: templates/js/translated/part.js:2379 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2526 templates/js/translated/part.js:2656 +#: templates/js/translated/stock.js:2640 +msgid "Display as list" +msgstr "" + +#: templates/js/translated/part.js:2542 +msgid "Display as grid" +msgstr "" + +#: templates/js/translated/part.js:2640 +msgid "No subcategories found" +msgstr "" + +#: templates/js/translated/part.js:2676 templates/js/translated/stock.js:2660 +msgid "Display as tree" +msgstr "" + +#: templates/js/translated/part.js:2756 +msgid "Load Subcategories" +msgstr "" + +#: templates/js/translated/part.js:2772 +msgid "Subscribed category" +msgstr "" + +#: templates/js/translated/part.js:2849 +msgid "No test templates matching query" +msgstr "" + +#: templates/js/translated/part.js:2900 templates/js/translated/stock.js:1436 +msgid "Edit test result" +msgstr "" + +#: templates/js/translated/part.js:2901 templates/js/translated/stock.js:1437 +#: templates/js/translated/stock.js:1699 +msgid "Delete test result" +msgstr "" + +#: templates/js/translated/part.js:2905 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/translated/part.js:2921 +msgid "Edit Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:2935 +msgid "Delete Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:3014 templates/js/translated/part.js:3015 +msgid "No date specified" +msgstr "" + +#: templates/js/translated/part.js:3017 +msgid "Specified date is in the past" +msgstr "" + +#: templates/js/translated/part.js:3023 +msgid "Speculative" +msgstr "" + +#: templates/js/translated/part.js:3073 +msgid "No scheduling information available for this part" +msgstr "" + +#: templates/js/translated/part.js:3079 +msgid "Error fetching scheduling information for this part" +msgstr "" + +#: templates/js/translated/part.js:3175 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:3191 +msgid "Maximum Quantity" +msgstr "" + +#: templates/js/translated/part.js:3236 +msgid "Minimum Stock Level" +msgstr "" + +#: templates/js/translated/plugin.js:45 +msgid "No plugins found" +msgstr "" + +#: templates/js/translated/plugin.js:57 +msgid "This plugin is no longer installed" +msgstr "" + +#: templates/js/translated/plugin.js:59 +msgid "This plugin is active" +msgstr "" + +#: templates/js/translated/plugin.js:61 +msgid "This plugin is installed but not active" +msgstr "" + +#: templates/js/translated/plugin.js:116 templates/js/translated/plugin.js:185 +msgid "Disable Plugin" +msgstr "" + +#: templates/js/translated/plugin.js:118 templates/js/translated/plugin.js:185 +msgid "Enable Plugin" +msgstr "" + +#: templates/js/translated/plugin.js:157 +msgid "The Plugin was installed" +msgstr "" + +#: templates/js/translated/plugin.js:176 +msgid "Are you sure you want to enable this plugin?" +msgstr "" + +#: templates/js/translated/plugin.js:180 +msgid "Are you sure you want to disable this plugin?" +msgstr "" + +#: templates/js/translated/plugin.js:188 +msgid "Enable" +msgstr "" + +#: templates/js/translated/plugin.js:188 +msgid "Disable" +msgstr "" + +#: templates/js/translated/plugin.js:202 +msgid "Plugin updated" +msgstr "" + +#: templates/js/translated/pricing.js:159 +msgid "Error fetching currency data" +msgstr "" + +#: templates/js/translated/pricing.js:321 +msgid "No BOM data available" +msgstr "" + +#: templates/js/translated/pricing.js:463 +msgid "No supplier pricing data available" +msgstr "" + +#: templates/js/translated/pricing.js:572 +msgid "No price break data available" +msgstr "" + +#: templates/js/translated/pricing.js:755 +msgid "No purchase history data available" +msgstr "" + +#: templates/js/translated/pricing.js:791 +msgid "Purchase Price History" +msgstr "" + +#: templates/js/translated/pricing.js:894 +msgid "No sales history data available" +msgstr "" + +#: templates/js/translated/pricing.js:916 +msgid "Sale Price History" +msgstr "" + +#: templates/js/translated/pricing.js:1005 +msgid "No variant data available" +msgstr "" + +#: templates/js/translated/pricing.js:1045 +msgid "Variant Part" +msgstr "" + +#: templates/js/translated/purchase_order.js:166 +msgid "Select purchase order to duplicate" +msgstr "" + +#: templates/js/translated/purchase_order.js:173 +msgid "Duplicate Line Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:174 +msgid "Duplicate all line items from the selected order" +msgstr "" + +#: templates/js/translated/purchase_order.js:181 +msgid "Duplicate Extra Lines" +msgstr "" + +#: templates/js/translated/purchase_order.js:182 +msgid "Duplicate extra line items from the selected order" +msgstr "" + +#: templates/js/translated/purchase_order.js:203 +msgid "Edit Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:220 +msgid "Duplication Options" +msgstr "" + +#: templates/js/translated/purchase_order.js:447 +msgid "Complete Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:464 +#: templates/js/translated/return_order.js:207 +#: templates/js/translated/sales_order.js:497 +msgid "Mark this order as complete?" +msgstr "" + +#: templates/js/translated/purchase_order.js:470 +msgid "All line items have been received" +msgstr "" + +#: templates/js/translated/purchase_order.js:475 +msgid "This order has line items which have not been marked as received." +msgstr "" + +#: templates/js/translated/purchase_order.js:476 +#: templates/js/translated/sales_order.js:511 +msgid "Completing this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/purchase_order.js:499 +msgid "Cancel Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:504 +msgid "Are you sure you wish to cancel this purchase order?" +msgstr "" + +#: templates/js/translated/purchase_order.js:510 +msgid "This purchase order can not be cancelled" +msgstr "" + +#: templates/js/translated/purchase_order.js:531 +#: templates/js/translated/return_order.js:161 +msgid "After placing this order, line items will no longer be editable." +msgstr "" + +#: templates/js/translated/purchase_order.js:536 +msgid "Issue Purchase Order" +msgstr "" + +#: templates/js/translated/purchase_order.js:628 +msgid "At least one purchaseable part must be selected" +msgstr "" + +#: templates/js/translated/purchase_order.js:653 +msgid "Quantity to order" +msgstr "" + +#: templates/js/translated/purchase_order.js:662 +msgid "New supplier part" +msgstr "" + +#: templates/js/translated/purchase_order.js:680 +msgid "New purchase order" +msgstr "" + +#: templates/js/translated/purchase_order.js:712 +msgid "Add to purchase order" +msgstr "" + +#: templates/js/translated/purchase_order.js:860 +msgid "No matching supplier parts" +msgstr "" + +#: templates/js/translated/purchase_order.js:879 +msgid "No matching purchase orders" +msgstr "" + +#: templates/js/translated/purchase_order.js:1066 +msgid "Select Line Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1067 +#: templates/js/translated/return_order.js:489 +msgid "At least one line item must be selected" +msgstr "" + +#: templates/js/translated/purchase_order.js:1097 +msgid "Received Quantity" +msgstr "" + +#: templates/js/translated/purchase_order.js:1108 +msgid "Quantity to receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1184 +msgid "Stock Status" +msgstr "" + +#: templates/js/translated/purchase_order.js:1198 +msgid "Add barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1199 +msgid "Remove barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1202 +msgid "Specify location" +msgstr "" + +#: templates/js/translated/purchase_order.js:1210 +msgid "Add batch code" +msgstr "" + +#: templates/js/translated/purchase_order.js:1221 +msgid "Add serial numbers" +msgstr "" + +#: templates/js/translated/purchase_order.js:1273 +msgid "Serials" +msgstr "" + +#: templates/js/translated/purchase_order.js:1298 +msgid "Order Code" +msgstr "" + +#: templates/js/translated/purchase_order.js:1300 +msgid "Quantity to Receive" +msgstr "" + +#: templates/js/translated/purchase_order.js:1326 +#: templates/js/translated/return_order.js:558 +msgid "Confirm receipt of items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1327 +msgid "Receive Purchase Order Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1395 +msgid "Scan Item Barcode" +msgstr "" + +#: templates/js/translated/purchase_order.js:1396 +msgid "Scan barcode on incoming item (must not match any existing stock items)" +msgstr "" + +#: templates/js/translated/purchase_order.js:1410 +msgid "Invalid barcode data" +msgstr "" + +#: templates/js/translated/purchase_order.js:1672 +#: templates/js/translated/return_order.js:283 +#: templates/js/translated/sales_order.js:771 +#: templates/js/translated/sales_order.js:995 +msgid "Order is overdue" +msgstr "" + +#: templates/js/translated/purchase_order.js:1738 +#: templates/js/translated/return_order.js:351 +#: templates/js/translated/sales_order.js:848 +#: templates/js/translated/sales_order.js:1008 +msgid "Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1834 +msgid "All selected Line items will be deleted" +msgstr "" + +#: templates/js/translated/purchase_order.js:1852 +msgid "Delete selected Line items?" +msgstr "" + +#: templates/js/translated/purchase_order.js:1907 +#: templates/js/translated/sales_order.js:2067 +msgid "Duplicate Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1922 +#: templates/js/translated/return_order.js:473 +#: templates/js/translated/return_order.js:666 +#: templates/js/translated/sales_order.js:2080 +msgid "Edit Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1933 +#: templates/js/translated/return_order.js:679 +#: templates/js/translated/sales_order.js:2091 +msgid "Delete Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2215 +#: templates/js/translated/sales_order.js:2021 +msgid "Duplicate line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2216 +#: templates/js/translated/return_order.js:798 +#: templates/js/translated/sales_order.js:2022 +msgid "Edit line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2217 +#: templates/js/translated/return_order.js:802 +#: templates/js/translated/sales_order.js:2028 +msgid "Delete line item" +msgstr "" + +#: templates/js/translated/report.js:63 +msgid "items selected" +msgstr "" + +#: templates/js/translated/report.js:71 +msgid "Select Report Template" +msgstr "" + +#: templates/js/translated/report.js:86 +msgid "Select Test Report Template" +msgstr "" + +#: templates/js/translated/report.js:140 +msgid "No Reports Found" +msgstr "" + +#: templates/js/translated/report.js:141 +msgid "No report templates found which match the selected items" +msgstr "" + +#: templates/js/translated/return_order.js:60 +#: templates/js/translated/sales_order.js:86 +msgid "Add Customer" +msgstr "" + +#: templates/js/translated/return_order.js:131 +msgid "Create Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:146 +msgid "Edit Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:166 +msgid "Issue Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:183 +msgid "Are you sure you wish to cancel this Return Order?" +msgstr "" + +#: templates/js/translated/return_order.js:190 +msgid "Cancel Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:215 +msgid "Complete Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:263 +msgid "No return orders found" +msgstr "" + +#: templates/js/translated/return_order.js:297 +#: templates/js/translated/sales_order.js:785 +msgid "Invalid Customer" +msgstr "" + +#: templates/js/translated/return_order.js:559 +msgid "Receive Return Order Items" +msgstr "" + +#: templates/js/translated/return_order.js:690 +#: templates/js/translated/sales_order.js:2227 +msgid "No matching line items" +msgstr "" + +#: templates/js/translated/return_order.js:795 +msgid "Mark item as received" +msgstr "" + +#: templates/js/translated/sales_order.js:158 +msgid "Create Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:173 +msgid "Edit Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:288 +msgid "No stock items have been allocated to this shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:293 +msgid "The following stock items will be shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:333 +msgid "Complete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:357 +msgid "Confirm Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:413 +msgid "No pending shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:417 +msgid "No stock items have been allocated to pending shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:427 +msgid "Complete Shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:449 +msgid "Skip" +msgstr "" + +#: templates/js/translated/sales_order.js:510 +msgid "This order has line items which have not been completed." +msgstr "" + +#: templates/js/translated/sales_order.js:532 +msgid "Issue this Sales Order?" +msgstr "" + +#: templates/js/translated/sales_order.js:537 +msgid "Issue Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:556 +msgid "Cancel Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:561 +msgid "Cancelling this order means that the order will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:615 +msgid "Create New Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:725 +msgid "No sales orders found" +msgstr "" + +#: templates/js/translated/sales_order.js:905 +msgid "Edit shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:908 +msgid "Complete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:913 +msgid "Delete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:930 +msgid "Edit Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:945 +msgid "Delete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:978 +msgid "No matching shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:1003 +msgid "Shipment Reference" +msgstr "" + +#: templates/js/translated/sales_order.js:1027 +#: templates/js/translated/sales_order.js:1526 +msgid "Not shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:1045 +msgid "Tracking" +msgstr "" + +#: templates/js/translated/sales_order.js:1049 +msgid "Invoice" +msgstr "" + +#: templates/js/translated/sales_order.js:1216 +msgid "Add Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:1267 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1268 +msgid "Allocate Stock Items to Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:1474 +msgid "No sales order allocations found" +msgstr "" + +#: templates/js/translated/sales_order.js:1566 +msgid "Edit Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1580 +msgid "Confirm Delete Operation" +msgstr "" + +#: templates/js/translated/sales_order.js:1581 +msgid "Delete Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1620 +#: templates/js/translated/sales_order.js:1707 +#: templates/js/translated/stock.js:1744 +msgid "Shipped to customer" +msgstr "" + +#: templates/js/translated/sales_order.js:1628 +#: templates/js/translated/sales_order.js:1716 +msgid "Stock location not specified" +msgstr "" + +#: templates/js/translated/sales_order.js:2005 +msgid "Allocate serial numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2009 +msgid "Purchase stock" +msgstr "" + +#: templates/js/translated/sales_order.js:2018 +#: templates/js/translated/sales_order.js:2205 +msgid "Calculate price" +msgstr "" + +#: templates/js/translated/sales_order.js:2032 +msgid "Cannot be deleted as items have been shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:2035 +msgid "Cannot be deleted as items have been allocated" +msgstr "" + +#: templates/js/translated/sales_order.js:2106 +msgid "Allocate Serial Numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2213 +msgid "Update Unit Price" +msgstr "" + +#: templates/js/translated/search.js:270 +msgid "No results" +msgstr "" + +#: templates/js/translated/search.js:292 templates/search.html:25 +msgid "Enter search query" +msgstr "" + +#: templates/js/translated/search.js:342 +msgid "result" +msgstr "" + +#: templates/js/translated/search.js:342 +msgid "results" +msgstr "" + +#: templates/js/translated/search.js:352 +msgid "Minimize results" +msgstr "" + +#: templates/js/translated/search.js:355 +msgid "Remove results" +msgstr "" + +#: templates/js/translated/stock.js:98 +msgid "Serialize Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:129 +msgid "Confirm Stock Serialization" +msgstr "" + +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 +msgid "Edit Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:217 +msgid "New Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:219 +msgid "Create another location after this one" +msgstr "" + +#: templates/js/translated/stock.js:220 +msgid "Stock location created" +msgstr "" + +#: templates/js/translated/stock.js:234 +msgid "Are you sure you want to delete this stock location?" +msgstr "" + +#: templates/js/translated/stock.js:241 +msgid "Move to parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:250 +msgid "Delete Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:254 +msgid "Action for stock items in this stock location" +msgstr "" + +#: templates/js/translated/stock.js:259 +msgid "Action for sub-locations" +msgstr "" + +#: templates/js/translated/stock.js:313 +msgid "This part cannot be serialized" +msgstr "" + +#: templates/js/translated/stock.js:349 +msgid "Add given quantity as packs instead of individual items" +msgstr "" + +#: templates/js/translated/stock.js:362 +msgid "Enter initial quantity for this stock item" +msgstr "" + +#: templates/js/translated/stock.js:368 +msgid "Enter serial numbers for new stock (or leave blank)" +msgstr "" + +#: templates/js/translated/stock.js:439 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:459 +msgid "Duplicate Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:475 +msgid "Are you sure you want to delete this stock item?" +msgstr "" + +#: templates/js/translated/stock.js:480 +msgid "Delete Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:501 +msgid "Edit Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:543 +msgid "Create another item after this one" +msgstr "" + +#: templates/js/translated/stock.js:555 +msgid "Created new stock item" +msgstr "" + +#: templates/js/translated/stock.js:568 +msgid "Created multiple stock items" +msgstr "" + +#: templates/js/translated/stock.js:593 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:614 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:634 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:643 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:751 +msgid "Confirm stock assignment" +msgstr "" + +#: templates/js/translated/stock.js:752 +msgid "Assign Stock to Customer" +msgstr "" + +#: templates/js/translated/stock.js:829 +msgid "Warning: Merge operation cannot be reversed" +msgstr "" + +#: templates/js/translated/stock.js:830 +msgid "Some information will be lost when merging stock items" +msgstr "" + +#: templates/js/translated/stock.js:832 +msgid "Stock transaction history will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:833 +msgid "Supplier part information will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:928 +msgid "Confirm stock item merge" +msgstr "" + +#: templates/js/translated/stock.js:929 +msgid "Merge Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1024 +msgid "Transfer Stock" +msgstr "" + +#: templates/js/translated/stock.js:1025 +msgid "Move" +msgstr "" + +#: templates/js/translated/stock.js:1031 +msgid "Count Stock" +msgstr "" + +#: templates/js/translated/stock.js:1032 +msgid "Count" +msgstr "" + +#: templates/js/translated/stock.js:1036 +msgid "Remove Stock" +msgstr "" + +#: templates/js/translated/stock.js:1037 +msgid "Take" +msgstr "" + +#: templates/js/translated/stock.js:1041 +msgid "Add Stock" +msgstr "" + +#: templates/js/translated/stock.js:1042 users/models.py:389 +msgid "Add" +msgstr "" + +#: templates/js/translated/stock.js:1046 +msgid "Delete Stock" +msgstr "" + +#: templates/js/translated/stock.js:1143 +msgid "Quantity cannot be adjusted for serialized stock" +msgstr "" + +#: templates/js/translated/stock.js:1143 +msgid "Specify stock quantity" +msgstr "" + +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3267 +msgid "Select Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "" + +#: templates/js/translated/stock.js:1224 +msgid "Confirm stock adjustment" +msgstr "" + +#: templates/js/translated/stock.js:1360 +msgid "PASS" +msgstr "" + +#: templates/js/translated/stock.js:1362 +msgid "FAIL" +msgstr "" + +#: templates/js/translated/stock.js:1367 +msgid "NO RESULT" +msgstr "" + +#: templates/js/translated/stock.js:1429 +msgid "Pass test" +msgstr "" + +#: templates/js/translated/stock.js:1432 +msgid "Add test result" +msgstr "" + +#: templates/js/translated/stock.js:1456 +msgid "No test results found" +msgstr "" + +#: templates/js/translated/stock.js:1520 +msgid "Test Date" +msgstr "" + +#: templates/js/translated/stock.js:1682 +msgid "Edit Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1704 +msgid "Delete Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1736 +msgid "In production" +msgstr "" + +#: templates/js/translated/stock.js:1740 +msgid "Installed in Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:1748 +msgid "Assigned to Sales Order" +msgstr "" + +#: templates/js/translated/stock.js:1754 +msgid "No stock location set" +msgstr "" + +#: templates/js/translated/stock.js:1810 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1819 +msgid "Merge stock" +msgstr "" + +#: templates/js/translated/stock.js:1868 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1923 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1928 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1939 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:1983 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2061 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2066 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2069 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2072 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2074 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2076 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2079 +msgid "Stock item has been installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:2081 +msgid "Stock item has been consumed by a build order" +msgstr "" + +#: templates/js/translated/stock.js:2085 +msgid "Stock item has expired" +msgstr "" + +#: templates/js/translated/stock.js:2087 +msgid "Stock item will expire soon" +msgstr "" + +#: templates/js/translated/stock.js:2092 +msgid "Stock item has been rejected" +msgstr "" + +#: templates/js/translated/stock.js:2094 +msgid "Stock item is lost" +msgstr "" + +#: templates/js/translated/stock.js:2096 +msgid "Stock item is destroyed" +msgstr "" + +#: templates/js/translated/stock.js:2100 +#: templates/js/translated/table_filters.js:350 +msgid "Depleted" +msgstr "" + +#: templates/js/translated/stock.js:2265 +msgid "Supplier part not specified" +msgstr "" + +#: templates/js/translated/stock.js:2312 +msgid "Stock Value" +msgstr "" + +#: templates/js/translated/stock.js:2440 +msgid "No stock items matching query" +msgstr "" + +#: templates/js/translated/stock.js:2544 +msgid "stock locations" +msgstr "" + +#: templates/js/translated/stock.js:2699 +msgid "Load Sublocations" +msgstr "" + +#: templates/js/translated/stock.js:2817 +msgid "Details" +msgstr "" + +#: templates/js/translated/stock.js:2821 +msgid "No changes" +msgstr "" + +#: templates/js/translated/stock.js:2833 +msgid "Part information unavailable" +msgstr "" + +#: templates/js/translated/stock.js:2855 +msgid "Location no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2872 +msgid "Build order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2887 +msgid "Purchase order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2904 +msgid "Sales Order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2921 +msgid "Return Order no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2940 +msgid "Customer no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2958 +msgid "Stock item no longer exists" +msgstr "" + +#: templates/js/translated/stock.js:2976 +msgid "Added" +msgstr "" + +#: templates/js/translated/stock.js:2984 +msgid "Removed" +msgstr "" + +#: templates/js/translated/stock.js:3056 +msgid "No installed items" +msgstr "" + +#: templates/js/translated/stock.js:3108 templates/js/translated/stock.js:3143 +msgid "Uninstall Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:3165 +msgid "Select stock item to uninstall" +msgstr "" + +#: templates/js/translated/stock.js:3186 +msgid "Install another stock item into this item" +msgstr "" + +#: templates/js/translated/stock.js:3187 +msgid "Stock items can only be installed if they meet the following criteria" +msgstr "" + +#: templates/js/translated/stock.js:3189 +msgid "The Stock Item links to a Part which is the BOM for this Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:3190 +msgid "The Stock Item is currently available in stock" +msgstr "" + +#: templates/js/translated/stock.js:3191 +msgid "The Stock Item is not already installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:3192 +msgid "The Stock Item is tracked by either a batch code or serial number" +msgstr "" + +#: templates/js/translated/stock.js:3205 +msgid "Select part to install" +msgstr "" + +#: templates/js/translated/stock.js:3268 +msgid "Select one or more stock items" +msgstr "" + +#: templates/js/translated/stock.js:3281 +msgid "Selected stock items" +msgstr "" + +#: templates/js/translated/stock.js:3285 +msgid "Change Stock Status" +msgstr "" + +#: templates/js/translated/table_filters.js:74 +msgid "Has project code" +msgstr "" + +#: templates/js/translated/table_filters.js:89 +#: templates/js/translated/table_filters.js:601 +#: templates/js/translated/table_filters.js:613 +#: templates/js/translated/table_filters.js:654 +msgid "Order status" +msgstr "" + +#: templates/js/translated/table_filters.js:94 +#: templates/js/translated/table_filters.js:618 +#: templates/js/translated/table_filters.js:644 +#: templates/js/translated/table_filters.js:659 +msgid "Outstanding" +msgstr "" + +#: templates/js/translated/table_filters.js:102 +#: templates/js/translated/table_filters.js:524 +#: templates/js/translated/table_filters.js:626 +#: templates/js/translated/table_filters.js:667 +msgid "Assigned to me" +msgstr "" + +#: templates/js/translated/table_filters.js:158 +msgid "Trackable Part" +msgstr "" + +#: templates/js/translated/table_filters.js:162 +msgid "Assembled Part" +msgstr "" + +#: templates/js/translated/table_filters.js:166 +msgid "Has Available Stock" +msgstr "" + +#: templates/js/translated/table_filters.js:182 +msgid "Allow Variant Stock" +msgstr "" + +#: templates/js/translated/table_filters.js:194 +#: templates/js/translated/table_filters.js:775 +msgid "Has Pricing" +msgstr "" + +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 +msgid "Include sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:235 +msgid "Include locations" +msgstr "" + +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js:707 +msgid "Include subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:287 +#: templates/js/translated/table_filters.js:755 +msgid "Subscribed" +msgstr "" + +#: templates/js/translated/table_filters.js:298 +#: templates/js/translated/table_filters.js:380 +msgid "Is Serialized" +msgstr "" + +#: templates/js/translated/table_filters.js:301 +#: templates/js/translated/table_filters.js:387 +msgid "Serial number GTE" +msgstr "" + +#: templates/js/translated/table_filters.js:302 +#: templates/js/translated/table_filters.js:388 +msgid "Serial number greater than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:305 +#: templates/js/translated/table_filters.js:391 +msgid "Serial number LTE" +msgstr "" + +#: templates/js/translated/table_filters.js:306 +#: templates/js/translated/table_filters.js:392 +msgid "Serial number less than or equal to" +msgstr "" + +#: templates/js/translated/table_filters.js:309 +#: templates/js/translated/table_filters.js:310 +#: templates/js/translated/table_filters.js:383 +#: templates/js/translated/table_filters.js:384 +msgid "Serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:314 +#: templates/js/translated/table_filters.js:405 +msgid "Batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:325 +#: templates/js/translated/table_filters.js:696 +msgid "Active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:326 +msgid "Show stock for active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:331 +msgid "Part is an assembly" +msgstr "" + +#: templates/js/translated/table_filters.js:335 +msgid "Is allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:336 +msgid "Item has been allocated" +msgstr "" + +#: templates/js/translated/table_filters.js:341 +msgid "Stock is available for use" +msgstr "" + +#: templates/js/translated/table_filters.js:346 +msgid "Include stock in sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:351 +msgid "Show stock items which are depleted" +msgstr "" + +#: templates/js/translated/table_filters.js:356 +msgid "Show items which are in stock" +msgstr "" + +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: templates/js/translated/table_filters.js:361 +msgid "Show items which are in production" +msgstr "" + +#: templates/js/translated/table_filters.js:365 +msgid "Include Variants" +msgstr "" + +#: templates/js/translated/table_filters.js:366 +msgid "Include stock items for variant parts" +msgstr "" + +#: templates/js/translated/table_filters.js:371 +msgid "Show stock items which are installed in another item" +msgstr "" + +#: templates/js/translated/table_filters.js:376 +msgid "Show items which have been assigned to a customer" +msgstr "" + +#: templates/js/translated/table_filters.js:396 +#: templates/js/translated/table_filters.js:397 +msgid "Stock status" +msgstr "" + +#: templates/js/translated/table_filters.js:400 +msgid "Has batch code" +msgstr "" + +#: templates/js/translated/table_filters.js:409 +msgid "Stock item is tracked by either batch code or serial number" +msgstr "" + +#: templates/js/translated/table_filters.js:414 +msgid "Has purchase price" +msgstr "" + +#: templates/js/translated/table_filters.js:415 +msgid "Show stock items which have a purchase price set" +msgstr "" + +#: templates/js/translated/table_filters.js:419 +msgid "Expiry Date before" +msgstr "" + +#: templates/js/translated/table_filters.js:423 +msgid "Expiry Date after" +msgstr "" + +#: templates/js/translated/table_filters.js:436 +msgid "Show stock items which have expired" +msgstr "" + +#: templates/js/translated/table_filters.js:442 +msgid "Show stock which is close to expiring" +msgstr "" + +#: templates/js/translated/table_filters.js:456 +msgid "Test Passed" +msgstr "" + +#: templates/js/translated/table_filters.js:460 +msgid "Include Installed Items" +msgstr "" + +#: templates/js/translated/table_filters.js:511 +msgid "Build status" +msgstr "" + +#: templates/js/translated/table_filters.js:708 +msgid "Include parts in subcategories" +msgstr "" + +#: templates/js/translated/table_filters.js:713 +msgid "Show active parts" +msgstr "" + +#: templates/js/translated/table_filters.js:721 +msgid "Available stock" +msgstr "" + +#: templates/js/translated/table_filters.js:729 +#: templates/js/translated/table_filters.js:825 +msgid "Has Units" +msgstr "" + +#: templates/js/translated/table_filters.js:730 +msgid "Part has defined units" +msgstr "" + +#: templates/js/translated/table_filters.js:734 +msgid "Has IPN" +msgstr "" + +#: templates/js/translated/table_filters.js:735 +msgid "Part has internal part number" +msgstr "" + +#: templates/js/translated/table_filters.js:739 +msgid "In stock" +msgstr "" + +#: templates/js/translated/table_filters.js:747 +msgid "Purchasable" +msgstr "" + +#: templates/js/translated/table_filters.js:759 +msgid "Has stocktake entries" +msgstr "" + +#: templates/js/translated/table_filters.js:821 +msgid "Has Choices" +msgstr "" + +#: templates/js/translated/tables.js:92 +msgid "Display calendar view" +msgstr "" + +#: templates/js/translated/tables.js:102 +msgid "Display list view" +msgstr "" + +#: templates/js/translated/tables.js:112 +msgid "Display tree view" +msgstr "" + +#: templates/js/translated/tables.js:130 +msgid "Expand all rows" +msgstr "" + +#: templates/js/translated/tables.js:136 +msgid "Collapse all rows" +msgstr "" + +#: templates/js/translated/tables.js:186 +msgid "Export Table Data" +msgstr "" + +#: templates/js/translated/tables.js:190 +msgid "Select File Format" +msgstr "" + +#: templates/js/translated/tables.js:529 +msgid "Loading data" +msgstr "" + +#: templates/js/translated/tables.js:532 +msgid "rows per page" +msgstr "" + +#: templates/js/translated/tables.js:537 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "Showing" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "to" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "of" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "rows" +msgstr "" + +#: templates/js/translated/tables.js:546 +msgid "No matching results" +msgstr "" + +#: templates/js/translated/tables.js:549 +msgid "Hide/Show pagination" +msgstr "" + +#: templates/js/translated/tables.js:555 +msgid "Toggle" +msgstr "" + +#: templates/js/translated/tables.js:558 +msgid "Columns" +msgstr "" + +#: templates/js/translated/tables.js:561 +msgid "All" +msgstr "" + +#: templates/navbar.html:45 +msgid "Buy" +msgstr "" + +#: templates/navbar.html:57 +msgid "Sell" +msgstr "" + +#: templates/navbar.html:121 +msgid "Show Notifications" +msgstr "" + +#: templates/navbar.html:124 +msgid "New Notifications" +msgstr "" + +#: templates/navbar.html:144 users/models.py:173 +msgid "Admin" +msgstr "" + +#: templates/navbar.html:148 +msgid "Logout" +msgstr "" + +#: templates/notes_buttons.html:6 templates/notes_buttons.html:7 +msgid "Save" +msgstr "" + +#: templates/notifications.html:9 +msgid "Show all notifications and history" +msgstr "" + +#: templates/qr_code.html:11 +msgid "QR data not provided" +msgstr "" + +#: templates/registration/logged_out.html:7 +msgid "You were logged out successfully." +msgstr "" + +#: templates/registration/logged_out.html:9 +msgid "Log in again" +msgstr "" + +#: templates/search.html:9 +msgid "Show full search results" +msgstr "" + +#: templates/search.html:12 +msgid "Clear search" +msgstr "" + +#: templates/search.html:15 +msgid "Close search menu" +msgstr "" + +#: templates/socialaccount/authentication_error.html:5 +msgid "Social Network Login Failure" +msgstr "" + +#: templates/socialaccount/authentication_error.html:8 +msgid "Account Login Failure" +msgstr "" + +#: templates/socialaccount/authentication_error.html:11 +msgid "An error occurred while attempting to login via your social network account." +msgstr "" + +#: templates/socialaccount/authentication_error.html:13 +msgid "Contact your system administrator for further information." +msgstr "" + +#: templates/socialaccount/login.html:13 +#, python-format +msgid "Connect %(provider)s" +msgstr "" + +#: templates/socialaccount/login.html:15 +#, python-format +msgid "You are about to connect a new third party account from %(provider)s." +msgstr "" + +#: templates/socialaccount/login.html:17 +#, python-format +msgid "Sign In Via %(provider)s" +msgstr "" + +#: templates/socialaccount/login.html:19 +#, python-format +msgid "You are about to sign in using a third party account from %(provider)s." +msgstr "" + +#: templates/socialaccount/login.html:24 +msgid "Continue" +msgstr "" + +#: templates/socialaccount/login.html:29 +msgid "Invalid SSO Provider" +msgstr "" + +#: templates/socialaccount/login.html:31 +msgid "The selected SSO provider is invalid, or has not been correctly configured" +msgstr "" + +#: templates/socialaccount/signup.html:10 +#, python-format +msgid "" +"You are about to use your %(provider_name)s account to login to\n" +"%(site_name)s.
As a final step, please complete the following form:" +msgstr "" + +#: templates/socialaccount/snippets/provider_list.html:26 +msgid "Provider has not been configured" +msgstr "" + +#: templates/socialaccount/snippets/provider_list.html:35 +msgid "No SSO providers have been configured" +msgstr "" + +#: templates/stats.html:13 +msgid "Instance Name" +msgstr "" + +#: templates/stats.html:18 +msgid "Database" +msgstr "" + +#: templates/stats.html:26 +msgid "Server is running in debug mode" +msgstr "" + +#: templates/stats.html:33 +msgid "Docker Mode" +msgstr "" + +#: templates/stats.html:34 +msgid "Server is deployed using docker" +msgstr "" + +#: templates/stats.html:39 +msgid "Plugin Support" +msgstr "" + +#: templates/stats.html:43 +msgid "Plugin support enabled" +msgstr "" + +#: templates/stats.html:45 +msgid "Plugin support disabled" +msgstr "" + +#: templates/stats.html:52 +msgid "Server status" +msgstr "" + +#: templates/stats.html:55 +msgid "Healthy" +msgstr "" + +#: templates/stats.html:57 +msgid "Issues detected" +msgstr "" + +#: templates/stats.html:64 +msgid "Background Worker" +msgstr "" + +#: templates/stats.html:67 +msgid "Background worker not running" +msgstr "" + +#: templates/stats.html:75 +msgid "Email Settings" +msgstr "" + +#: templates/stats.html:78 +msgid "Email settings not configured" +msgstr "" + +#: templates/yesnolabel.html:4 +msgid "Yes" +msgstr "" + +#: templates/yesnolabel.html:6 +msgid "No" +msgstr "" + +#: users/admin.py:90 +msgid "Users" +msgstr "" + +#: users/admin.py:91 +msgid "Select which users are assigned to this group" +msgstr "" + +#: users/admin.py:226 +msgid "The following users are members of multiple groups" +msgstr "" + +#: users/admin.py:253 +msgid "Personal info" +msgstr "" + +#: users/admin.py:254 +msgid "Permissions" +msgstr "" + +#: users/admin.py:257 +msgid "Important dates" +msgstr "" + +#: users/authentication.py:29 users/models.py:112 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:53 +msgid "API Token" +msgstr "" + +#: users/models.py:54 +msgid "API Tokens" +msgstr "" + +#: users/models.py:92 +msgid "Token Name" +msgstr "" + +#: users/models.py:93 +msgid "Custom token name" +msgstr "" + +#: users/models.py:99 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:105 +msgid "Last Seen" +msgstr "" + +#: users/models.py:106 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:111 +msgid "Revoked" +msgstr "" + +#: users/models.py:376 +msgid "Permission set" +msgstr "" + +#: users/models.py:384 +msgid "Group" +msgstr "" + +#: users/models.py:387 +msgid "View" +msgstr "" + +#: users/models.py:387 +msgid "Permission to view items" +msgstr "" + +#: users/models.py:389 +msgid "Permission to add items" +msgstr "" + +#: users/models.py:391 +msgid "Change" +msgstr "" + +#: users/models.py:391 +msgid "Permissions to edit items" +msgstr "" + +#: users/models.py:393 +msgid "Permission to delete items" +msgstr "" diff --git a/InvenTree/order/admin.py b/InvenTree/order/admin.py index 97ce316bda..b432e36154 100644 --- a/InvenTree/order/admin.py +++ b/InvenTree/order/admin.py @@ -20,8 +20,7 @@ class ProjectCodeResourceMixin: """Return the project code value, not the pk""" if order.project_code: return order.project_code.code - else: - return '' + return '' class TotalPriceResourceMixin: @@ -33,8 +32,7 @@ class TotalPriceResourceMixin: """Return the total price amount, not the object itself""" if order.total_price: return order.total_price.amount - else: - return '' + return '' class PriceResourceMixin: @@ -46,8 +44,7 @@ class PriceResourceMixin: """Return the price amount, not the object itself""" if line.price: return line.price.amount - else: - return '' + return '' # region general classes @@ -171,6 +168,12 @@ class PurchaseOrderLineItemResource(PriceResourceMixin, InvenTreeResource): SKU = Field(attribute='part__SKU', readonly=True) + def dehydrate_purchase_price(self, line): + """Return a string value of the 'purchase_price' field, rather than the 'Money' object""" + if line.purchase_price: + return line.purchase_price.amount + return '' + class PurchaseOrderExtraLineResource(PriceResourceMixin, InvenTreeResource): """Class for managing import / export of PurchaseOrderExtraLine data.""" @@ -225,8 +228,7 @@ class SalesOrderLineItemResource(PriceResourceMixin, InvenTreeResource): """ if item.sale_price: return str(item.sale_price) - else: - return '' + return '' class SalesOrderExtraLineResource(PriceResourceMixin, InvenTreeResource): diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index b4a60a95ae..4e6b859aa2 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -16,7 +16,7 @@ from rest_framework.response import Response import common.models as common_models from common.settings import settings from company.models import SupplierPart -from generic.states import StatusView +from generic.states.api import StatusView from InvenTree.api import (APIDownloadMixin, AttachmentMixin, ListCreateDestroyAPIView, MetadataView) from InvenTree.filters import SEARCH_ORDER_FILTER, SEARCH_ORDER_FILTER_ALIAS @@ -92,7 +92,6 @@ class OrderFilter(rest_filters.FilterSet): def filter_status(self, queryset, name, value): """Filter by integer status code""" - return queryset.filter(status=value) # Exact match for reference @@ -106,14 +105,12 @@ class OrderFilter(rest_filters.FilterSet): def filter_assigned_to_me(self, queryset, name, value): """Filter by orders which are assigned to the current user.""" - # Work out who "me" is! owners = Owner.get_owners_matching_user(self.request.user) if str2bool(value): return queryset.filter(responsible__in=owners) - else: - return queryset.exclude(responsible__in=owners) + return queryset.exclude(responsible__in=owners) overdue = rest_filters.BooleanFilter(label='overdue', method='filter_overdue') @@ -122,21 +119,17 @@ class OrderFilter(rest_filters.FilterSet): Note that the overdue_filter() classmethod must be defined for the model """ - if str2bool(value): return queryset.filter(self.Meta.model.overdue_filter()) - else: - return queryset.exclude(self.Meta.model.overdue_filter()) + return queryset.exclude(self.Meta.model.overdue_filter()) outstanding = rest_filters.BooleanFilter(label='outstanding', method='filter_outstanding') def filter_outstanding(self, queryset, name, value): """Generic filter for determining if an order is 'outstanding'""" - if str2bool(value): return queryset.filter(status__in=self.Meta.model.get_status_class().OPEN) - else: - return queryset.exclude(status__in=self.Meta.model.get_status_class().OPEN) + return queryset.exclude(status__in=self.Meta.model.get_status_class().OPEN) project_code = rest_filters.ModelChoiceFilter( queryset=common_models.ProjectCode.objects.all(), @@ -147,11 +140,9 @@ class OrderFilter(rest_filters.FilterSet): def filter_has_project_code(self, queryset, name, value): """Filter by whether or not the order has a project code""" - if str2bool(value): return queryset.exclude(project_code=None) - else: - return queryset.filter(project_code=None) + return queryset.filter(project_code=None) class LineItemFilter(rest_filters.FilterSet): @@ -168,8 +159,7 @@ class LineItemFilter(rest_filters.FilterSet): if str2bool(value): return queryset.exclude(**filters) - else: - return queryset.filter(**filters) + return queryset.filter(**filters) class PurchaseOrderFilter(OrderFilter): @@ -227,7 +217,6 @@ class PurchaseOrderList(PurchaseOrderMixin, APIDownloadMixin, ListCreateAPI): def create(self, request, *args, **kwargs): """Save user information on create.""" - data = self.clean_data(request.data) duplicate_order = data.pop('duplicate_order', None) @@ -275,7 +264,6 @@ class PurchaseOrderList(PurchaseOrderMixin, APIDownloadMixin, ListCreateAPI): def download_queryset(self, queryset, export_format): """Download the filtered queryset as a file""" - dataset = PurchaseOrderResource().export(queryset=queryset) filedata = dataset.export(export_format) @@ -432,11 +420,9 @@ class PurchaseOrderLineItemFilter(LineItemFilter): def filter_pending(self, queryset, name, value): """Filter by "pending" status (order status = pending)""" - if str2bool(value): return queryset.filter(order__status__in=PurchaseOrderStatusGroups.OPEN) - else: - return queryset.exclude(order__status__in=PurchaseOrderStatusGroups.OPEN) + return queryset.exclude(order__status__in=PurchaseOrderStatusGroups.OPEN) received = rest_filters.BooleanFilter(label='received', method='filter_received') @@ -449,9 +435,8 @@ class PurchaseOrderLineItemFilter(LineItemFilter): if str2bool(value): return queryset.filter(q) - else: - # Only count "pending" orders - return queryset.exclude(q).filter(order__status__in=PurchaseOrderStatusGroups.OPEN) + # Only count "pending" orders + return queryset.exclude(q).filter(order__status__in=PurchaseOrderStatusGroups.OPEN) class PurchaseOrderLineItemMixin: @@ -511,7 +496,6 @@ class PurchaseOrderLineItemList(PurchaseOrderLineItemMixin, APIDownloadMixin, Li def download_queryset(self, queryset, export_format): """Download the requested queryset as a file""" - dataset = PurchaseOrderLineItemResource().export(queryset=queryset) filedata = dataset.export(export_format) @@ -562,7 +546,6 @@ class PurchaseOrderExtraLineList(GeneralExtraLineList, ListCreateAPI): def download_queryset(self, queryset, export_format): """Download this queryset as a file""" - dataset = PurchaseOrderExtraLineResource().export(queryset=queryset) filedata = dataset.export(export_format) filename = f"InvenTree_ExtraPurchaseOrderLines.{export_format}" @@ -583,10 +566,6 @@ class SalesOrderAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): queryset = models.SalesOrderAttachment.objects.all() serializer_class = serializers.SalesOrderAttachmentSerializer - filter_backends = [ - rest_filters.DjangoFilterBackend, - ] - filterset_fields = [ 'order', ] @@ -666,7 +645,6 @@ class SalesOrderList(SalesOrderMixin, APIDownloadMixin, ListCreateAPI): def download_queryset(self, queryset, export_format): """Download this queryset as a file""" - dataset = SalesOrderResource().export(queryset=queryset) filedata = dataset.export(export_format) @@ -764,8 +742,7 @@ class SalesOrderLineItemFilter(LineItemFilter): if str2bool(value): return queryset.filter(q) - else: - return queryset.exclude(q) + return queryset.exclude(q) class SalesOrderLineItemMixin: @@ -816,7 +793,6 @@ class SalesOrderLineItemList(SalesOrderLineItemMixin, APIDownloadMixin, ListCrea def download_queryset(self, queryset, export_format): """Download the requested queryset as a file""" - dataset = SalesOrderLineItemResource().export(queryset=queryset) filedata = dataset.export(export_format) @@ -853,7 +829,6 @@ class SalesOrderExtraLineList(GeneralExtraLineList, ListCreateAPI): def download_queryset(self, queryset, export_format): """Download this queryset as a file""" - dataset = SalesOrderExtraLineResource().export(queryset=queryset) filedata = dataset.export(export_format) filename = f"InvenTree_ExtraSalesOrderLines.{export_format}" @@ -1020,8 +995,7 @@ class SalesOrderShipmentFilter(rest_filters.FilterSet): """Filter SalesOrder list by 'shipped' status (boolean)""" if str2bool(value): return queryset.exclude(shipment_date=None) - else: - return queryset.filter(shipment_date=None) + return queryset.filter(shipment_date=None) delivered = rest_filters.BooleanFilter(label='delivered', method='filter_delivered') @@ -1029,8 +1003,7 @@ class SalesOrderShipmentFilter(rest_filters.FilterSet): """Filter SalesOrder list by 'delivered' status (boolean)""" if str2bool(value): return queryset.exclude(delivery_date=None) - else: - return queryset.filter(delivery_date=None) + return queryset.filter(delivery_date=None) class SalesOrderShipmentList(ListCreateAPI): @@ -1079,10 +1052,6 @@ class PurchaseOrderAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): queryset = models.PurchaseOrderAttachment.objects.all() serializer_class = serializers.PurchaseOrderAttachmentSerializer - filter_backends = [ - rest_filters.DjangoFilterBackend, - ] - filterset_fields = [ 'order', ] @@ -1159,7 +1128,6 @@ class ReturnOrderList(ReturnOrderMixin, APIDownloadMixin, ListCreateAPI): def download_queryset(self, queryset, export_format): """Download this queryset as a file""" - dataset = ReturnOrderResource().export(queryset=queryset) filedata = dataset.export(export_format) filename = f"InvenTree_ReturnOrders.{export_format}" @@ -1260,11 +1228,9 @@ class ReturnOrderLineItemFilter(LineItemFilter): def filter_received(self, queryset, name, value): """Filter by 'received' field""" - if str2bool(value): return queryset.exclude(received_date=None) - else: - return queryset.filter(received_date=None) + return queryset.filter(received_date=None) class ReturnOrderLineItemMixin: @@ -1275,7 +1241,6 @@ class ReturnOrderLineItemMixin: def get_serializer(self, *args, **kwargs): """Return serializer for this endpoint with extra data as requested""" - try: params = self.request.query_params @@ -1291,7 +1256,6 @@ class ReturnOrderLineItemMixin: def get_queryset(self, *args, **kwargs): """Return annotated queryset for this endpoint""" - queryset = super().get_queryset(*args, **kwargs) queryset = queryset.prefetch_related( @@ -1310,7 +1274,6 @@ class ReturnOrderLineItemList(ReturnOrderLineItemMixin, APIDownloadMixin, ListCr def download_queryset(self, queryset, export_format): """Download the requested queryset as a file""" - raise NotImplementedError("download_queryset not yet implemented for this endpoint") filter_backends = SEARCH_ORDER_FILTER @@ -1342,7 +1305,6 @@ class ReturnOrderExtraLineList(GeneralExtraLineList, ListCreateAPI): def download_queryset(self, queryset, export_format): """Download this queryset as a file""" - raise NotImplementedError("download_queryset not yet implemented") @@ -1359,10 +1321,6 @@ class ReturnOrderAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): queryset = models.ReturnOrderAttachment.objects.all() serializer_class = serializers.ReturnOrderAttachmentSerializer - filter_backends = [ - rest_filters.DjangoFilterBackend, - ] - filterset_fields = [ 'order', ] @@ -1401,7 +1359,6 @@ class OrderCalendarExport(ICalFeed): https://stackoverflow.com/questions/152248/can-i-use-http-basic-authentication-with-django https://www.djangosnippets.org/snippets/243/ """ - import base64 if request.user.is_authenticated: @@ -1447,7 +1404,6 @@ class OrderCalendarExport(ICalFeed): def title(self, obj): """Return calendar title.""" - if obj["ordertype"] == 'purchase-order': ordertype_title = _('Purchase Order') elif obj["ordertype"] == 'sales-order': @@ -1526,7 +1482,6 @@ class OrderCalendarExport(ICalFeed): def item_link(self, item): """Set the item link.""" - return construct_absolute_url(item.get_absolute_url()) diff --git a/InvenTree/order/migrations/0097_auto_20230529_0107.py b/InvenTree/order/migrations/0097_auto_20230529_0107.py new file mode 100644 index 0000000000..cacf50ba4c --- /dev/null +++ b/InvenTree/order/migrations/0097_auto_20230529_0107.py @@ -0,0 +1,30 @@ +# Generated by Django 3.2.19 on 2023-05-29 01:07 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('company', '0065_remove_company_address'), + ('order', '0096_alter_returnorderlineitem_outcome'), + ] + + operations = [ + migrations.AddField( + model_name='purchaseorder', + name='address', + field=models.ForeignKey(blank=True, help_text='Company address for this order', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='company.address', verbose_name='Address'), + ), + migrations.AddField( + model_name='returnorder', + name='address', + field=models.ForeignKey(blank=True, help_text='Company address for this order', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='company.address', verbose_name='Address'), + ), + migrations.AddField( + model_name='salesorder', + name='address', + field=models.ForeignKey(blank=True, help_text='Company address for this order', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='company.address', verbose_name='Address'), + ), + ] diff --git a/InvenTree/order/migrations/0098_auto_20231024_1844.py b/InvenTree/order/migrations/0098_auto_20231024_1844.py new file mode 100644 index 0000000000..99f5cbe7dc --- /dev/null +++ b/InvenTree/order/migrations/0098_auto_20231024_1844.py @@ -0,0 +1,59 @@ +# Generated by Django 3.2.22 on 2023-10-24 16:44 + +from django.db import migrations +import djmoney.models.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0097_auto_20230529_0107'), + ] + + operations = [ + migrations.AlterField( + model_name='purchaseorder', + name='total_price_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='purchaseorderextraline', + name='price_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='purchaseorderlineitem', + name='purchase_price_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='returnorder', + name='total_price_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='returnorderextraline', + name='price_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='returnorderlineitem', + name='price_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='salesorder', + name='total_price_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='salesorderextraline', + name='price_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='salesorderlineitem', + name='sale_price_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + ] diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index 93f431d43f..75f6aaacb4 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -32,7 +32,7 @@ import stock.models import users.models as UserModels from common.notifications import InvenTreeNotificationBodies from common.settings import currency_code_default -from company.models import Company, Contact, SupplierPart +from company.models import Address, Company, Contact, SupplierPart from InvenTree.exceptions import log_error from InvenTree.fields import (InvenTreeModelMoneyField, InvenTreeURLField, RoundingDecimalField) @@ -62,7 +62,6 @@ class TotalPriceMixin(models.Model): def save(self, *args, **kwargs): """Update the total_price field when saved""" - # Recalculate total_price for this order self.update_total_price(commit=False) super().save(*args, **kwargs) @@ -90,7 +89,6 @@ class TotalPriceMixin(models.Model): - Otherwise, return the currency associated with the company - Finally, return the default currency code """ - if self.order_currency: return self.order_currency @@ -102,7 +100,6 @@ class TotalPriceMixin(models.Model): def update_total_price(self, commit=True): """Recalculate and save the total_price for this order""" - self.total_price = self.calculate_total_price(target_currency=self.currency) if commit: @@ -135,7 +132,7 @@ class TotalPriceMixin(models.Model): kind, info, data = sys.exc_info() log_error('order.calculate_total_price') - logger.error(f"Missing exchange rate for '{target_currency}'") + logger.exception("Missing exchange rate for '%s'", target_currency) # Return None to indicate the calculated price is invalid return None @@ -152,7 +149,7 @@ class TotalPriceMixin(models.Model): # Record the error, try to press on log_error('order.calculate_total_price') - logger.error(f"Missing exchange rate for '{target_currency}'") + logger.exception("Missing exchange rate for '%s'", target_currency) # Return None to indicate the calculated price is invalid return None @@ -200,7 +197,6 @@ class Order(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, Reference def clean(self): """Custom clean method for the generic order class""" - super().clean() # Check that the referenced 'contact' matches the correct 'company' @@ -216,7 +212,6 @@ class Order(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, Reference It requires any subclasses to implement the get_status_class() class method """ - today = datetime.now().date() return Q(status__in=cls.get_status_class().OPEN) & ~Q(target_date=None) & Q(target_date__lt=today) @@ -226,7 +221,6 @@ class Order(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, Reference Makes use of the overdue_filter() method to avoid code duplication """ - return self.__class__.objects.filter(pk=self.pk).filter(self.__class__.overdue_filter()).exists() description = models.CharField(max_length=250, blank=True, verbose_name=_('Description'), help_text=_('Order description (optional)')) @@ -272,10 +266,18 @@ class Order(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, Reference related_name='+', ) + address = models.ForeignKey( + Address, + on_delete=models.SET_NULL, + blank=True, null=True, + verbose_name=_('Address'), + help_text=_('Company address for this order'), + related_name='+', + ) + @classmethod def get_status_class(cls): """Return the enumeration class which represents the 'status' field for this model""" - raise NotImplementedError(f"get_status_class() not implemented for {__class__}") @@ -306,7 +308,6 @@ class PurchaseOrder(TotalPriceMixin, Order): @classmethod def api_defaults(cls, request): """Return default values for this model when issuing an API OPTIONS request""" - defaults = { 'reference': order.validators.generate_next_purchase_order_reference(), } @@ -353,7 +354,6 @@ class PurchaseOrder(TotalPriceMixin, Order): def __str__(self): """Render a string representation of this PurchaseOrder""" - return f"{self.reference} - {self.supplier.name if self.supplier else _('deleted')}" reference = models.CharField( @@ -759,7 +759,6 @@ class SalesOrder(TotalPriceMixin, Order): def __str__(self): """Render a string representation of this SalesOrder""" - return f"{self.reference} - {self.customer.name if self.customer else _('deleted')}" reference = models.CharField( @@ -886,7 +885,6 @@ class SalesOrder(TotalPriceMixin, Order): @transaction.atomic def issue_order(self): """Change this order from 'PENDING' to 'IN_PROGRESS'""" - if self.status == SalesOrderStatus.PENDING: self.status = SalesOrderStatus.IN_PROGRESS.value self.issue_date = datetime.now().date() @@ -1060,7 +1058,6 @@ class OrderLineItem(MetadataMixin, models.Model): Calls save method on the linked order """ - super().save(*args, **kwargs) self.order.save() @@ -1069,7 +1066,6 @@ class OrderLineItem(MetadataMixin, models.Model): Calls save method on the linked order """ - super().delete(*args, **kwargs) self.order.save() @@ -1084,7 +1080,6 @@ class OrderLineItem(MetadataMixin, models.Model): @property def total_line_price(self): """Return the total price for this line item""" - if self.price: return self.quantity * self.price @@ -1189,8 +1184,7 @@ class PurchaseOrderLineItem(OrderLineItem): """ if self.part is None: return None - else: - return self.part.part + return self.part.part part = models.ForeignKey( SupplierPart, on_delete=models.SET_NULL, @@ -1286,7 +1280,6 @@ class SalesOrderLineItem(OrderLineItem): def clean(self): """Perform extra validation steps for this SalesOrderLineItem instance""" - super().clean() if self.part: @@ -1593,7 +1586,9 @@ class SalesOrderAllocation(models.Model): try: if self.line.part != self.item.part: - errors['item'] = _('Cannot allocate stock item to a line with a different part') + variants = self.line.part.get_descendants(include_self=True) + if self.line.part not in variants: + errors['item'] = _('Cannot allocate stock item to a line with a different part') except PartModels.Part.DoesNotExist: errors['line'] = _('Cannot allocate stock to a line without a part') @@ -1718,7 +1713,6 @@ class ReturnOrder(TotalPriceMixin, Order): def __str__(self): """Render a string representation of this ReturnOrder""" - return f"{self.reference} - {self.customer.name if self.customer else _('no customer')}" reference = models.CharField( @@ -1799,7 +1793,6 @@ class ReturnOrder(TotalPriceMixin, Order): @transaction.atomic def complete_order(self): """Complete this ReturnOrder (if not already completed)""" - if self.status == ReturnOrderStatus.IN_PROGRESS: self.status = ReturnOrderStatus.COMPLETE.value self.complete_date = datetime.now().date() @@ -1814,7 +1807,6 @@ class ReturnOrder(TotalPriceMixin, Order): @transaction.atomic def issue_order(self): """Issue this ReturnOrder (if currently pending)""" - if self.status == ReturnOrderStatus.PENDING: self.status = ReturnOrderStatus.IN_PROGRESS.value self.issue_date = datetime.now().date() @@ -1831,7 +1823,6 @@ class ReturnOrder(TotalPriceMixin, Order): - Adds a tracking entry to the StockItem - Removes the 'customer' reference from the StockItem """ - # Prevent an item from being "received" multiple times if line.received_date is not None: logger.warning("receive_line_item called with item already returned") @@ -1897,7 +1888,6 @@ class ReturnOrderLineItem(OrderLineItem): def clean(self): """Perform extra validation steps for the ReturnOrderLineItem model""" - super().clean() if self.item and not self.item.serialized: @@ -1966,7 +1956,6 @@ class ReturnOrderAttachment(InvenTreeAttachment): @staticmethod def get_api_url(): """Return the API URL associated with the ReturnOrderAttachment class""" - return reverse('api-return-order-attachment-list') def getSubdir(self): diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 116f0fb7b0..939123b660 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -18,7 +18,8 @@ import part.filters import stock.models import stock.serializers from common.serializers import ProjectCodeSerializer -from company.serializers import (CompanyBriefSerializer, ContactSerializer, +from company.serializers import (AddressBriefSerializer, + CompanyBriefSerializer, ContactSerializer, SupplierPartSerializer) from InvenTree.helpers import (extract_serial_numbers, hash_barcode, normalize, str2bool) @@ -28,8 +29,8 @@ from InvenTree.serializers import (InvenTreeAttachmentSerializer, InvenTreeModelSerializer, InvenTreeMoneySerializer) from InvenTree.status_codes import (PurchaseOrderStatusGroups, - ReturnOrderStatus, SalesOrderStatusGroups, - StockStatus) + ReturnOrderLineStatus, ReturnOrderStatus, + SalesOrderStatusGroups, StockStatus) from part.serializers import PartBriefSerializer from users.serializers import OwnerSerializer @@ -57,6 +58,9 @@ class AbstractOrderSerializer(serializers.Serializer): # Number of line items in this order line_items = serializers.IntegerField(read_only=True) + # Number of completed line items (this is an annotated field) + completed_lines = serializers.IntegerField(read_only=True) + # Human-readable status text (read-only) status_text = serializers.CharField(source='get_status_display', read_only=True) @@ -75,6 +79,9 @@ class AbstractOrderSerializer(serializers.Serializer): # Detail for project code field project_code_detail = ProjectCodeSerializer(source='project_code', read_only=True, many=False) + # Detail for address field + address_detail = AddressBriefSerializer(source='address', many=False, read_only=True) + # Boolean field indicating if this order is overdue (Note: must be annotated) overdue = serializers.BooleanField(required=False, read_only=True) @@ -82,14 +89,12 @@ class AbstractOrderSerializer(serializers.Serializer): def validate_reference(self, reference): """Custom validation for the reference field""" - self.Meta.model.validate_reference_field(reference) return reference @staticmethod def annotate_queryset(queryset): """Add extra information to the queryset""" - queryset = queryset.annotate( line_items=SubqueryCount('lines') ) @@ -99,13 +104,13 @@ class AbstractOrderSerializer(serializers.Serializer): @staticmethod def order_fields(extra_fields): """Construct a set of fields for this serializer""" - return [ 'pk', 'creation_date', 'target_date', 'description', 'line_items', + 'completed_lines', 'link', 'project_code', 'project_code_detail', @@ -114,6 +119,8 @@ class AbstractOrderSerializer(serializers.Serializer): 'responsible_detail', 'contact', 'contact_detail', + 'address', + 'address_detail', 'status', 'status_text', 'notes', @@ -208,6 +215,10 @@ class PurchaseOrderSerializer(TotalPriceMixin, AbstractOrderSerializer, InvenTre """ queryset = AbstractOrderSerializer.annotate_queryset(queryset) + queryset = queryset.annotate( + completed_lines=SubqueryCount('lines', filter=Q(quantity__lte=F('received'))) + ) + queryset = queryset.annotate( overdue=Case( When( @@ -266,7 +277,6 @@ class PurchaseOrderCompleteSerializer(serializers.Serializer): def validate_accept_incomplete(self, value): """Check if the 'accept_incomplete' field is required""" - order = self.context['order'] if not value and not order.is_complete: @@ -668,8 +678,8 @@ class PurchaseOrderReceiveSerializer(serializers.Serializer): with transaction.atomic(): for item in items: - # Select location - loc = item.get('location', None) or item['line_item'].get_destination() or location + # Select location (in descending order of priority) + loc = location or item.get('location', None) or item['line_item'].get_destination() try: order.receive_line_item( @@ -741,10 +751,15 @@ class SalesOrderSerializer(TotalPriceMixin, AbstractOrderSerializer, InvenTreeMo """Add extra information to the queryset. - Number of line items in the SalesOrder + - Number of completed line items in the SalesOrder - Overdue status of the SalesOrder """ queryset = AbstractOrderSerializer.annotate_queryset(queryset) + queryset = queryset.annotate( + completed_lines=SubqueryCount('lines', filter=Q(quantity__lte=F('shipped'))) + ) + queryset = queryset.annotate( overdue=Case( When( @@ -856,6 +871,7 @@ class SalesOrderLineItemSerializer(InvenTreeModelSerializer): 'allocated', 'allocations', 'available_stock', + 'available_variant_stock', 'customer_detail', 'quantity', 'reference', @@ -873,7 +889,7 @@ class SalesOrderLineItemSerializer(InvenTreeModelSerializer): ] def __init__(self, *args, **kwargs): - """Initializion routine for the serializer: + """Initialization routine for the serializer: - Add extra related serializer information if required """ @@ -903,7 +919,6 @@ class SalesOrderLineItemSerializer(InvenTreeModelSerializer): - "overdue" status (boolean field) - "available_quantity" """ - queryset = queryset.annotate( overdue=Case( When( @@ -928,6 +943,26 @@ class SalesOrderLineItemSerializer(InvenTreeModelSerializer): ) ) + # Filter for "variant" stock: Variant stock items must be salable and active + variant_stock_query = part.filters.variant_stock_query(reference='part__').filter( + part__salable=True, + part__active=True + ) + + # Also add in available "variant" stock + queryset = queryset.alias( + variant_stock_total=part.filters.annotate_variant_quantity(variant_stock_query, reference='quantity'), + variant_bo_allocations=part.filters.annotate_variant_quantity(variant_stock_query, reference='sales_order_allocations__quantity'), + variant_so_allocations=part.filters.annotate_variant_quantity(variant_stock_query, reference='allocations__quantity'), + ) + + queryset = queryset.annotate( + available_variant_stock=ExpressionWrapper( + F('variant_stock_total') - F('variant_bo_allocations') - F('variant_so_allocations'), + output_field=models.DecimalField(), + ) + ) + return queryset customer_detail = CompanyBriefSerializer(source='order.customer', many=False, read_only=True) @@ -938,6 +973,7 @@ class SalesOrderLineItemSerializer(InvenTreeModelSerializer): # Annotated fields overdue = serializers.BooleanField(required=False, read_only=True) available_stock = serializers.FloatField(read_only=True) + available_variant_stock = serializers.FloatField(read_only=True) quantity = InvenTreeDecimalField() @@ -1132,7 +1168,6 @@ class SalesOrderCompleteSerializer(serializers.Serializer): def validate_accept_incomplete(self, value): """Check if the 'accept_incomplete' field is required""" - order = self.context['order'] if not value and not order.is_completed(): @@ -1142,7 +1177,6 @@ class SalesOrderCompleteSerializer(serializers.Serializer): def get_context_data(self): """Custom context data for this serializer""" - order = self.context['order'] return { @@ -1470,7 +1504,6 @@ class ReturnOrderSerializer(AbstractOrderSerializer, TotalPriceMixin, InvenTreeM def __init__(self, *args, **kwargs): """Initialization routine for the serializer""" - customer_detail = kwargs.pop('customer_detail', False) super().__init__(*args, **kwargs) @@ -1481,9 +1514,12 @@ class ReturnOrderSerializer(AbstractOrderSerializer, TotalPriceMixin, InvenTreeM @staticmethod def annotate_queryset(queryset): """Custom annotation for the serializer queryset""" - queryset = AbstractOrderSerializer.annotate_queryset(queryset) + queryset = queryset.annotate( + completed_lines=SubqueryCount('lines', filter=~Q(outcome=ReturnOrderLineStatus.PENDING.value)) + ) + queryset = queryset.annotate( overdue=Case( When( @@ -1557,7 +1593,6 @@ class ReturnOrderLineItemReceiveSerializer(serializers.Serializer): def validate_line_item(self, item): """Validation for a single line item""" - if item.order != self.context['order']: raise ValidationError(_("Line item does not match return order")) @@ -1591,7 +1626,6 @@ class ReturnOrderReceiveSerializer(serializers.Serializer): def validate(self, data): """Perform data validation for this serializer""" - order = self.context['order'] if order.status != ReturnOrderStatus.IN_PROGRESS: raise ValidationError(_("Items can only be received against orders which are in progress")) @@ -1608,7 +1642,6 @@ class ReturnOrderReceiveSerializer(serializers.Serializer): @transaction.atomic def save(self): """Saving this serializer marks the returned items as received""" - order = self.context['order'] request = self.context['request'] @@ -1654,7 +1687,6 @@ class ReturnOrderLineItemSerializer(InvenTreeModelSerializer): def __init__(self, *args, **kwargs): """Initialization routine for the serializer""" - order_detail = kwargs.pop('order_detail', False) item_detail = kwargs.pop('item_detail', False) part_detail = kwargs.pop('part_detail', False) diff --git a/InvenTree/order/tasks.py b/InvenTree/order/tasks.py index 225c3a7976..6d6a2eb7d6 100644 --- a/InvenTree/order/tasks.py +++ b/InvenTree/order/tasks.py @@ -15,7 +15,6 @@ from plugin.events import trigger_event def notify_overdue_purchase_order(po: order.models.PurchaseOrder): """Notify users that a PurchaseOrder has just become 'overdue'""" - targets = [] if po.created_by: @@ -64,7 +63,6 @@ def check_overdue_purchase_orders(): - Look at the 'target_date' of any outstanding PurchaseOrder objects - If the 'target_date' expired *yesterday* then the order is just out of date """ - yesterday = datetime.now().date() - timedelta(days=1) overdue_orders = order.models.PurchaseOrder.objects.filter( @@ -78,7 +76,6 @@ def check_overdue_purchase_orders(): def notify_overdue_sales_order(so: order.models.SalesOrder): """Notify appropriate users that a SalesOrder has just become 'overdue'""" - targets = [] if so.created_by: @@ -127,7 +124,6 @@ def check_overdue_sales_orders(): - Look at the 'target_date' of any outstanding SalesOrder objects - If the 'target_date' expired *yesterday* then the order is just out of date """ - yesterday = datetime.now().date() - timedelta(days=1) overdue_orders = order.models.SalesOrder.objects.filter( diff --git a/InvenTree/order/templates/order/order_base.html b/InvenTree/order/templates/order/order_base.html index 436636b8f8..2a064794d8 100644 --- a/InvenTree/order/templates/order/order_base.html +++ b/InvenTree/order/templates/order/order_base.html @@ -19,10 +19,10 @@ {% endblock heading %} {% block actions %} -{% if user.is_staff and roles.purchase_order.change %} -{% url 'admin:order_purchaseorder_change' order.pk as url %} + +{% admin_url user "order.purchaseorder" order.pk as url %} {% include "admin_button.html" with url=url %} -{% endif %} + {% if barcodes %}
@@ -80,10 +80,6 @@ {% trans "Issue Order" %} {% elif order.is_open %} - @@ -169,7 +165,7 @@ src="{% static 'img/blank_image.png' %}"
- + {% endif %} @@ -208,6 +204,13 @@ src="{% static 'img/blank_image.png' %}" {% endif %} + {% if order.address %} + + + + + + {% endif %} {% if order.responsible %} @@ -270,22 +273,6 @@ $("#edit-order").click(function() { }); }); -$("#receive-order").click(function() { - - // Auto select items which have not been fully allocated - var items = getTableData('#po-line-table'); - - receivePurchaseOrderItems( - {{ order.id }}, - items, - { - success: function() { - $("#po-line-table").bootstrapTable('refresh'); - } - } - ); -}); - $("#complete-order").click(function() { completePurchaseOrder( diff --git a/InvenTree/order/templates/order/purchase_order_detail.html b/InvenTree/order/templates/order/purchase_order_detail.html index 1994be41da..85065ff46f 100644 --- a/InvenTree/order/templates/order/purchase_order_detail.html +++ b/InvenTree/order/templates/order/purchase_order_detail.html @@ -37,23 +37,7 @@
-
- {% if roles.purchase_order.change %} - {% if order.is_open or allow_extra_editing %} - - {% endif %} - {% endif %} - +
{% include "filter_list.html" with id="purchase-order-lines" %}
@@ -77,10 +61,8 @@
-
-
- {% include "filter_list.html" with id="purchase-order-extra-lines" %} -
+
+ {% include "filter_list.html" with id="purchase-order-extra-lines" %}
{% trans "External Link" %}{% include 'clip_link.html' with link=order.link %}{% include 'clip_link.html' with link=order.link new_window=True %}
{{ order.contact.name }}
{% trans "Address" %}{{ order.address.title }}: {{ order.address }}
@@ -168,9 +150,6 @@ supplier_part_detail: true, location_detail: true, }, - buttons: [ - '#stock-options', - ], filterkey: "postock" }); @@ -187,8 +166,9 @@ $('#new-po-line').click(function() { } }); }); +{% endif %} -{% elif order.status == PurchaseOrderStatus.PLACED %} +{% if order.status == PurchaseOrderStatus.PLACED %} $('#receive-selected-items').click(function() { let items = getTableData('#po-line-table'); diff --git a/InvenTree/order/templates/order/purchase_orders.html b/InvenTree/order/templates/order/purchase_orders.html index 23b56baee1..d601b3fd17 100644 --- a/InvenTree/order/templates/order/purchase_orders.html +++ b/InvenTree/order/templates/order/purchase_orders.html @@ -24,11 +24,7 @@
-
-
- {% include "filter_list.html" with id="purchaseorder" %} -
-
+ {% include "filter_list.html" with id="purchaseorder" %}
diff --git a/InvenTree/order/templates/order/return_order_base.html b/InvenTree/order/templates/order/return_order_base.html index d701112b0b..b9c0f5e370 100644 --- a/InvenTree/order/templates/order/return_order_base.html +++ b/InvenTree/order/templates/order/return_order_base.html @@ -29,10 +29,9 @@ src="{% static 'img/blank_image.png' %}" {% endblock heading %} {% block actions %} -{% if user.is_staff and roles.return_order.change %} -{% url 'admin:order_returnorder_change' order.pk as url %} +{% admin_url user "order.returnorder" order.pk as url %} {% include "admin_button.html" with url=url %} -{% endif %} + {% if barcodes %}
@@ -144,7 +143,7 @@ src="{% static 'img/blank_image.png' %}"
- + {% endif %} @@ -176,6 +175,13 @@ src="{% static 'img/blank_image.png' %}" {% endif %} + {% if order.address %} + + + + + + {% endif %} {% if order.responsible %} diff --git a/InvenTree/order/templates/order/return_order_detail.html b/InvenTree/order/templates/order/return_order_detail.html index b0542ba188..9c11ff6270 100644 --- a/InvenTree/order/templates/order/return_order_detail.html +++ b/InvenTree/order/templates/order/return_order_detail.html @@ -34,10 +34,8 @@
-
-
- {% include "filter_list.html" with id="returnorderlines" %} -
+
+ {% include "filter_list.html" with id="returnorderlines" %}
{% trans "External Link" %}{% include 'clip_link.html' with link=order.link %}{% include 'clip_link.html' with link=order.link new_window=True %}
{{ order.contact.name }}
{% trans "Address" %}{{ order.address.title }}: {{ order.address }}
@@ -58,10 +56,8 @@
-
-
- {% include "filter_list.html" with id="return-order-extra-lines" %} -
+
+ {% include "filter_list.html" with id="return-order-extra-lines" %}
diff --git a/InvenTree/order/templates/order/return_orders.html b/InvenTree/order/templates/order/return_orders.html index 698b682be0..834047eb46 100644 --- a/InvenTree/order/templates/order/return_orders.html +++ b/InvenTree/order/templates/order/return_orders.html @@ -26,15 +26,11 @@ {% block page_info %}
-
-
-
- {% include "filter_list.html" with id="returnorder" %} -
-
+
+ {% include "filter_list.html" with id="returnorder" %}
- +
diff --git a/InvenTree/order/templates/order/sales_order_base.html b/InvenTree/order/templates/order/sales_order_base.html index b149a440eb..53d15b2aa0 100644 --- a/InvenTree/order/templates/order/sales_order_base.html +++ b/InvenTree/order/templates/order/sales_order_base.html @@ -29,10 +29,9 @@ src="{% static 'img/blank_image.png' %}" {% endblock heading %} {% block actions %} -{% if user.is_staff and roles.sales_order.change %} -{% url 'admin:order_salesorder_change' order.pk as url %} +{% admin_url user "order.salesorder" order.pk as url %} {% include "admin_button.html" with url=url %} -{% endif %} + {% if barcodes %}
@@ -179,7 +178,7 @@ src="{% static 'img/blank_image.png' %}" {% trans "External Link" %} - {% include 'clip_link.html' with link=order.link %} + {% include 'clip_link.html' with link=order.link new_window=True new_window=True %} {% endif %} @@ -216,6 +215,13 @@ src="{% static 'img/blank_image.png' %}" {{ order.contact.name }} {% endif %} + {% if order.address %} + + + {% trans "Address" %} + {{ order.address.title }}: {{ order.address }} + + {% endif %} {% if order.responsible %} diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index 8a43c3ee1b..24cb4e4b78 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -29,10 +29,8 @@
-
-
- {% include "filter_list.html" with id="sales-order-lines" %} -
+
+ {% include "filter_list.html" with id="sales-order-lines" %}
@@ -54,10 +52,8 @@
-
-
- {% include "filter_list.html" with id="sales-order-extra-lines" %} -
+
+ {% include "filter_list.html" with id="sales-order-extra-lines" %}
@@ -89,10 +85,8 @@
{% if roles.sales_order.change %} -
-
- {% include "filter_list.html" with id="pending-shipments" %} -
+
+ {% include "filter_list.html" with id="pending-shipments" %}
{% endif %}
@@ -105,10 +99,8 @@

{% trans "Completed Shipments" %}

-
-
- {% include "filter_list.html" with id="completed-shipments" %} -
+
+ {% include "filter_list.html" with id="completed-shipments" %}
@@ -119,10 +111,8 @@

{% trans "Build Orders" %}

-
-
- {% include "filter_list.html" with id='build' %} -
+
+ {% include "filter_list.html" with id='build' %}
diff --git a/InvenTree/order/templates/order/sales_orders.html b/InvenTree/order/templates/order/sales_orders.html index 86c64fbe54..c4cc86cad1 100644 --- a/InvenTree/order/templates/order/sales_orders.html +++ b/InvenTree/order/templates/order/sales_orders.html @@ -27,10 +27,8 @@
-
-
- {% include "filter_list.html" with id="salesorder" %} -
+
+ {% include "filter_list.html" with id="salesorder" %}
diff --git a/InvenTree/order/test_api.py b/InvenTree/order/test_api.py index 99ee7bc894..2b7aa76782 100644 --- a/InvenTree/order/test_api.py +++ b/InvenTree/order/test_api.py @@ -62,7 +62,6 @@ class PurchaseOrderTest(OrderTest): def test_options(self): """Test the PurchaseOrder OPTIONS endpoint.""" - self.assignRole('purchase_order.add') response = self.options(self.LIST_URL, expected_code=200) @@ -144,7 +143,6 @@ class PurchaseOrderTest(OrderTest): def test_total_price(self): """Unit tests for the 'total_price' field""" - # Ensure we have exchange rate data self.generate_exchange_rates() @@ -360,7 +358,6 @@ class PurchaseOrderTest(OrderTest): def test_po_duplicate(self): """Test that we can duplicate a PurchaseOrder via the API""" - self.assignRole('purchase_order.add') po = models.PurchaseOrder.objects.get(pk=1) @@ -443,7 +440,7 @@ class PurchaseOrderTest(OrderTest): url = reverse('api-po-cancel', kwargs={'pk': po.pk}) - # Try to cancel the PO, but without reqiured permissions + # Try to cancel the PO, but without required permissions self.post(url, {}, expected_code=403) self.assignRole('purchase_order.add') @@ -511,7 +508,6 @@ class PurchaseOrderTest(OrderTest): def test_po_calendar(self): """Test the calendar export endpoint""" - # Create required purchase orders self.assignRole('purchase_order.add') @@ -982,9 +978,9 @@ class PurchaseOrderReceiveTest(OrderTest): self.assertEqual(stock_1.count(), 1) self.assertEqual(stock_2.count(), 1) - # Different location for each received item + # Same location for each received item, as overall 'location' field is provided self.assertEqual(stock_1.last().location.pk, 1) - self.assertEqual(stock_2.last().location.pk, 2) + self.assertEqual(stock_2.last().location.pk, 1) # Barcodes should have been assigned to the stock items self.assertTrue(StockItem.objects.filter(barcode_data='MY-UNIQUE-BARCODE-123').exists()) @@ -1120,7 +1116,6 @@ class SalesOrderTest(OrderTest): def test_total_price(self): """Unit tests for the 'total_price' field""" - # Ensure we have exchange rate data self.generate_exchange_rates() @@ -1359,7 +1354,6 @@ class SalesOrderTest(OrderTest): def test_so_calendar(self): """Test the calendar export endpoint""" - # Create required sales orders self.assignRole('sales_order.add') @@ -1420,7 +1414,6 @@ class SalesOrderTest(OrderTest): def test_export(self): """Test we can export the SalesOrder list""" - n = models.SalesOrder.objects.count() # Check there are some sales orders @@ -1562,7 +1555,7 @@ class SalesOrderDownloadTest(OrderTest): self.assertTrue(isinstance(file, io.BytesIO)) def test_download_csv(self): - """Tesst that the list of sales orders can be downloaded as a .csv file""" + """Test that the list of sales orders can be downloaded as a .csv file""" url = reverse('api-so-list') required_cols = [ @@ -1716,7 +1709,7 @@ class SalesOrderAllocateTest(OrderTest): self.assertIn('Shipment is not associated with this order', str(response.data['shipment'])) def test_allocate(self): - """Test the the allocation endpoint acts as expected, when provided with valid data!""" + """Test that the allocation endpoint acts as expected, when provided with valid data!""" # First, check that there are no line items allocated against this SalesOrder self.assertEqual(self.order.stock_allocations.count(), 0) @@ -1745,6 +1738,43 @@ class SalesOrderAllocateTest(OrderTest): for line in self.order.lines.all(): self.assertEqual(line.allocations.count(), 1) + def test_allocate_variant(self): + """Test that the allocation endpoint acts as expected, when provided with variant""" + # First, check that there are no line items allocated against this SalesOrder + self.assertEqual(self.order.stock_allocations.count(), 0) + + data = { + "items": [], + "shipment": self.shipment.pk, + } + + def check_template(line_item): + return line_item.part.is_template + + for line in filter(check_template, self.order.lines.all()): + + stock_item = None + + # Allocate a matching variant + parts = Part.objects.filter(salable=True).filter(variant_of=line.part.pk) + for part in parts: + stock_item = part.stock_items.last() + break + + # Fully-allocate each line + data['items'].append({ + "line_item": line.pk, + "stock_item": stock_item.pk, + "quantity": 5 + }) + + self.post(self.url, data, expected_code=201) + + # At least one item should be allocated, and all should be variants + self.assertGreater(self.order.stock_allocations.count(), 0) + for allocation in self.order.stock_allocations.all(): + self.assertNotEquals(allocation.item.part.pk, allocation.line.part.pk) + def test_shipment_complete(self): """Test that we can complete a shipment via the API.""" url = reverse('api-so-shipment-ship', kwargs={'pk': self.shipment.pk}) @@ -1809,7 +1839,7 @@ class SalesOrderAllocateTest(OrderTest): self.assertEqual(self.shipment.delivery_date, datetime(2023, 12, 5).date()) self.assertTrue(self.shipment.is_delivered()) - def test_shipment_deliverydate(self): + def test_shipment_delivery_date(self): """Test delivery date functions via API.""" url = reverse('api-so-shipment-detail', kwargs={'pk': self.shipment.pk}) @@ -1854,7 +1884,7 @@ class SalesOrderAllocateTest(OrderTest): url = reverse('api-so-shipment-list') # Count before creation - countbefore = models.SalesOrderShipment.objects.count() + count_before = models.SalesOrderShipment.objects.count() # Create some new shipments via the API for order in models.SalesOrder.objects.all(): @@ -1885,7 +1915,7 @@ class SalesOrderAllocateTest(OrderTest): # List *all* shipments response = self.get(url, expected_code=200) - self.assertEqual(len(response.data), countbefore + 3 * models.SalesOrder.objects.count()) + self.assertEqual(len(response.data), count_before + 3 * models.SalesOrder.objects.count()) class ReturnOrderTests(InvenTreeAPITestCase): @@ -1903,7 +1933,6 @@ class ReturnOrderTests(InvenTreeAPITestCase): def test_options(self): """Test the OPTIONS endpoint""" - self.assignRole('return_order.add') data = self.options(reverse('api-return-order-list'), expected_code=200).data @@ -1921,7 +1950,6 @@ class ReturnOrderTests(InvenTreeAPITestCase): def test_list(self): """Tests for the list endpoint""" - url = reverse('api-return-order-list') response = self.get(url, expected_code=200) @@ -1987,7 +2015,6 @@ class ReturnOrderTests(InvenTreeAPITestCase): def test_create(self): """Test creation of ReturnOrder via the API""" - url = reverse('api-return-order-list') # Do not have required permissions yet @@ -2018,7 +2045,6 @@ class ReturnOrderTests(InvenTreeAPITestCase): def test_update(self): """Test that we can update a ReturnOrder via the API""" - url = reverse('api-return-order-detail', kwargs={'pk': 1}) # Test detail endpoint @@ -2050,7 +2076,6 @@ class ReturnOrderTests(InvenTreeAPITestCase): def test_ro_issue(self): """Test the 'issue' order for a ReturnOrder""" - order = models.ReturnOrder.objects.get(pk=1) self.assertEqual(order.status, ReturnOrderStatus.PENDING) self.assertIsNone(order.issue_date) @@ -2069,7 +2094,6 @@ class ReturnOrderTests(InvenTreeAPITestCase): def test_receive(self): """Test that we can receive items against a ReturnOrder""" - customer = Company.objects.get(pk=4) # Create an order @@ -2172,7 +2196,6 @@ class ReturnOrderTests(InvenTreeAPITestCase): def test_ro_calendar(self): """Test the calendar export endpoint""" - # Full test is in test_po_calendar. Since these use the same backend, test only # that the endpoint is available url = reverse('api-po-so-calendar', kwargs={'ordertype': 'return-order'}) @@ -2206,7 +2229,6 @@ class OrderMetadataAPITest(InvenTreeAPITestCase): def metatester(self, apikey, model): """Generic tester""" - modeldata = model.objects.first() # Useless test unless a model object is found @@ -2235,7 +2257,6 @@ class OrderMetadataAPITest(InvenTreeAPITestCase): def test_metadata(self): """Test all endpoints""" - for apikey, model in { 'api-po-metadata': models.PurchaseOrder, 'api-po-line-metadata': models.PurchaseOrderLineItem, diff --git a/InvenTree/order/test_sales_order.py b/InvenTree/order/test_sales_order.py index 7d787b91ff..86eaaf37e0 100644 --- a/InvenTree/order/test_sales_order.py +++ b/InvenTree/order/test_sales_order.py @@ -33,11 +33,23 @@ class SalesOrderTest(TestCase): cls.customer = Company.objects.create(name="ABC Co", description="My customer", is_customer=True) # Create a Part to ship - cls.part = Part.objects.create(name='Spanner', salable=True, description='A spanner that I sell') + cls.part = Part.objects.create( + name='Spanner', + salable=True, + description='A spanner that I sell', + is_template=True, + ) + cls.variant = Part.objects.create( + name='Blue Spanner', + salable=True, + description='A blue spanner that I sell', + variant_of=cls.part, + ) # Create some stock! cls.Sa = StockItem.objects.create(part=cls.part, quantity=100) cls.Sb = StockItem.objects.create(part=cls.part, quantity=200) + cls.Sc = StockItem.objects.create(part=cls.variant, quantity=100) # Create a SalesOrder to ship against cls.order = SalesOrder.objects.create( @@ -60,7 +72,6 @@ class SalesOrderTest(TestCase): def test_so_reference(self): """Unit tests for sales order generation""" - # Test that a good reference is created when we have no existing orders SalesOrder.objects.all().delete() @@ -68,7 +79,6 @@ class SalesOrderTest(TestCase): def test_rebuild_reference(self): """Test that the 'reference_int' field gets rebuilt when the model is saved""" - self.assertEqual(self.order.reference_int, 1234) self.order.reference = '999' @@ -109,7 +119,6 @@ class SalesOrderTest(TestCase): def test_add_duplicate_line_item(self): """Adding a duplicate line item to a SalesOrder is accepted""" - for ii in range(1, 5): SalesOrderLineItem.objects.create(order=self.order, part=self.part, quantity=ii) @@ -145,6 +154,16 @@ class SalesOrderTest(TestCase): self.assertTrue(self.line.is_fully_allocated()) self.assertEqual(self.line.allocated_quantity(), 50) + def test_allocate_variant(self): + """Allocate a variant of the designated item""" + SalesOrderAllocation.objects.create( + line=self.line, + shipment=self.shipment, + item=StockItem.objects.get(pk=self.Sc.pk), + quantity=50 + ) + self.assertEqual(self.line.allocated_quantity(), 50) + def test_order_cancel(self): """Allocate line items then cancel the order""" self.allocate_stock(True) @@ -166,8 +185,8 @@ class SalesOrderTest(TestCase): def test_complete_order(self): """Allocate line items, then ship the order""" # Assert some stuff before we run the test - # Initially there are two stock items - self.assertEqual(StockItem.objects.count(), 2) + # Initially there are three stock items + self.assertEqual(StockItem.objects.count(), 3) # Take 25 units from each StockItem self.allocate_stock(True) @@ -194,15 +213,17 @@ class SalesOrderTest(TestCase): self.assertEqual(self.order.status, status.SalesOrderStatus.SHIPPED) self.assertIsNotNone(self.order.shipment_date) - # There should now be 4 stock items - self.assertEqual(StockItem.objects.count(), 4) + # There should now be 5 stock items + self.assertEqual(StockItem.objects.count(), 5) sa = StockItem.objects.get(pk=self.Sa.pk) sb = StockItem.objects.get(pk=self.Sb.pk) + sc = StockItem.objects.get(pk=self.Sc.pk) - # 25 units subtracted from each of the original items + # 25 units subtracted from each of the original non-variant items self.assertEqual(sa.quantity, 75) self.assertEqual(sb.quantity, 175) + self.assertEqual(sc.quantity, 100) # And 2 items created which are associated with the order outputs = StockItem.objects.filter(sales_order=self.order) @@ -259,14 +280,12 @@ class SalesOrderTest(TestCase): def test_shipment_delivery(self): """Test the shipment delivery settings""" - # Shipment delivery date should be empty before setting date self.assertIsNone(self.shipment.delivery_date) self.assertFalse(self.shipment.is_delivered()) def test_overdue_notification(self): """Test overdue sales order notification""" - self.order.created_by = get_user_model().objects.get(pk=3) self.order.responsible = Owner.create(obj=Group.objects.get(pk=2)) self.order.target_date = datetime.now().date() - timedelta(days=1) @@ -287,7 +306,6 @@ class SalesOrderTest(TestCase): - The responsible user should receive a notification - The creating user should *not* receive a notification """ - SalesOrder.objects.create( customer=self.customer, reference='1234567', diff --git a/InvenTree/order/tests.py b/InvenTree/order/tests.py index 151a2ba631..5b9ee89b0d 100644 --- a/InvenTree/order/tests.py +++ b/InvenTree/order/tests.py @@ -39,7 +39,6 @@ class OrderTest(TestCase): def test_basics(self): """Basic tests e.g. repr functions etc.""" - for pk in range(1, 8): order = PurchaseOrder.objects.get(pk=pk) @@ -53,7 +52,6 @@ class OrderTest(TestCase): def test_rebuild_reference(self): """Test that the reference_int field is correctly updated when the model is saved""" - order = PurchaseOrder.objects.get(pk=1) order.save() self.assertEqual(order.reference_int, 1) @@ -219,7 +217,6 @@ class OrderTest(TestCase): def test_receive_pack_size(self): """Test receiving orders from suppliers with different pack_size values""" - prt = Part.objects.get(pk=1) sup = Company.objects.get(pk=1) @@ -366,7 +363,6 @@ class OrderTest(TestCase): - The responsible user(s) should receive a notification - The creating user should *not* receive a notification """ - po = PurchaseOrder.objects.create( supplier=Company.objects.get(pk=1), reference='XYZABC', diff --git a/InvenTree/order/validators.py b/InvenTree/order/validators.py index ee9c832e05..a340002c9d 100644 --- a/InvenTree/order/validators.py +++ b/InvenTree/order/validators.py @@ -3,7 +3,6 @@ def generate_next_sales_order_reference(): """Generate the next available SalesOrder reference""" - from order.models import SalesOrder return SalesOrder.generate_reference() @@ -11,7 +10,6 @@ def generate_next_sales_order_reference(): def generate_next_purchase_order_reference(): """Generate the next available PurchasesOrder reference""" - from order.models import PurchaseOrder return PurchaseOrder.generate_reference() @@ -19,7 +17,6 @@ def generate_next_purchase_order_reference(): def generate_next_return_order_reference(): """Generate the next available ReturnOrder reference""" - from order.models import ReturnOrder return ReturnOrder.generate_reference() @@ -27,7 +24,6 @@ def generate_next_return_order_reference(): def validate_sales_order_reference_pattern(pattern): """Validate the SalesOrder reference 'pattern' setting""" - from order.models import SalesOrder SalesOrder.validate_reference_pattern(pattern) @@ -35,7 +31,6 @@ def validate_sales_order_reference_pattern(pattern): def validate_purchase_order_reference_pattern(pattern): """Validate the PurchaseOrder reference 'pattern' setting""" - from order.models import PurchaseOrder PurchaseOrder.validate_reference_pattern(pattern) @@ -43,7 +38,6 @@ def validate_purchase_order_reference_pattern(pattern): def validate_return_order_reference_pattern(pattern): """Validate the ReturnOrder reference 'pattern' setting""" - from order.models import ReturnOrder ReturnOrder.validate_reference_pattern(pattern) @@ -51,7 +45,6 @@ def validate_return_order_reference_pattern(pattern): def validate_sales_order_reference(value): """Validate that the SalesOrder reference field matches the required pattern""" - from order.models import SalesOrder SalesOrder.validate_reference_field(value) @@ -59,7 +52,6 @@ def validate_sales_order_reference(value): def validate_purchase_order_reference(value): """Validate that the PurchaseOrder reference field matches the required pattern""" - from order.models import PurchaseOrder PurchaseOrder.validate_reference_field(value) @@ -67,7 +59,6 @@ def validate_purchase_order_reference(value): def validate_return_order_reference(value): """Validate that the ReturnOrder reference field matches the required pattern""" - from order.models import ReturnOrder ReturnOrder.validate_reference_field(value) diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py index 3d319a8d28..8895c134ba 100644 --- a/InvenTree/order/views.py +++ b/InvenTree/order/views.py @@ -306,11 +306,7 @@ class PurchaseOrderExport(AjaxView): export_format = request.GET.get('format', 'csv') - filename = '{order} - {company}.{fmt}'.format( - order=str(order), - company=order.supplier.name, - fmt=export_format - ) + filename = f'{str(order)} - {order.supplier.name}.{export_format}' dataset = PurchaseOrderLineItemResource().export(queryset=order.lines.all()) diff --git a/InvenTree/part/admin.py b/InvenTree/part/admin.py index fb221b0724..ca2ecf1ea4 100644 --- a/InvenTree/part/admin.py +++ b/InvenTree/part/admin.py @@ -68,7 +68,6 @@ class PartResource(InvenTreeResource): def dehydrate_min_cost(self, part): """Render minimum cost value for this Part""" - min_cost = part.pricing.overall_min if part.pricing else None if min_cost is not None: @@ -76,7 +75,6 @@ class PartResource(InvenTreeResource): def dehydrate_max_cost(self, part): """Render maximum cost value for this Part""" - max_cost = part.pricing.overall_max if part.pricing else None if max_cost is not None: @@ -97,7 +95,6 @@ class PartResource(InvenTreeResource): def after_import(self, dataset, result, using_transactions, dry_run, **kwargs): """Rebuild MPTT tree structure after importing Part data""" - super().after_import(dataset, result, using_transactions, dry_run, **kwargs) # Rebuild the Part tree(s) @@ -203,7 +200,6 @@ class PartCategoryResource(InvenTreeResource): def after_import(self, dataset, result, using_transactions, dry_run, **kwargs): """Rebuild MPTT tree structure after importing PartCategory data""" - super().after_import(dataset, result, using_transactions, dry_run, **kwargs) # Rebuild the PartCategory tree(s) @@ -284,7 +280,6 @@ class BomItemResource(InvenTreeResource): def dehydrate_min_cost(self, item): """Render minimum cost value for the BOM line item""" - min_price = item.sub_part.pricing.overall_min if item.sub_part.pricing else None if min_price is not None: @@ -292,7 +287,6 @@ class BomItemResource(InvenTreeResource): def dehydrate_max_cost(self, item): """Render maximum cost value for the BOM line item""" - max_price = item.sub_part.pricing.overall_max if item.sub_part.pricing else None if max_price is not None: @@ -307,7 +301,6 @@ class BomItemResource(InvenTreeResource): def before_export(self, queryset, *args, **kwargs): """Perform before exporting data""" - self.is_importing = kwargs.get('importing', False) self.include_pricing = kwargs.pop('include_pricing', False) diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index a65a8bf583..64ac4d1f7a 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -50,7 +50,6 @@ class CategoryMixin: def get_queryset(self, *args, **kwargs): """Return an annotated queryset for the CategoryDetail endpoint""" - queryset = super().get_queryset(*args, **kwargs) queryset = part_serializers.CategorySerializer.annotate_queryset(queryset) return queryset @@ -77,7 +76,6 @@ class CategoryList(CategoryMixin, APIDownloadMixin, ListCreateAPI): def download_queryset(self, queryset, export_format): """Download the filtered queryset as a data file""" - dataset = PartCategoryResource().export(queryset=queryset) filedata = dataset.export(export_format) filename = f"InvenTree_Categories.{export_format}" @@ -190,6 +188,17 @@ class CategoryList(CategoryMixin, APIDownloadMixin, ListCreateAPI): class CategoryDetail(CategoryMixin, CustomRetrieveUpdateDestroyAPI): """API endpoint for detail view of a single PartCategory object.""" + def get_serializer(self, *args, **kwargs): + """Add additional context based on query parameters""" + try: + params = self.request.query_params + + kwargs['path_detail'] = str2bool(params.get('path_detail', False)) + except AttributeError: + pass + + return self.serializer_class(*args, **kwargs) + def update(self, request, *args, **kwargs): """Perform 'update' function and mark this part as 'starred' (or not)""" # Clean up input data @@ -326,10 +335,6 @@ class PartAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): queryset = PartAttachment.objects.all() serializer_class = part_serializers.PartAttachmentSerializer - filter_backends = [ - DjangoFilterBackend, - ] - filterset_fields = [ 'part', ] @@ -395,7 +400,7 @@ class PartThumbs(ListAPI): serializer_class = part_serializers.PartThumbSerializer def get_queryset(self): - """Return a queryset which exlcudes any parts without images""" + """Return a queryset which excludes any parts without images""" queryset = super().get_queryset() # Get all Parts which have an associated image @@ -458,7 +463,6 @@ class PartScheduling(RetrieveAPI): def retrieve(self, request, *args, **kwargs): """Return scheduling information for the referenced Part instance""" - part = self.get_object() schedule = [] @@ -597,8 +601,8 @@ class PartScheduling(RetrieveAPI): # Grab all allocations against the specified BomItem allocations = BuildItem.objects.filter( - bom_item=bom_item, - build=build, + build_line__bom_item=bom_item, + build_line__build=build, ) # Total allocated for *this* part @@ -666,7 +670,6 @@ class PartRequirements(RetrieveAPI): def retrieve(self, request, *args, **kwargs): """Construct a response detailing Part requirements""" - part = self.get_object() data = { @@ -692,13 +695,11 @@ class PartPricingDetail(RetrieveUpdateAPI): def get_object(self): """Return the PartPricing object associated with the linked Part""" - part = super().get_object() return part.pricing def _get_serializer(self, *args, **kwargs): """Return a part pricing serializer object""" - part = self.get_object() kwargs['instance'] = part.pricing @@ -817,22 +818,18 @@ class PartFilter(rest_filters.FilterSet): def filter_has_units(self, queryset, name, value): """Filter by whether the Part has units or not""" - if str2bool(value): return queryset.exclude(units='') - else: - return queryset.filter(units='') + return queryset.filter(units='') # Filter by parts which have (or not) an IPN value has_ipn = rest_filters.BooleanFilter(label='Has IPN', method='filter_has_ipn') def filter_has_ipn(self, queryset, name, value): """Filter by whether the Part has an IPN (internal part number) or not""" - if str2bool(value): return queryset.exclude(IPN='') - else: - return queryset.filter(IPN='') + return queryset.filter(IPN='') # Regex filter for name name_regex = rest_filters.CharFilter(label='Filter by name (regex)', field_name='name', lookup_expr='iregex') @@ -852,36 +849,30 @@ class PartFilter(rest_filters.FilterSet): def filter_low_stock(self, queryset, name, value): """Filter by "low stock" status.""" - if str2bool(value): # Ignore any parts which do not have a specified 'minimum_stock' level # Filter items which have an 'in_stock' level lower than 'minimum_stock' - return queryset.exclude(minimum_stock=0).filter(Q(in_stock__lt=F('minimum_stock'))) - else: - # Filter items which have an 'in_stock' level higher than 'minimum_stock' - return queryset.filter(Q(in_stock__gte=F('minimum_stock'))) + return queryset.exclude(minimum_stock=0).filter(Q(total_in_stock__lt=F('minimum_stock'))) + # Filter items which have an 'in_stock' level higher than 'minimum_stock' + return queryset.filter(Q(total_in_stock__gte=F('minimum_stock'))) # has_stock filter has_stock = rest_filters.BooleanFilter(label='Has stock', method='filter_has_stock') def filter_has_stock(self, queryset, name, value): """Filter by whether the Part has any stock""" - if str2bool(value): return queryset.filter(Q(in_stock__gt=0)) - else: - return queryset.filter(Q(in_stock__lte=0)) + return queryset.filter(Q(in_stock__lte=0)) # unallocated_stock filter unallocated_stock = rest_filters.BooleanFilter(label='Unallocated stock', method='filter_unallocated_stock') def filter_unallocated_stock(self, queryset, name, value): """Filter by whether the Part has unallocated stock""" - if str2bool(value): return queryset.filter(Q(unallocated_stock__gt=0)) - else: - return queryset.filter(Q(unallocated_stock__lte=0)) + return queryset.filter(Q(unallocated_stock__lte=0)) convert_from = rest_filters.ModelChoiceFilter(label="Can convert from", queryset=Part.objects.all(), method='filter_convert_from') @@ -897,7 +888,6 @@ class PartFilter(rest_filters.FilterSet): def filter_exclude_tree(self, queryset, name, part): """Exclude all parts and variants 'down' from the specified part from the queryset""" - children = part.get_descendants(include_self=True) return queryset.exclude(id__in=children) @@ -906,7 +896,6 @@ class PartFilter(rest_filters.FilterSet): def filter_ancestor(self, queryset, name, part): """Limit queryset to descendants of the specified ancestor part""" - descendants = part.get_descendants(include_self=False) return queryset.filter(id__in=descendants) @@ -914,14 +903,12 @@ class PartFilter(rest_filters.FilterSet): def filter_variant_of(self, queryset, name, part): """Limit queryset to direct children (variants) of the specified part""" - return queryset.filter(id__in=part.get_children()) in_bom_for = rest_filters.ModelChoiceFilter(label='In BOM Of', queryset=Part.objects.all(), method='filter_in_bom') def filter_in_bom(self, queryset, name, part): """Limit queryset to parts in the BOM for the specified part""" - bom_parts = part.get_parts_in_bom() return queryset.filter(id__in=[p.pk for p in bom_parts]) @@ -929,46 +916,38 @@ class PartFilter(rest_filters.FilterSet): def filter_has_pricing(self, queryset, name, value): """Filter the queryset based on whether pricing information is available for the sub_part""" - q_a = Q(pricing_data=None) q_b = Q(pricing_data__overall_min=None, pricing_data__overall_max=None) if str2bool(value): return queryset.exclude(q_a | q_b) - else: - return queryset.filter(q_a | q_b) + return queryset.filter(q_a | q_b) stocktake = rest_filters.BooleanFilter(label="Has stocktake", method='filter_has_stocktake') def filter_has_stocktake(self, queryset, name, value): """Filter the queryset based on whether stocktake data is available""" - if str2bool(value): return queryset.exclude(last_stocktake=None) - else: - return queryset.filter(last_stocktake=None) + return queryset.filter(last_stocktake=None) stock_to_build = rest_filters.BooleanFilter(label='Required for Build Order', method='filter_stock_to_build') def filter_stock_to_build(self, queryset, name, value): """Filter the queryset based on whether part stock is required for a pending BuildOrder""" - if str2bool(value): # Return parts which are required for a build order, but have not yet been allocated return queryset.filter(required_for_build_orders__gt=F('allocated_to_build_orders')) - else: - # Return parts which are not required for a build order, or have already been allocated - return queryset.filter(required_for_build_orders__lte=F('allocated_to_build_orders')) + # Return parts which are not required for a build order, or have already been allocated + return queryset.filter(required_for_build_orders__lte=F('allocated_to_build_orders')) depleted_stock = rest_filters.BooleanFilter(label='Depleted Stock', method='filter_depleted_stock') - def filter_deployed_stock(self, queryset, name, value): + def filter_depleted_stock(self, queryset, name, value): """Filter the queryset based on whether the part is fully depleted of stock""" - if str2bool(value): return queryset.filter(Q(in_stock=0) & ~Q(stock_item_count=0)) - else: - return queryset.exclude(Q(in_stock=0) & ~Q(stock_item_count=0)) + return queryset.exclude(Q(in_stock=0) & ~Q(stock_item_count=0)) is_template = rest_filters.BooleanFilter() @@ -990,6 +969,10 @@ class PartFilter(rest_filters.FilterSet): tags_slug = rest_filters.CharFilter(field_name='tags__slug', lookup_expr='iexact') + # Created date filters + created_before = rest_filters.DateFilter(label='Updated before', field_name='creation_date', lookup_expr='lte') + created_after = rest_filters.DateFilter(label='Updated after', field_name='creation_date', lookup_expr='gte') + class PartMixin: """Mixin class for Part API endpoints""" @@ -1028,6 +1011,7 @@ class PartMixin: kwargs['parameters'] = str2bool(params.get('parameters', None)) kwargs['category_detail'] = str2bool(params.get('category_detail', False)) + kwargs['path_detail'] = str2bool(params.get('path_detail', False)) except AttributeError: pass @@ -1082,8 +1066,7 @@ class PartList(PartMixin, APIDownloadMixin, ListCreateAPI): return self.get_paginated_response(data) elif request.is_ajax(): return JsonResponse(data, safe=False) - else: - return Response(data) + return Response(data) def filter_queryset(self, queryset): """Perform custom filtering of the queryset""" @@ -1206,11 +1189,11 @@ class PartList(PartMixin, APIDownloadMixin, ListCreateAPI): except (ValueError, PartCategory.DoesNotExist): pass - queryset = self.filter_parameteric_data(queryset) + queryset = self.filter_parametric_data(queryset) return queryset - def filter_parameteric_data(self, queryset): + def filter_parametric_data(self, queryset): """Filter queryset against part parameters. Here we can perform a number of different functions: @@ -1221,7 +1204,6 @@ class PartList(PartMixin, APIDownloadMixin, ListCreateAPI): - Only parts which have a matching parameter are returned - Queryset is ordered based on parameter value """ - # Extract "ordering" parameter from query args ordering = self.request.query_params.get('ordering', None) @@ -1267,6 +1249,13 @@ class PartList(PartMixin, APIDownloadMixin, ListCreateAPI): ] +class PartChangeCategory(CreateAPI): + """API endpoint to change the location of multiple parts in bulk""" + + serializer_class = part_serializers.PartSetCategorySerializer + queryset = Part.objects.none() + + class PartDetail(PartMixin, RetrieveUpdateDestroyAPI): """API endpoint for detail view of a single Part object.""" @@ -1281,10 +1270,9 @@ class PartDetail(PartMixin, RetrieveUpdateDestroyAPI): if not part.active: # Delete return super(PartDetail, self).destroy(request, *args, **kwargs) - else: - # Return 405 error - message = 'Part is active: cannot delete' - return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED, data=message) + # Return 405 error + message = 'Part is active: cannot delete' + return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED, data=message) def update(self, request, *args, **kwargs): """Custom update functionality for Part instance. @@ -1359,11 +1347,9 @@ class PartParameterTemplateFilter(rest_filters.FilterSet): def filter_has_choices(self, queryset, name, value): """Filter queryset to include only PartParameterTemplates with choices.""" - if str2bool(value): return queryset.exclude(Q(choices=None) | Q(choices='')) - else: - return queryset.filter(Q(choices=None) | Q(choices='')) + return queryset.filter(Q(choices=None) | Q(choices='')) has_units = rest_filters.BooleanFilter( method='filter_has_units', @@ -1372,11 +1358,9 @@ class PartParameterTemplateFilter(rest_filters.FilterSet): def filter_has_units(self, queryset, name, value): """Filter queryset to include only PartParameterTemplates with units.""" - if str2bool(value): return queryset.exclude(Q(units=None) | Q(units='')) - else: - return queryset.filter(Q(units=None) | Q(units='')) + return queryset.filter(Q(units=None) | Q(units='')) class PartParameterTemplateList(ListCreateAPI): @@ -1450,45 +1434,95 @@ class PartParameterTemplateDetail(RetrieveUpdateDestroyAPI): serializer_class = part_serializers.PartParameterTemplateSerializer -class PartParameterList(ListCreateAPI): - """API endpoint for accessing a list of PartParameter objects. - - - GET: Return list of PartParameter objects - - POST: Create a new PartParameter object - """ - +class PartParameterAPIMixin: + """Mixin class for PartParameter API endpoints.""" queryset = PartParameter.objects.all() serializer_class = part_serializers.PartParameterSerializer + def get_queryset(self, *args, **kwargs): + """Override get_queryset method to prefetch related fields""" + queryset = super().get_queryset(*args, **kwargs) + queryset = queryset.prefetch_related('part', 'template') + return queryset + def get_serializer(self, *args, **kwargs): """Return the serializer instance for this API endpoint. If requested, extra detail fields are annotated to the queryset: + - part_detail - template_detail """ - try: + kwargs['part_detail'] = str2bool(self.request.GET.get('part_detail', False)) kwargs['template_detail'] = str2bool(self.request.GET.get('template_detail', True)) except AttributeError: pass return self.serializer_class(*args, **kwargs) - filter_backends = [ - DjangoFilterBackend - ] - filterset_fields = [ +class PartParameterFilter(rest_filters.FilterSet): + """Custom filters for the PartParameterList API endpoint""" + + class Meta: + """Metaclass options for the filterset""" + model = PartParameter + fields = [ + 'template' + ] + + part = rest_filters.ModelChoiceFilter(queryset=Part.objects.all(), method='filter_part') + + def filter_part(self, queryset, name, part): + """Filter against the provided part. + + If 'include_variants' query parameter is provided, filter against variant parts also + """ + try: + include_variants = str2bool(self.request.GET.get('include_variants', False)) + except AttributeError: + include_variants = False + + if include_variants: + return queryset.filter(part__in=part.get_descendants(include_self=True)) + else: + return queryset.filter(part=part) + + +class PartParameterList(PartParameterAPIMixin, ListCreateAPI): + """API endpoint for accessing a list of PartParameter objects. + + - GET: Return list of PartParameter objects + - POST: Create a new PartParameter object + """ + + filterset_class = PartParameterFilter + + filter_backends = SEARCH_ORDER_FILTER_ALIAS + + ordering_fields = [ + 'name', + 'data', 'part', 'template', ] + ordering_field_aliases = { + 'name': 'template__name', + 'data': ['data_numeric', 'data'], + } -class PartParameterDetail(RetrieveUpdateDestroyAPI): + search_fields = [ + 'data', + 'template__name', + 'template__description', + 'template__units', + ] + + +class PartParameterDetail(PartParameterAPIMixin, RetrieveUpdateDestroyAPI): """API endpoint for detail view of a single PartParameter object.""" - - queryset = PartParameter.objects.all() - serializer_class = part_serializers.PartParameterSerializer + pass class PartStocktakeFilter(rest_filters.FilterSet): @@ -1607,34 +1641,28 @@ class BomFilter(rest_filters.FilterSet): def filter_available_stock(self, queryset, name, value): """Filter the queryset based on whether each line item has any available stock""" - if str2bool(value): return queryset.filter(available_stock__gt=0) - else: - return queryset.filter(available_stock=0) + return queryset.filter(available_stock=0) on_order = rest_filters.BooleanFilter(label="On order", method="filter_on_order") def filter_on_order(self, queryset, name, value): """Filter the queryset based on whether each line item has any stock on order""" - if str2bool(value): return queryset.filter(on_order__gt=0) - else: - return queryset.filter(on_order=0) + return queryset.filter(on_order=0) has_pricing = rest_filters.BooleanFilter(label="Has Pricing", method="filter_has_pricing") def filter_has_pricing(self, queryset, name, value): """Filter the queryset based on whether pricing information is available for the sub_part""" - q_a = Q(sub_part__pricing_data=None) q_b = Q(sub_part__pricing_data__overall_min=None, sub_part__pricing_data__overall_max=None) if str2bool(value): return queryset.exclude(q_a | q_b) - else: - return queryset.filter(q_a | q_b) + return queryset.filter(q_a | q_b) class BomMixin: @@ -1650,7 +1678,6 @@ class BomMixin: - part_detail - sub_part_detail """ - # Do we wish to include extra detail? try: kwargs['part_detail'] = str2bool(self.request.GET.get('part_detail', None)) @@ -1688,7 +1715,6 @@ class BomList(BomMixin, ListCreateDestroyAPIView): def list(self, request, *args, **kwargs): """Return serialized list response for this endpoint""" - queryset = self.filter_queryset(self.get_queryset()) page = self.paginate_queryset(queryset) @@ -1709,8 +1735,7 @@ class BomList(BomMixin, ListCreateDestroyAPIView): return self.get_paginated_response(data) elif request.is_ajax(): return JsonResponse(data, safe=False) - else: - return Response(data) + return Response(data) def filter_queryset(self, queryset): """Custom query filtering for the BomItem list API""" @@ -1785,6 +1810,10 @@ class BomList(BomMixin, ListCreateDestroyAPIView): 'quantity', 'sub_part', 'available_stock', + 'allow_variants', + 'inherited', + 'optional', + 'consumable', ] ordering_field_aliases = { @@ -1858,7 +1887,7 @@ class BomItemValidate(UpdateAPI): serializer = self.get_serializer(instance, data=data, partial=partial) serializer.is_valid(raise_exception=True) - if type(instance) == BomItem: + if isinstance(instance, BomItem): instance.validate_hash(valid) return Response(serializer.data) @@ -2016,6 +2045,8 @@ part_api_urls = [ re_path(r'^.*$', PartDetail.as_view(), name='api-part-detail'), ])), + re_path(r'^change_category/', PartChangeCategory.as_view(), name='api-part-change-category'), + re_path(r'^.*$', PartList.as_view(), name='api-part-list'), ] diff --git a/InvenTree/part/apps.py b/InvenTree/part/apps.py index 298ff486cd..9e59236cea 100644 --- a/InvenTree/part/apps.py +++ b/InvenTree/part/apps.py @@ -5,7 +5,8 @@ import logging from django.apps import AppConfig from django.db.utils import OperationalError, ProgrammingError -from InvenTree.ready import canAppAccessDatabase, isImportingData +from InvenTree.ready import (canAppAccessDatabase, isImportingData, + isInMainThread, isPluginRegistryLoaded) logger = logging.getLogger("inventree") @@ -16,6 +17,10 @@ class PartConfig(AppConfig): def ready(self): """This function is called whenever the Part app is loaded.""" + # skip loading if plugin registry is not loaded or we run in a background thread + if not isPluginRegistryLoaded() or not isInMainThread(): + return + if canAppAccessDatabase(): self.update_trackable_status() self.reset_part_pricing_flags() @@ -31,7 +36,7 @@ class PartConfig(AppConfig): items = BomItem.objects.filter(part__trackable=False, sub_part__trackable=True) for item in items: - logger.info(f"Marking part '{item.part.name}' as trackable") + logger.info("Marking part '%s' as trackable", item.part.name) item.part.trackable = True item.part.clean() item.part.save() @@ -44,18 +49,20 @@ class PartConfig(AppConfig): Prevents issues with state machine if the server is restarted mid-update """ - from .models import PartPricing if isImportingData(): return - items = PartPricing.objects.filter(scheduled_for_update=True) + try: + items = PartPricing.objects.filter(scheduled_for_update=True) - if items.count() > 0: - # Find any pricing objects which have the 'scheduled_for_update' flag set - print(f"Resetting update flags for {items.count()} pricing objects...") + if items.count() > 0: + # Find any pricing objects which have the 'scheduled_for_update' flag set + logger.info("Resetting update flags for %s pricing objects...", items.count()) - for pricing in items: - pricing.scheduled_for_update = False - pricing.save() + for pricing in items: + pricing.scheduled_for_update = False + pricing.save() + except Exception: + logger.exception("Failed to reset pricing flags - database not ready") diff --git a/InvenTree/part/bom.py b/InvenTree/part/bom.py index bc12e40d4f..525e60987b 100644 --- a/InvenTree/part/bom.py +++ b/InvenTree/part/bom.py @@ -63,7 +63,6 @@ def ExportBom(part: Part, fmt='csv', cascade: bool = False, max_levels: int = No Returns: StreamingHttpResponse: Response that can be passed to the endpoint """ - parameter_data = str2bool(kwargs.get('parameter_data', False)) stock_data = str2bool(kwargs.get('stock_data', False)) supplier_data = str2bool(kwargs.get('supplier_data', False)) diff --git a/InvenTree/part/filters.py b/InvenTree/part/filters.py index dbdc907bfd..e48909dd87 100644 --- a/InvenTree/part/filters.py +++ b/InvenTree/part/filters.py @@ -43,7 +43,6 @@ def annotate_on_order_quantity(reference: str = ''): Note that in addition to the 'quantity' on order, we must also take into account 'pack_quantity'. """ - # Filter only 'active' purhase orders # Filter only line with outstanding quantity order_filter = Q( @@ -85,7 +84,6 @@ def annotate_total_stock(reference: str = ''): reference: The relationship reference of the part from the current model e.g. 'part' stock_filter: Q object which defines how to filter the stock items """ - # Stock filter only returns 'in stock' items stock_filter = stock.models.StockItem.IN_STOCK_FILTER @@ -107,7 +105,6 @@ def annotate_build_order_requirements(reference: str = ''): - We are interested in the 'quantity' of each BuildLine item """ - # Active build orders only build_filter = Q(build__status__in=BuildStatusGroups.ACTIVE_CODES) @@ -132,7 +129,6 @@ def annotate_build_order_allocations(reference: str = ''): reference: The relationship reference of the part from the current model build_filter: Q object which defines how to filter the allocation items """ - # Build filter only returns 'active' build orders build_filter = Q(build_line__build__status__in=BuildStatusGroups.ACTIVE_CODES) @@ -157,7 +153,6 @@ def annotate_sales_order_allocations(reference: str = ''): reference: The relationship reference of the part from the current model order_filter: Q object which defines how to filter the allocation items """ - # Order filter only returns incomplete shipments for open orders order_filter = Q( line__order__status__in=SalesOrderStatusGroups.OPEN, @@ -183,7 +178,6 @@ def variant_stock_query(reference: str = '', filter: Q = stock.models.StockItem. reference: The relationship reference of the part from the current model filter: Q object which defines how to filter the returned StockItem instances """ - return stock.models.StockItem.objects.filter( part__tree_id=OuterRef(f'{reference}tree_id'), part__lft__gt=OuterRef(f'{reference}lft'), @@ -198,7 +192,6 @@ def annotate_variant_quantity(subquery: Q, reference: str = 'quantity'): subquery: A 'variant_stock_query' Q object reference: The relationship reference of the variant stock items from the current queryset """ - return Coalesce( Subquery( subquery.annotate( @@ -216,7 +209,6 @@ def annotate_category_parts(): - Includes parts in subcategories also - Requires subquery to perform annotation """ - # Construct a subquery to provide all parts in this category and any subcategories: subquery = part.models.Part.objects.exclude(category=None).filter( category__tree_id=OuterRef('tree_id'), @@ -250,9 +242,7 @@ def filter_by_parameter(queryset, template_id: int, value: str, func: str = ''): Returns: A queryset of Part objects filtered by the given parameter """ - # TODO - return queryset @@ -268,7 +258,6 @@ def order_by_parameter(queryset, template_id: int, ascending=True): Returns: A queryset of Part objects ordered by the given parameter """ - template_filter = part.models.PartParameter.objects.filter( template__id=template_id, part_id=OuterRef('id'), diff --git a/InvenTree/part/fixtures/part.yaml b/InvenTree/part/fixtures/part.yaml index a25a919520..3ff48e5ca3 100644 --- a/InvenTree/part/fixtures/part.yaml +++ b/InvenTree/part/fixtures/part.yaml @@ -156,6 +156,7 @@ variant_of: 10000 IPN: "R.CH" trackable: true + salable: true category: 7 tree_id: 1 level: 0 diff --git a/InvenTree/part/migrations/0114_alter_part_minimum_stock.py b/InvenTree/part/migrations/0114_alter_part_minimum_stock.py new file mode 100644 index 0000000000..2845504b0a --- /dev/null +++ b/InvenTree/part/migrations/0114_alter_part_minimum_stock.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.21 on 2023-09-24 13:27 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0113_auto_20230531_1205'), + ] + + operations = [ + migrations.AlterField( + model_name='part', + name='minimum_stock', + field=models.DecimalField(decimal_places=6, default=0, help_text='Minimum allowed stock level', max_digits=19, validators=[django.core.validators.MinValueValidator(0)], verbose_name='Minimum Stock'), + ), + ] diff --git a/InvenTree/part/migrations/0115_part_responsible_owner.py b/InvenTree/part/migrations/0115_part_responsible_owner.py new file mode 100644 index 0000000000..2605ac51f2 --- /dev/null +++ b/InvenTree/part/migrations/0115_part_responsible_owner.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.22 on 2023-10-23 01:59 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0009_auto_20231020_2356'), + ('part', '0114_alter_part_minimum_stock'), + ] + + operations = [ + migrations.AddField( + model_name='part', + name='responsible_owner', + field=models.ForeignKey(blank=True, help_text='Owner responsible for this part', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='parts_responsible', to='users.owner', verbose_name='Responsible'), + ), + ] diff --git a/InvenTree/part/migrations/0116_auto_20231023_0332.py b/InvenTree/part/migrations/0116_auto_20231023_0332.py new file mode 100644 index 0000000000..49f3f675a9 --- /dev/null +++ b/InvenTree/part/migrations/0116_auto_20231023_0332.py @@ -0,0 +1,76 @@ +# Generated by Django 3.2.22 on 2023-10-23 03:32 + +from django.db import migrations + + +def migrate_part_responsible_owner(apps, schema_editor): + """Copy existing part.responsible field to part.responsible_owner""" + + Owner = apps.get_model('users', 'Owner') + Part = apps.get_model('part', 'Part') + User = apps.get_model('auth', 'user') + ContentType = apps.get_model('contenttypes', 'contenttype') + + user_type = ContentType.objects.get_for_model(User) + + parts = Part.objects.exclude(responsible=None) + + for part in parts: + + # Find a corresponding Owner object, or create one if it does not exist + owner, _created = Owner.objects.get_or_create( + owner_type=user_type, + owner_id=part.responsible.id, + ) + + part.responsible_owner = owner + part.save() + + if parts.count() > 0: + print(f"Added 'responsible_owner' for {parts.count()} parts") + + +def reverse_owner_migration(apps, schema_editor): + """Reverse the owner migration: + + - Set the 'responsible' field to a selected user + - Only where 'responsible_owner' is set + - Only where 'responsible_owner' is a User object + """ + + Part = apps.get_model('part', 'Part') + User = apps.get_model('auth', 'user') + ContentType = apps.get_model('contenttypes', 'contenttype') + + user_type = ContentType.objects.get_for_model(User) + + parts = Part.objects.exclude(responsible_owner=None) + + for part in parts: + + if part.responsible_owner.owner_type == user_type: + + # Attempt to find matching user + try: + user = User.objects.get(pk=part.responsible_owner.owner_id) + part.responsible = user + part.save() + except User.DoesNotExist: + print("User does not exist:", part.responsible_owner.owner_id) + + if parts.count() > 0: + print(f"Added 'responsible' for {parts.count()} parts") + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0115_part_responsible_owner'), + ('users', '0005_owner_model'), + ] + + operations = [ + migrations.RunPython( + migrate_part_responsible_owner, + reverse_code=reverse_owner_migration, + ) + ] diff --git a/InvenTree/part/migrations/0117_remove_part_responsible.py b/InvenTree/part/migrations/0117_remove_part_responsible.py new file mode 100644 index 0000000000..add8405179 --- /dev/null +++ b/InvenTree/part/migrations/0117_remove_part_responsible.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.22 on 2023-10-23 05:28 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0116_auto_20231023_0332'), + ] + + operations = [ + migrations.RemoveField( + model_name='part', + name='responsible', + ), + ] diff --git a/InvenTree/part/migrations/0118_auto_20231024_1844.py b/InvenTree/part/migrations/0118_auto_20231024_1844.py new file mode 100644 index 0000000000..6a29bf89d6 --- /dev/null +++ b/InvenTree/part/migrations/0118_auto_20231024_1844.py @@ -0,0 +1,114 @@ +# Generated by Django 3.2.22 on 2023-10-24 16:44 + +from django.db import migrations +import djmoney.models.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0117_remove_part_responsible'), + ] + + operations = [ + migrations.AlterField( + model_name='partinternalpricebreak', + name='price_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='bom_cost_max_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='bom_cost_min_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='internal_cost_max_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='internal_cost_min_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='overall_max_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='overall_min_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='purchase_cost_max_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='purchase_cost_min_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='sale_history_max_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='sale_history_min_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='sale_price_max_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='sale_price_min_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='supplier_price_max_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='supplier_price_min_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='variant_cost_max_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partpricing', + name='variant_cost_min_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partsellpricebreak', + name='price_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partstocktake', + name='cost_max_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + migrations.AlterField( + model_name='partstocktake', + name='cost_min_currency', + field=djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3, null=True), + ), + ] diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 51f0b4d460..745704f580 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -41,6 +41,7 @@ import InvenTree.fields import InvenTree.ready import InvenTree.tasks import part.settings as part_settings +import users.models from build import models as BuildModels from common.models import InvenTreeSetting from common.settings import currency_code_default @@ -71,55 +72,23 @@ class PartCategory(MetadataMixin, InvenTreeTree): default_keywords: Default keywords for parts created in this category """ + ITEM_PARENT_KEY = 'category' + class Meta: """Metaclass defines extra model properties""" verbose_name = _("Part Category") verbose_name_plural = _("Part Categories") - def delete_recursive(self, *args, **kwargs): - """This function handles the recursive deletion of subcategories depending on kwargs contents""" - delete_parts = kwargs.get('delete_parts', False) - parent_category = kwargs.get('parent_category', None) - - if parent_category is None: - # First iteration, (no part_category kwargs passed) - parent_category = self.parent - - for child_part in self.parts.all(): - if delete_parts: - child_part.delete() - else: - child_part.category = parent_category - child_part.save() - - for child_category in self.children.all(): - if kwargs.get('delete_child_categories', False): - child_category.delete_recursive(**{ - "delete_child_categories": True, - "delete_parts": delete_parts, - "parent_category": parent_category}) - else: - child_category.parent = parent_category - child_category.save() - - super().delete(*args, **{}) - def delete(self, *args, **kwargs): """Custom model deletion routine, which updates any child categories or parts. This must be handled within a transaction.atomic(), otherwise the tree structure is damaged """ - with transaction.atomic(): - self.delete_recursive(**{ - "delete_parts": kwargs.get('delete_parts', False), - "delete_child_categories": kwargs.get('delete_child_categories', False), - "parent_category": self.parent}) - if self.parent is not None: - # Partially rebuild the tree (cheaper than a complete rebuild) - PartCategory.objects.partial_rebuild(self.tree_id) - else: - PartCategory.objects.rebuild() + super().delete( + delete_children=kwargs.get('delete_child_categories', False), + delete_items=kwargs.get('delete_parts', False), + ) default_location = TreeForeignKey( 'stock.StockLocation', related_name="default_categories", @@ -188,6 +157,10 @@ class PartCategory(MetadataMixin, InvenTreeTree): """Return the number of parts contained in this PartCategory""" return self.partcount() + def get_items(self, cascade=False): + """Return a queryset containing the parts which exist in this category""" + return self.get_parts(cascade=cascade) + def partcount(self, cascade=True, active=False): """Return the total part count under this category (including children of child categories).""" query = self.get_parts(cascade=cascade) @@ -379,7 +352,7 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) notes: Additional notes field for this part creation_date: Date that this part was added to the database creation_user: User who added this part to the database - responsible: User who is responsible for this part (optional) + responsible_owner: Owner (either user or group) which is responsible for this part (optional) last_stocktake: Date at which last stocktake was performed for this Part """ @@ -453,19 +426,21 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) If the part image has been updated, then check if the "old" (previous) image is still used by another part. If not, it is considered "orphaned" and will be deleted. """ - if self.pk: - previous = Part.objects.get(pk=self.pk) + try: + previous = Part.objects.get(pk=self.pk) - # Image has been changed - if previous.image is not None and self.image != previous.image: + # Image has been changed + if previous.image is not None and self.image != previous.image: - # Are there any (other) parts which reference the image? - n_refs = Part.objects.filter(image=previous.image).exclude(pk=self.pk).count() + # Are there any (other) parts which reference the image? + n_refs = Part.objects.filter(image=previous.image).exclude(pk=self.pk).count() - if n_refs == 0: - logger.info(f"Deleting unused image file '{previous.image}'") - previous.image.delete(save=False) + if n_refs == 0: + logger.info("Deleting unused image file '%s'", previous.image) + previous.image.delete(save=False) + except Part.DoesNotExist: + pass self.full_clean() @@ -508,17 +483,18 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) This will fail if: a) The parent part is the same as this one - b) The parent part is used in the BOM for *this* part - c) The parent part is used in the BOM for any child parts under this one + b) The parent part exists in the same variant tree as this one + c) The parent part is used in the BOM for *this* part + d) The parent part is used in the BOM for any child parts under this one """ result = True try: if self.pk == parent.pk: - raise ValidationError({'sub_part': _("Part '{p1}' is used in BOM for '{p2}' (recursive)").format( - p1=str(self), - p2=str(parent) - )}) + raise ValidationError({'sub_part': _(f"Part '{self}' cannot be used in BOM for '{parent}' (recursive)")}) + + if self.tree_id == parent.tree_id: + raise ValidationError({'sub_part': _(f"Part '{self}' cannot be used in BOM for '{parent}' (recursive)")}) bom_items = self.get_bom_items() @@ -527,10 +503,7 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) # Check for simple match if item.sub_part == parent: - raise ValidationError({'sub_part': _("Part '{p1}' is used in BOM for '{p2}' (recursive)").format( - p1=str(parent), - p2=str(self) - )}) + raise ValidationError({'sub_part': _(f"Part '{parent}' is used in BOM for '{self}' (recursive)")}) # And recursively check too if recursive: @@ -553,7 +526,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) This function is exposed to any Validation plugins, and thus can be customized. """ - from plugin.registry import registry for plugin in registry.with_mixin('validation'): @@ -576,7 +548,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) - Validation is handled by custom plugins - By default, no validation checks are performed """ - from plugin.registry import registry for plugin in registry.with_mixin('validation'): @@ -599,7 +570,7 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) match = re.search(pattern, self.IPN) if match is None: - raise ValidationError(_('IPN must match regex pattern {pat}').format(pat=pattern)) + raise ValidationError(_(f'IPN must match regex pattern {pattern}')) def validate_serial_number(self, serial: str, stock_item=None, check_duplicates=True, raise_error=False, **kwargs): """Validate a serial number against this Part instance. @@ -623,7 +594,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) Raises: ValidationError if serial number is invalid and raise_error = True """ - serial = str(serial).strip() # First, throw the serial number against each of the loaded validation plugins @@ -679,7 +649,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) def find_conflicting_serial_numbers(self, serials: list): """For a provided list of serials, return a list of those which are conflicting.""" - conflicts = [] for serial in serials: @@ -701,7 +670,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) Returns: The latest serial number specified for this part, or None """ - stock = StockModels.StockItem.objects.all().exclude(serial=None).exclude(serial='') # Generate a query for any stock items for this part variant tree with non-empty serial numbers @@ -745,7 +713,7 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) except Exception as attr_err: - logger.warning(f"exception while trying to create full name for part {self.name}", attr_err) + logger.warning("exception while trying to create full name for part %s: %s", self.name, attr_err) # Fallback to default format elements = [] @@ -768,15 +736,13 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) """Return the URL of the image for this part.""" if self.image: return helpers.getMediaUrl(self.image.url) - else: - return helpers.getBlankImage() + return helpers.getBlankImage() def get_thumbnail_url(self): """Return the URL of the image thumbnail for this part.""" if self.image: return helpers.getMediaUrl(self.image.thumbnail.url) - else: - return helpers.getBlankThumbnail() + return helpers.getBlankThumbnail() def validate_unique(self, exclude=None): """Validate that this Part instance is 'unique'. @@ -976,7 +942,8 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) help_text=_('Expiry time (in days) for stock items of this part'), ) - minimum_stock = models.PositiveIntegerField( + minimum_stock = models.DecimalField( + max_digits=19, decimal_places=6, default=0, validators=[MinValueValidator(0)], verbose_name=_('Minimum Stock'), help_text=_('Minimum allowed stock level') @@ -1040,7 +1007,13 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) creation_user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True, verbose_name=_('Creation User'), related_name='parts_created') - responsible = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True, verbose_name=_('Responsible'), help_text=_('User responsible for this part'), related_name='parts_responible') + responsible_owner = models.ForeignKey( + users.models.Owner, on_delete=models.SET_NULL, + blank=True, null=True, + verbose_name=_('Responsible'), + help_text=_('Owner responsible for this part'), + related_name='parts_responsible' + ) last_stocktake = models.DateField( blank=True, null=True, @@ -1233,7 +1206,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) @property def can_build(self): """Return the number of units that can be build with available stock.""" - import part.filters # If this part does NOT have a BOM, result is simply the currently available stock @@ -1432,7 +1404,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) def allocation_count(self, **kwargs): """Return the total quantity of stock allocated for this part, against both build orders and sales orders.""" - if self.id is None: # If this instance has not been saved, foreign-key lookups will fail return 0 @@ -1444,13 +1415,13 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) ], ) - def stock_entries(self, include_variants=True, in_stock=None): + def stock_entries(self, include_variants=True, in_stock=None, location=None): """Return all stock entries for this Part. - - If this is a template part, include variants underneath this. - - Note: To return all stock-entries for all part variants under this one, - we need to be creative with the filtering. + Arguments: + include_variants: If True, include stock entries for all part variants + in_stock: If True, filter by stock entries which are 'in stock' + location: If set, filter by stock entries in the specified location """ if include_variants: query = StockModels.StockItem.objects.filter(part__in=self.get_descendants(include_self=True)) @@ -1462,6 +1433,10 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) elif in_stock is False: query = query.exclude(StockModels.StockItem.IN_STOCK_FILTER) + if location: + locations = location.get_descendants(include_self=True) + query = query.filter(location__in=locations) + return query def get_stock_count(self, include_variants=True): @@ -1554,7 +1529,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) So we construct a query for each case, and combine them... """ - # Cache all *parent* parts try: parents = self.get_ancestors(include_self=False) @@ -1591,7 +1565,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) Includes consideration of inherited BOMs """ - # Grab a queryset of all BomItem objects which "require" this part bom_items = BomItem.objects.filter( self.get_used_in_bom_item_filter( @@ -1730,7 +1703,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) def update_pricing(self): """Recalculate cached pricing for this Part instance""" - self.pricing.update_pricing() @property @@ -1740,7 +1712,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) If there is no PartPricing database entry defined for this Part, it will first be created, and then returned. """ - try: pricing = PartPricing.objects.get(part=self) except PartPricing.DoesNotExist: @@ -1760,7 +1731,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) create: Whether or not a new PartPricing object should be created if it does not already exist test: Whether or not the pricing update is allowed during unit tests """ - try: self.refresh_from_db() except Part.DoesNotExist: @@ -1799,7 +1769,7 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) min_price = normalize(min_price) max_price = normalize(max_price) - return "{a} - {b}".format(a=min_price, b=max_price) + return f"{min_price} - {max_price}" def get_supplier_price_range(self, quantity=1): """Return the supplier price range of this part: @@ -1850,7 +1820,7 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) for item in self.get_bom_items().select_related('sub_part'): if item.sub_part.pk == self.pk: - logger.warning(f"WARNING: BomItem ID {item.pk} contains itself in BOM") + logger.warning("WARNING: BomItem ID %s contains itself in BOM", item.pk) continue q = decimal.Decimal(quantity) @@ -1911,12 +1881,10 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) elif bom_price_range is None: return buy_price_range - - else: - return ( - min(buy_price_range[0], bom_price_range[0]), - max(buy_price_range[1], bom_price_range[1]) - ) + return ( + min(buy_price_range[0], bom_price_range[0]), + max(buy_price_range[1], bom_price_range[1]) + ) base_cost = models.DecimalField(max_digits=19, decimal_places=6, default=0, validators=[MinValueValidator(0)], verbose_name=_('base cost'), help_text=_('Minimum charge (e.g. stocking fee)')) @@ -2028,10 +1996,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) if bom_item.part in my_ancestors and bom_item.inherited: continue - # Skip if already exists - if BomItem.objects.filter(part=self, sub_part=bom_item.sub_part).exists(): - continue - # Skip (or throw error) if BomItem is not valid if not bom_item.sub_part.check_add_to_bom(self, raise_error=raise_error): continue @@ -2098,7 +2062,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) def getTestTemplateMap(self, **kwargs): """Return a map of all test templates associated with this Part""" - templates = {} for template in self.getTestTemplates(**kwargs): @@ -2156,7 +2119,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) Note that some supplier parts may have a different pack_quantity attribute, and this needs to be taken into account! """ - quantity = 0 # Iterate through all supplier parts @@ -2209,7 +2171,6 @@ class Part(InvenTreeBarcodeMixin, InvenTreeNotesMixin, MetadataMixin, MPTTModel) @property def latest_stocktake(self): """Return the latest PartStocktake object associated with this part (if one exists)""" - return self.stocktakes.order_by('-pk').first() @property @@ -2347,10 +2308,11 @@ class PartPricing(common.models.MetaMixin): - Detailed pricing information is very context specific in any case """ + price_modified = False + @property def is_valid(self): """Return True if the cached pricing is valid""" - return self.updated is not None def convert(self, money): @@ -2358,7 +2320,6 @@ class PartPricing(common.models.MetaMixin): If a MissingRate error is raised, ignore it and return None """ - if money is None: return None @@ -2367,14 +2328,13 @@ class PartPricing(common.models.MetaMixin): try: result = convert_money(money, target_currency) except MissingRate: - logger.warning(f"No currency conversion rate available for {money.currency} -> {target_currency}") + logger.warning("No currency conversion rate available for %s -> %s", money.currency, target_currency) result = None return result def schedule_for_update(self, counter: int = 0, test: bool = False): """Schedule this pricing to be updated""" - import InvenTree.ready # If we are running within CI, only schedule the update if the test flag is set @@ -2398,7 +2358,7 @@ class PartPricing(common.models.MetaMixin): self.refresh_from_db() except (PartPricing.DoesNotExist, IntegrityError): # Error thrown if this PartPricing instance has already been removed - logger.warning(f"Error refreshing PartPricing instance for part '{self.part}'") + logger.warning("Error refreshing PartPricing instance for part '%s'", self.part) return # Ensure that the referenced part still exists in the database @@ -2406,12 +2366,12 @@ class PartPricing(common.models.MetaMixin): p = self.part p.refresh_from_db() except IntegrityError: - logger.error(f"Could not update PartPricing as Part '{self.part}' does not exist") + logger.exception("Could not update PartPricing as Part '%s' does not exist", self.part) return if self.scheduled_for_update: # Ignore if the pricing is already scheduled to be updated - logger.debug(f"Pricing for {p} already scheduled for update - skipping") + logger.debug("Pricing for %s already scheduled for update - skipping", p) return if counter > 25: @@ -2424,7 +2384,7 @@ class PartPricing(common.models.MetaMixin): self.save() except IntegrityError: # An IntegrityError here likely indicates that the referenced part has already been deleted - logger.error(f"Could not save PartPricing for part '{self.part}' to the database") + logger.exception("Could not save PartPricing for part '%s' to the database", self.part) return import part.tasks as part_tasks @@ -2440,7 +2400,6 @@ class PartPricing(common.models.MetaMixin): def update_pricing(self, counter: int = 0, cascade: bool = True): """Recalculate all cost data for the referenced Part instance""" - # If importing data, skip pricing update if InvenTree.ready.isImportingData(): return @@ -2473,13 +2432,12 @@ class PartPricing(common.models.MetaMixin): pass # Update parent assemblies and templates - if cascade: + if cascade and self.price_modified: self.update_assemblies(counter) self.update_templates(counter) def update_assemblies(self, counter: int = 0): """Schedule updates for any assemblies which use this part""" - # If the linked Part is used in any assemblies, schedule a pricing update for those assemblies used_in_parts = self.part.get_used_in() @@ -2488,7 +2446,6 @@ class PartPricing(common.models.MetaMixin): def update_templates(self, counter: int = 0): """Schedule updates for any template parts above this part""" - templates = self.part.get_ancestors(include_self=False) for p in templates: @@ -2496,7 +2453,6 @@ class PartPricing(common.models.MetaMixin): def save(self, *args, **kwargs): """Whenever pricing model is saved, automatically update overall prices""" - # Update the currency which was used to perform the calculation self.currency = currency_code_default() @@ -2518,7 +2474,6 @@ class PartPricing(common.models.MetaMixin): Note: The cumulative costs are calculated based on the specified default currency """ - if not self.part.assembly: # Not an assembly - no BOM pricing self.bom_cost_min = None @@ -2573,6 +2528,9 @@ class PartPricing(common.models.MetaMixin): any_max_elements = True + old_bom_cost_min = self.bom_cost_min + old_bom_cost_max = self.bom_cost_max + if any_min_elements: self.bom_cost_min = cumulative_min else: @@ -2583,6 +2541,9 @@ class PartPricing(common.models.MetaMixin): else: self.bom_cost_max = None + if old_bom_cost_min != self.bom_cost_min or old_bom_cost_max != self.bom_cost_max: + self.price_modified = True + if save: self.save() @@ -2591,7 +2552,6 @@ class PartPricing(common.models.MetaMixin): Purchase history only takes into account "completed" purchase orders. """ - # Find all line items for completed orders which reference this part line_items = OrderModels.PurchaseOrderLineItem.objects.filter( order__status=PurchaseOrderStatus.COMPLETE.value, @@ -2647,6 +2607,9 @@ class PartPricing(common.models.MetaMixin): if purchase_max is None or cost > purchase_max: purchase_max = cost + if self.purchase_cost_min != purchase_min or self.purchase_cost_max != purchase_max: + self.price_modified = True + self.purchase_cost_min = purchase_min self.purchase_cost_max = purchase_max @@ -2655,7 +2618,6 @@ class PartPricing(common.models.MetaMixin): def update_internal_cost(self, save=True): """Recalculate internal cost for the referenced Part instance""" - min_int_cost = None max_int_cost = None @@ -2674,6 +2636,9 @@ class PartPricing(common.models.MetaMixin): if max_int_cost is None or cost > max_int_cost: max_int_cost = cost + if self.internal_cost_min != min_int_cost or self.internal_cost_max != max_int_cost: + self.price_modified = True + self.internal_cost_min = min_int_cost self.internal_cost_max = max_int_cost @@ -2686,7 +2651,6 @@ class PartPricing(common.models.MetaMixin): - The limits are simply the lower and upper bounds of available SupplierPriceBreaks - We do not take "quantity" into account here """ - min_sup_cost = None max_sup_cost = None @@ -2713,6 +2677,9 @@ class PartPricing(common.models.MetaMixin): if max_sup_cost is None or cost > max_sup_cost: max_sup_cost = cost + if self.supplier_price_min != min_sup_cost or self.supplier_price_max != max_sup_cost: + self.price_modified = True + self.supplier_price_min = min_sup_cost self.supplier_price_max = max_sup_cost @@ -2724,7 +2691,6 @@ class PartPricing(common.models.MetaMixin): Here we track the min/max costs of any variant parts. """ - variant_min = None variant_max = None @@ -2750,6 +2716,9 @@ class PartPricing(common.models.MetaMixin): if variant_max is None or v_max > variant_max: variant_max = v_max + if self.variant_cost_min != variant_min or self.variant_cost_max != variant_max: + self.price_modified = True + self.variant_cost_min = variant_min self.variant_cost_max = variant_max @@ -2761,7 +2730,6 @@ class PartPricing(common.models.MetaMixin): Here we simply take the minimum / maximum values of the other calculated fields. """ - overall_min = None overall_max = None @@ -2827,7 +2795,6 @@ class PartPricing(common.models.MetaMixin): def update_sale_cost(self, save=True): """Recalculate sale cost data""" - # Iterate through the sell price breaks min_sell_price = None max_sell_price = None @@ -2874,6 +2841,9 @@ class PartPricing(common.models.MetaMixin): if max_sell_history is None or cost > max_sell_history: max_sell_history = cost + if self.sale_history_min != min_sell_history or self.sale_history_max != max_sell_history: + self.price_modified = True + self.sale_history_min = min_sell_history self.sale_history_max = max_sell_history @@ -3064,7 +3034,6 @@ class PartStocktake(models.Model): @receiver(post_save, sender=PartStocktake, dispatch_uid='post_save_stocktake') def update_last_stocktake(sender, instance, created, **kwargs): """Callback function when a PartStocktake instance is created / edited""" - # When a new PartStocktake instance is create, update the last_stocktake date for the Part if created: try: @@ -3077,7 +3046,6 @@ def update_last_stocktake(sender, instance, created, **kwargs): def save_stocktake_report(instance, filename): """Save stocktake reports to the correct subdirectory""" - filename = os.path.basename(filename) return os.path.join('stocktake', 'report', filename) @@ -3107,8 +3075,7 @@ class PartStocktakeReport(models.Model): """Return the URL for the associaed report file for download""" if self.report: return self.report.url - else: - return None + return None date = models.DateField( verbose_name=_('Date'), @@ -3361,7 +3328,7 @@ class PartParameterTemplate(MetadataMixin, models.Model): """Return a string representation of a PartParameterTemplate instance""" s = str(self.name) if self.units: - s += " ({units})".format(units=self.units) + s += f" ({self.units})" return s def clean(self): @@ -3370,7 +3337,6 @@ class PartParameterTemplate(MetadataMixin, models.Model): - A 'checkbox' field cannot have 'choices' set - A 'checkbox' field cannot have 'units' set """ - super().clean() # Check that checkbox parameters do not have units or choices @@ -3423,7 +3389,6 @@ class PartParameterTemplate(MetadataMixin, models.Model): def get_choices(self): """Return a list of choices for this parameter template""" - if not self.choices: return [] @@ -3469,7 +3434,6 @@ class PartParameterTemplate(MetadataMixin, models.Model): @receiver(post_save, sender=PartParameterTemplate, dispatch_uid='post_save_part_parameter_template') def post_save_part_parameter_template(sender, instance, created, **kwargs): """Callback function when a PartParameterTemplate is created or saved""" - import part.tasks as part_tasks if InvenTree.ready.canAppAccessDatabase() and not InvenTree.ready.isImportingData(): @@ -3504,16 +3468,10 @@ class PartParameter(MetadataMixin, models.Model): def __str__(self): """String representation of a PartParameter (used in the admin interface)""" - return "{part} : {param} = {data} ({units})".format( - part=str(self.part.full_name), - param=str(self.template.name), - data=str(self.data), - units=str(self.template.units) - ) + return f"{self.part.full_name} : {self.template.name} = {self.data} ({self.template.units})" def save(self, *args, **kwargs): """Custom save method for the PartParameter model.""" - # Validate the PartParameter before saving self.calculate_numeric_value() @@ -3526,17 +3484,17 @@ class PartParameter(MetadataMixin, models.Model): def clean(self): """Validate the PartParameter before saving to the database.""" - super().clean() # Validate the parameter data against the template units - if self.template.units: - try: - InvenTree.conversion.convert_physical_value(self.data, self.template.units) - except ValidationError as e: - raise ValidationError({ - 'data': e.message - }) + if InvenTreeSetting.get_setting('PART_PARAMETER_ENFORCE_UNITS', True, cache=False, create=False): + if self.template.units: + try: + InvenTree.conversion.convert_physical_value(self.data, self.template.units) + except ValidationError as e: + raise ValidationError({ + 'data': e.message + }) # Validate the parameter data against the template choices if choices := self.template.get_choices(): @@ -3569,11 +3527,9 @@ class PartParameter(MetadataMixin, models.Model): - If a 'units' field is provided, then the data will be converted to the base SI unit. - Otherwise, we'll try to do a simple float cast """ - if self.template.units: try: - converted = InvenTree.conversion.convert_physical_value(self.data, self.template.units) - self.data_numeric = float(converted.magnitude) + self.data_numeric = InvenTree.conversion.convert_physical_value(self.data, self.template.units) except (ValidationError, ValueError): self.data_numeric = None @@ -3655,8 +3611,7 @@ class PartCategoryParameterTemplate(MetadataMixin, models.Model): """String representation of a PartCategoryParameterTemplate (admin interface).""" if self.default_value: return f'{self.category.name} | {self.parameter_template.name} | {self.default_value}' - else: - return f'{self.category.name} | {self.parameter_template.name}' + return f'{self.category.name} | {self.parameter_template.name}' category = models.ForeignKey(PartCategory, on_delete=models.CASCADE, @@ -3736,16 +3691,24 @@ class BomItem(DataImportMixin, MetadataMixin, models.Model): def __str__(self): """Return a string representation of this BomItem instance""" - return "{n} x {child} to make {parent}".format( - parent=self.part.full_name, - child=self.sub_part.full_name, - n=decimal2string(self.quantity)) + return f"{decimal2string(self.quantity)} x {self.sub_part.full_name} to make {self.part.full_name}" @staticmethod def get_api_url(): """Return the list API endpoint URL associated with the BomItem model""" return reverse('api-bom-list') + def get_assemblies(self): + """Return a list of assemblies which use this BomItem""" + assemblies = [self.part] + + if self.inherited: + assemblies += list( + self.part.get_descendants(include_self=False) + ) + + return assemblies + def get_valid_parts_for_allocation(self, allow_variants=True, allow_substitutes=True): """Return a list of valid parts which can be allocated against this BomItem. @@ -4042,7 +4005,18 @@ class BomItem(DataImportMixin, MetadataMixin, models.Model): pmin = decimal2money(pmin) pmax = decimal2money(pmax) - return "{pmin} to {pmax}".format(pmin=pmin, pmax=pmax) + return f"{pmin} to {pmax}" + + +@receiver(post_save, sender=BomItem, dispatch_uid='update_bom_build_lines') +def update_bom_build_lines(sender, instance, created, **kwargs): + """Update existing build orders when a BomItem is created or edited""" + if InvenTree.ready.canAppAccessDatabase() and not InvenTree.ready.isImportingData(): + import build.tasks + InvenTree.tasks.offload_task( + build.tasks.update_build_order_lines, + instance.pk + ) @receiver(post_save, sender=BomItem, dispatch_uid='post_save_bom_item') @@ -4050,7 +4024,6 @@ class BomItem(DataImportMixin, MetadataMixin, models.Model): @receiver(post_save, sender=PartInternalPriceBreak, dispatch_uid='post_save_internal_price_break') def update_pricing_after_edit(sender, instance, created, **kwargs): """Callback function when a part price break is created or updated""" - # Update part pricing *unless* we are importing data if InvenTree.ready.canAppAccessDatabase() and not InvenTree.ready.isImportingData(): instance.part.schedule_pricing_update(create=True) @@ -4061,7 +4034,6 @@ def update_pricing_after_edit(sender, instance, created, **kwargs): @receiver(post_delete, sender=PartInternalPriceBreak, dispatch_uid='post_delete_internal_price_break') def update_pricing_after_delete(sender, instance, **kwargs): """Callback function when a part price break is deleted""" - # Update part pricing *unless* we are importing data if InvenTree.ready.canAppAccessDatabase() and not InvenTree.ready.isImportingData(): instance.part.schedule_pricing_update(create=False) @@ -4152,7 +4124,6 @@ class PartRelated(MetadataMixin, models.Model): def clean(self): """Overwrite clean method to check that relation is unique.""" - super().clean() if self.part_1 == self.part_2: diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index 512c5cd08b..e2897a3c14 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -23,8 +23,10 @@ import InvenTree.helpers import InvenTree.serializers import InvenTree.status import part.filters +import part.stocktake import part.tasks import stock.models +import users.models from InvenTree.status_codes import BuildStatusGroups from InvenTree.tasks import offload_task @@ -54,12 +56,22 @@ class CategorySerializer(InvenTree.serializers.InvenTreeModelSerializer): 'parent', 'part_count', 'pathstring', + 'path', 'starred', 'url', 'structural', 'icon', ] + def __init__(self, *args, **kwargs): + """Optionally add or remove extra fields""" + path_detail = kwargs.pop('path_detail', False) + + super().__init__(*args, **kwargs) + + if not path_detail: + self.fields.pop('path') + def get_starred(self, category): """Return True if the category is directly "starred" by the current user.""" return category in self.context.get('starred_categories', []) @@ -67,7 +79,6 @@ class CategorySerializer(InvenTree.serializers.InvenTreeModelSerializer): @staticmethod def annotate_queryset(queryset): """Annotate extra information to the queryset""" - # Annotate the number of 'parts' which exist in each category (including subcategories!) queryset = queryset.annotate( part_count=part.filters.annotate_category_parts() @@ -83,6 +94,12 @@ class CategorySerializer(InvenTree.serializers.InvenTreeModelSerializer): starred = serializers.SerializerMethodField() + path = serializers.ListField( + child=serializers.DictField(), + source='get_path', + read_only=True, + ) + class CategoryTree(InvenTree.serializers.InvenTreeModelSerializer): """Serializer for PartCategory tree.""" @@ -95,6 +112,7 @@ class CategoryTree(InvenTree.serializers.InvenTreeModelSerializer): 'name', 'parent', 'icon', + 'structural', ] @@ -221,37 +239,6 @@ class PartParameterTemplateSerializer(InvenTree.serializers.InvenTreeModelSerial ] -class PartParameterSerializer(InvenTree.serializers.InvenTreeModelSerializer): - """JSON serializers for the PartParameter model.""" - - class Meta: - """Metaclass defining serializer fields""" - model = PartParameter - fields = [ - 'pk', - 'part', - 'template', - 'template_detail', - 'data', - 'data_numeric', - ] - - def __init__(self, *args, **kwargs): - """Custom initialization method for the serializer. - - Allows us to optionally include or exclude particular information - """ - - template_detail = kwargs.pop('template_detail', False) - - super().__init__(*args, **kwargs) - - if not template_detail: - self.fields.pop('template_detail') - - template_detail = PartParameterTemplateSerializer(source='template', many=False, read_only=True) - - class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer): """Serializer for Part (brief detail)""" @@ -284,6 +271,16 @@ class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer): 'barcode_hash', ] + def __init__(self, *args, **kwargs): + """Custom initialization routine for the PartBrief serializer""" + pricing = kwargs.pop('pricing', True) + + super().__init__(*args, **kwargs) + + if not pricing: + self.fields.pop('pricing_min') + self.fields.pop('pricing_max') + thumbnail = serializers.CharField(source='get_thumbnail_url', read_only=True) # Pricing fields @@ -291,6 +288,91 @@ class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer): pricing_max = InvenTree.serializers.InvenTreeMoneySerializer(source='pricing_data.overall_max', allow_null=True, read_only=True) +class PartParameterSerializer(InvenTree.serializers.InvenTreeModelSerializer): + """JSON serializers for the PartParameter model.""" + + class Meta: + """Metaclass defining serializer fields""" + model = PartParameter + fields = [ + 'pk', + 'part', + 'part_detail', + 'template', + 'template_detail', + 'data', + 'data_numeric', + ] + + def __init__(self, *args, **kwargs): + """Custom initialization method for the serializer. + + Allows us to optionally include or exclude particular information + """ + template_detail = kwargs.pop('template_detail', True) + part_detail = kwargs.pop('part_detail', False) + + super().__init__(*args, **kwargs) + + if not part_detail: + self.fields.pop('part_detail') + + if not template_detail: + self.fields.pop('template_detail') + + part_detail = PartBriefSerializer(source='part', many=False, read_only=True) + template_detail = PartParameterTemplateSerializer(source='template', many=False, read_only=True) + + +class PartSetCategorySerializer(serializers.Serializer): + """Serializer for changing PartCategory for multiple Part objects""" + + class Meta: + """Metaclass options""" + fields = [ + 'parts', + 'category', + ] + + parts = serializers.PrimaryKeyRelatedField( + queryset=Part.objects.all(), + many=True, required=True, allow_null=False, + label=_('Parts'), + ) + + def validate_parts(self, parts): + """Validate the selected parts""" + if len(parts) == 0: + raise serializers.ValidationError(_("No parts selected")) + + return parts + + category = serializers.PrimaryKeyRelatedField( + queryset=PartCategory.objects.filter(structural=False), + many=False, required=True, allow_null=False, + label=_('Category'), + help_text=_('Select category',) + ) + + @transaction.atomic + def save(self): + """Save the serializer to change the location of the selected parts""" + data = self.validated_data + parts = data['parts'] + category = data['category'] + + parts_to_save = [] + + for p in parts: + if p.category == category: + continue + + p.category = category + parts_to_save.append(p) + + Part.objects.bulk_update(parts_to_save, ['category']) + + class DuplicatePartSerializer(serializers.Serializer): """Serializer for specifying options when duplicating a Part. @@ -318,6 +400,11 @@ class DuplicatePartSerializer(serializers.Serializer): required=False, default=False, ) + copy_notes = serializers.BooleanField( + label=_('Copy Notes'), help_text=_('Copy notes from original part'), + required=False, default=True, + ) + class InitialStockSerializer(serializers.Serializer): """Serializer for creating initial stock quantity.""" @@ -362,7 +449,6 @@ class InitialSupplierSerializer(serializers.Serializer): def validate_supplier(self, company): """Validation for the provided Supplier""" - if company and not company.is_supplier: raise serializers.ValidationError(_('Selected company is not a valid supplier')) @@ -370,7 +456,6 @@ class InitialSupplierSerializer(serializers.Serializer): def validate_manufacturer(self, company): """Validation for the provided Manufacturer""" - if company and not company.is_manufacturer: raise serializers.ValidationError(_('Selected company is not a valid manufacturer')) @@ -378,7 +463,6 @@ class InitialSupplierSerializer(serializers.Serializer): def validate(self, data): """Extra validation for this serializer""" - if company.models.ManufacturerPart.objects.filter( manufacturer=data.get('manufacturer', None), MPN=data.get('mpn', '') @@ -414,6 +498,7 @@ class PartSerializer(InvenTree.serializers.RemoteImageMixin, InvenTree.serialize 'barcode_hash', 'category', 'category_detail', + 'category_path', 'component', 'default_expiry', 'default_location', @@ -482,6 +567,8 @@ class PartSerializer(InvenTree.serializers.RemoteImageMixin, InvenTree.serialize category_detail = kwargs.pop('category_detail', False) parameters = kwargs.pop('parameters', False) create = kwargs.pop('create', False) + pricing = kwargs.pop('pricing', True) + path_detail = kwargs.pop('path_detail', False) super().__init__(*args, **kwargs) @@ -491,18 +578,24 @@ class PartSerializer(InvenTree.serializers.RemoteImageMixin, InvenTree.serialize if not parameters: self.fields.pop('parameters') + if not path_detail: + self.fields.pop('category_path') + if not create: # These fields are only used for the LIST API endpoint for f in self.skip_create_fields()[1:]: self.fields.pop(f) + if not pricing: + self.fields.pop('pricing_min') + self.fields.pop('pricing_max') + def get_api_url(self): """Return the API url associated with this serializer""" return reverse_lazy('api-part-list') def skip_create_fields(self): """Skip these fields when instantiating a new Part instance""" - fields = super().skip_create_fields() fields += [ @@ -520,7 +613,6 @@ class PartSerializer(InvenTree.serializers.RemoteImageMixin, InvenTree.serialize Performing database queries as efficiently as possible, to reduce database trips. """ - # Annotate with the total number of stock items queryset = queryset.annotate( stock_item_count=SubqueryCount('stock_items') @@ -598,6 +690,18 @@ class PartSerializer(InvenTree.serializers.RemoteImageMixin, InvenTree.serialize # Extra detail for the category category_detail = CategorySerializer(source='category', many=False, read_only=True) + category_path = serializers.ListField( + child=serializers.DictField(), + source='category.get_path', + read_only=True, + ) + + responsible = serializers.PrimaryKeyRelatedField( + queryset=users.models.Owner.objects.all(), + required=False, allow_null=True, + source='responsible_owner', + ) + # Annotated fields allocated_to_build_orders = serializers.FloatField(read_only=True) allocated_to_sales_orders = serializers.FloatField(read_only=True) @@ -611,6 +715,8 @@ class PartSerializer(InvenTree.serializers.RemoteImageMixin, InvenTree.serialize unallocated_stock = serializers.FloatField(read_only=True) variant_stock = serializers.FloatField(read_only=True) + minimum_stock = serializers.FloatField() + image = InvenTree.serializers.InvenTreeImageSerializerField(required=False, allow_null=True) thumbnail = serializers.CharField(source='get_thumbnail_url', read_only=True) starred = serializers.SerializerMethodField() @@ -652,7 +758,6 @@ class PartSerializer(InvenTree.serializers.RemoteImageMixin, InvenTree.serialize @transaction.atomic def create(self, validated_data): """Custom method for creating a new Part instance using this serializer""" - duplicate = validated_data.pop('duplicate', None) initial_stock = validated_data.pop('initial_stock', None) initial_supplier = validated_data.pop('initial_supplier', None) @@ -672,6 +777,10 @@ class PartSerializer(InvenTree.serializers.RemoteImageMixin, InvenTree.serialize if duplicate['copy_bom']: instance.copy_bom_from(original) + if duplicate['copy_notes']: + instance.notes = original.notes + instance.save() + if duplicate['copy_image']: instance.image = original.image instance.save() @@ -705,7 +814,7 @@ class PartSerializer(InvenTree.serializers.RemoteImageMixin, InvenTree.serialize save=True ) except IntegrityError: - logger.error(f"Could not create new PartParameter for part {instance}") + logger.exception("Could not create new PartParameter for part %s", instance) # Create initial stock entry if initial_stock: @@ -751,7 +860,6 @@ class PartSerializer(InvenTree.serializers.RemoteImageMixin, InvenTree.serialize def save(self): """Save the Part instance""" - super().save() part = self.instance @@ -814,7 +922,6 @@ class PartStocktakeSerializer(InvenTree.serializers.InvenTreeModelSerializer): def save(self): """Called when this serializer is saved""" - data = self.validated_data # Add in user information automatically @@ -866,6 +973,12 @@ class PartStocktakeReportGenerateSerializer(serializers.Serializer): label=_('Location'), help_text=_('Limit stocktake report to a particular stock location, and any child locations') ) + exclude_external = serializers.BooleanField( + default=True, + label=_('Exclude External Stock'), + help_text=_('Exclude stock items in external locations') + ) + generate_report = serializers.BooleanField( default=True, label=_('Generate Report'), @@ -880,7 +993,6 @@ class PartStocktakeReportGenerateSerializer(serializers.Serializer): def validate(self, data): """Custom validation for this serializer""" - # Stocktake functionality must be enabled if not common.models.InvenTreeSetting.get_setting('STOCKTAKE_ENABLE', False): raise serializers.ValidationError(_("Stocktake functionality is not enabled")) @@ -893,18 +1005,18 @@ class PartStocktakeReportGenerateSerializer(serializers.Serializer): def save(self): """Saving this serializer instance requests generation of a new stocktake report""" - data = self.validated_data user = self.context['request'].user # Generate a new report offload_task( - part.tasks.generate_stocktake_report, + part.stocktake.generate_stocktake_report, force_async=True, user=user, part=data.get('part', None), category=data.get('category', None), location=data.get('location', None), + exclude_external=data.get('exclude_external', True), generate_report=data.get('generate_report', True), update_parts=data.get('update_parts', True), ) @@ -1037,7 +1149,7 @@ class BomItemSubstituteSerializer(InvenTree.serializers.InvenTreeModelSerializer 'part_detail', ] - part_detail = PartBriefSerializer(source='part', read_only=True, many=False) + part_detail = PartBriefSerializer(source='part', read_only=True, many=False, pricing=False) class BomItemSerializer(InvenTree.serializers.InvenTreeModelSerializer): @@ -1072,6 +1184,9 @@ class BomItemSerializer(InvenTree.serializers.InvenTreeModelSerializer): # Annotated field describing quantity on order 'on_order', + + # Annotated field describing quantity being built + 'building', ] def __init__(self, *args, **kwargs): @@ -1082,15 +1197,20 @@ class BomItemSerializer(InvenTree.serializers.InvenTreeModelSerializer): """ part_detail = kwargs.pop('part_detail', False) sub_part_detail = kwargs.pop('sub_part_detail', False) + pricing = kwargs.pop('pricing', True) super(BomItemSerializer, self).__init__(*args, **kwargs) - if part_detail is not True: + if not part_detail: self.fields.pop('part_detail') - if sub_part_detail is not True: + if not sub_part_detail: self.fields.pop('sub_part_detail') + if not pricing: + self.fields.pop('pricing_min') + self.fields.pop('pricing_max') + quantity = InvenTree.serializers.InvenTreeDecimalField(required=True) def validate_quantity(self, quantity): @@ -1111,6 +1231,7 @@ class BomItemSerializer(InvenTree.serializers.InvenTreeModelSerializer): sub_part_detail = PartBriefSerializer(source='sub_part', many=False, read_only=True) on_order = serializers.FloatField(read_only=True) + building = serializers.FloatField(read_only=True) # Cached pricing fields pricing_min = InvenTree.serializers.InvenTreeMoneySerializer(source='sub_part.pricing.overall_min', allow_null=True, read_only=True) @@ -1142,6 +1263,10 @@ class BomItemSerializer(InvenTree.serializers.InvenTreeModelSerializer): 'substitutes__part__stock_items', ) + queryset = queryset.prefetch_related( + 'sub_part__builds', + ) + return queryset @staticmethod @@ -1163,6 +1288,18 @@ class BomItemSerializer(InvenTree.serializers.InvenTreeModelSerializer): on_order=part.filters.annotate_on_order_quantity(ref), ) + # Annotate with the total "building" amount for the sub-part + queryset = queryset.annotate( + building=Coalesce( + SubquerySum( + 'sub_part__builds__quantity', + filter=Q(status__in=BuildStatusGroups.ACTIVE_CODES), + ), + Decimal(0), + output_field=models.DecimalField(), + ) + ) + # Calculate "total stock" for the referenced sub_part # Calculate the "build_order_allocations" for the sub_part # Note that these fields are only aliased, not annotated @@ -1355,7 +1492,8 @@ class BomImportExtractSerializer(InvenTree.serializers.DataFileExtractSerializer # At least one part column is required! raise serializers.ValidationError(_("No part column specified")) - def process_row(self, row): + @staticmethod + def process_row(row): """Process a single row from the loaded BOM file""" # Skip any rows which are at a lower "level" level = row.get('level', None) @@ -1456,20 +1594,26 @@ class BomImportSubmitSerializer(serializers.Serializer): items = data['items'] + bom_items = [] + try: - with transaction.atomic(): - for item in items: + for item in items: - part = item['part'] - sub_part = item['sub_part'] + part = item['part'] + sub_part = item['sub_part'] - # Ignore duplicate BOM items - if BomItem.objects.filter(part=part, sub_part=sub_part).exists(): - continue + # Ignore duplicate BOM items + if BomItem.objects.filter(part=part, sub_part=sub_part).exists(): + continue - # Create a new BomItem object - BomItem.objects.create(**item) + bom_items.append( + BomItem(**item) + ) + + if len(bom_items) > 0: + logger.info("Importing %s BOM items", len(bom_items)) + BomItem.objects.bulk_create(bom_items) except Exception as e: raise serializers.ValidationError(detail=serializers.as_serializer_error(e)) diff --git a/InvenTree/part/stocktake.py b/InvenTree/part/stocktake.py new file mode 100644 index 0000000000..b889b11474 --- /dev/null +++ b/InvenTree/part/stocktake.py @@ -0,0 +1,306 @@ +"""Stocktake report functionality""" + +import io +import logging +import time +from datetime import datetime + +from django.contrib.auth.models import User +from django.core.files.base import ContentFile +from django.utils.translation import gettext_lazy as _ + +import tablib +from djmoney.contrib.exchange.models import convert_money +from djmoney.money import Money + +import common.models +import InvenTree.helpers +import part.models +import stock.models + +logger = logging.getLogger('inventree') + + +def perform_stocktake(target: part.models.Part, user: User, note: str = '', commit=True, **kwargs): + """Perform stocktake action on a single part. + + arguments: + target: A single Part model instance + commit: If True (default) save the result to the database + user: User who requested this stocktake + + kwargs: + exclude_external: If True, exclude stock items in external locations (default = False) + location: Optional StockLocation to filter results for generated report + + Returns: + PartStocktake: A new PartStocktake model instance (for the specified Part) + + Note that while we record a *total stocktake* for the Part instance which gets saved to the database, + the user may have requested a stocktake limited to a particular location. + + In this case, the stocktake *report* will be limited to the specified location. + """ + # Determine which locations are "valid" for the generated report + location = kwargs.get('location', None) + locations = location.get_descendants(include_self=True) if location else [] + + # Grab all "available" stock items for the Part + # We do not include variant stock when performing a stocktake, + # otherwise the stocktake entries will be duplicated + stock_entries = target.stock_entries(in_stock=True, include_variants=False) + + exclude_external = kwargs.get('exclude_external', False) + + if exclude_external: + stock_entries = stock_entries.exclude(location__external=True) + + # Cache min/max pricing information for this Part + pricing = target.pricing + + if not pricing.is_valid: + # If pricing is not valid, let's update + logger.info("Pricing not valid for %s - updating", target) + pricing.update_pricing(cascade=False) + pricing.refresh_from_db() + + base_currency = common.settings.currency_code_default() + + # Keep track of total quantity and cost for this part + total_quantity = 0 + total_cost_min = Money(0, base_currency) + total_cost_max = Money(0, base_currency) + + # Separately, keep track of stock quantity and value within the specified location + location_item_count = 0 + location_quantity = 0 + location_cost_min = Money(0, base_currency) + location_cost_max = Money(0, base_currency) + + for entry in stock_entries: + + entry_cost_min = None + entry_cost_max = None + + # Update price range values + if entry.purchase_price: + entry_cost_min = entry.purchase_price + entry_cost_max = entry.purchase_price + + else: + # If no purchase price is available, fall back to the part pricing data + entry_cost_min = pricing.overall_min or pricing.overall_max + entry_cost_max = pricing.overall_max or pricing.overall_min + + # Convert to base currency + try: + entry_cost_min = convert_money(entry_cost_min, base_currency) * entry.quantity + entry_cost_max = convert_money(entry_cost_max, base_currency) * entry.quantity + except Exception: + + entry_cost_min = Money(0, base_currency) + entry_cost_max = Money(0, base_currency) + + # Update total cost values + total_quantity += entry.quantity + total_cost_min += entry_cost_min + total_cost_max += entry_cost_max + + # Test if this stock item is within the specified location + if location and entry.location not in locations: + continue + + # Update location cost values + location_item_count += 1 + location_quantity += entry.quantity + location_cost_min += entry_cost_min + location_cost_max += entry_cost_max + + # Construct PartStocktake instance + # Note that we use the *total* values for the PartStocktake instance + instance = part.models.PartStocktake( + part=target, + item_count=stock_entries.count(), + quantity=total_quantity, + cost_min=total_cost_min, + cost_max=total_cost_max, + note=note, + user=user, + ) + + if commit: + instance.save() + + # Add location-specific data to the instance + instance.location_item_count = location_item_count + instance.location_quantity = location_quantity + instance.location_cost_min = location_cost_min + instance.location_cost_max = location_cost_max + + return instance + + +def generate_stocktake_report(**kwargs): + """Generated a new stocktake report. + + Note that this method should be called only by the background worker process! + + Unless otherwise specified, the stocktake report is generated for *all* Part instances. + Optional filters can by supplied via the kwargs + + kwargs: + user: The user who requested this stocktake (set to None for automated stocktake) + part: Optional Part instance to filter by (including variant parts) + category: Optional PartCategory to filter results + location: Optional StockLocation to filter results + exclude_external: If True, exclude stock items in external locations (default = False) + generate_report: If True, generate a stocktake report from the calculated data (default=True) + update_parts: If True, save stocktake information against each filtered Part (default = True) + """ + # Determine if external locations should be excluded + exclude_external = kwargs.get( + 'exclude_exernal', + common.models.InvenTreeSetting.get_setting('STOCKTAKE_EXCLUDE_EXTERNAL', False) + ) + + parts = part.models.Part.objects.all() + user = kwargs.get('user', None) + + generate_report = kwargs.get('generate_report', True) + update_parts = kwargs.get('update_parts', True) + + # Filter by 'Part' instance + if p := kwargs.get('part', None): + variants = p.get_descendants(include_self=True) + parts = parts.filter( + pk__in=[v.pk for v in variants] + ) + + # Filter by 'Category' instance (cascading) + if category := kwargs.get('category', None): + categories = category.get_descendants(include_self=True) + parts = parts.filter(category__in=categories) + + # Filter by 'Location' instance (cascading) + # Stocktake report will be limited to parts which have stock items within this location + if location := kwargs.get('location', None): + # Extract flat list of all sublocations + locations = list(location.get_descendants(include_self=True)) + + # Items which exist within these locations + items = stock.models.StockItem.objects.filter(location__in=locations) + + if exclude_external: + items = items.exclude(location__external=True) + + # List of parts which exist within these locations + unique_parts = items.order_by().values('part').distinct() + + parts = parts.filter( + pk__in=[result['part'] for result in unique_parts] + ) + + # Exit if filters removed all parts + n_parts = parts.count() + + if n_parts == 0: + logger.info("No parts selected for stocktake report - exiting") + return + + logger.info("Generating new stocktake report for %s parts", n_parts) + + base_currency = common.settings.currency_code_default() + + # Construct an initial dataset for the stocktake report + dataset = tablib.Dataset( + headers=[ + _('Part ID'), + _('Part Name'), + _('Part Description'), + _('Category ID'), + _('Category Name'), + _('Stock Items'), + _('Total Quantity'), + _('Total Cost Min') + f' ({base_currency})', + _('Total Cost Max') + f' ({base_currency})', + ] + ) + + parts = parts.prefetch_related('category', 'stock_items') + + # Simple profiling for this task + t_start = time.time() + + # Keep track of each individual "stocktake" we perform. + # They may be bulk-commited to the database afterwards + stocktake_instances = [] + + total_parts = 0 + + # Iterate through each Part which matches the filters above + for p in parts: + + # Create a new stocktake for this part (do not commit, this will take place later on) + stocktake = perform_stocktake( + p, user, commit=False, + exclude_external=exclude_external, + location=location, + ) + + total_parts += 1 + + stocktake_instances.append(stocktake) + + # Add a row to the dataset + dataset.append([ + p.pk, + p.full_name, + p.description, + p.category.pk if p.category else '', + p.category.name if p.category else '', + stocktake.location_item_count, + stocktake.location_quantity, + InvenTree.helpers.normalize(stocktake.location_cost_min.amount), + InvenTree.helpers.normalize(stocktake.location_cost_max.amount), + ]) + + # Save a new PartStocktakeReport instance + buffer = io.StringIO() + buffer.write(dataset.export('csv')) + + today = datetime.now().date().isoformat() + filename = f"InvenTree_Stocktake_{today}.csv" + report_file = ContentFile(buffer.getvalue(), name=filename) + + if generate_report: + report_instance = part.models.PartStocktakeReport.objects.create( + report=report_file, + part_count=total_parts, + user=user + ) + + # Notify the requesting user + if user: + + common.notifications.trigger_notification( + report_instance, + category='generate_stocktake_report', + context={ + 'name': _('Stocktake Report Available'), + 'message': _('A new stocktake report is available for download'), + }, + targets=[ + user, + ] + ) + + # If 'update_parts' is set, we save stocktake entries for each individual part + if update_parts: + # Use bulk_create for efficient insertion of stocktake + part.models.PartStocktake.objects.bulk_create( + stocktake_instances, + batch_size=500, + ) + + t_stocktake = time.time() - t_start + logger.info("Generated stocktake report for %s parts in %ss", total_parts, round(t_stocktake, 2)) diff --git a/InvenTree/part/tasks.py b/InvenTree/part/tasks.py index d04d1b7794..a305adeba8 100644 --- a/InvenTree/part/tasks.py +++ b/InvenTree/part/tasks.py @@ -1,21 +1,14 @@ """Background task definitions for the 'part' app""" -import io + import logging import random import time from datetime import datetime, timedelta -from django.contrib.auth.models import User from django.core.exceptions import ValidationError -from django.core.files.base import ContentFile from django.utils.translation import gettext_lazy as _ -import tablib -from djmoney.contrib.exchange.exceptions import MissingRate -from djmoney.contrib.exchange.models import convert_money -from djmoney.money import Money - import common.models import common.notifications import common.settings @@ -24,8 +17,9 @@ import InvenTree.helpers import InvenTree.helpers_model import InvenTree.tasks import part.models -import stock.models -from InvenTree.tasks import ScheduledTask, scheduled_task +import part.stocktake +from InvenTree.tasks import (ScheduledTask, check_daily_holdoff, + record_task_success, scheduled_task) logger = logging.getLogger("inventree") @@ -80,8 +74,7 @@ def update_part_pricing(pricing: part.models.PartPricing, counter: int = 0): pricing: The target PartPricing instance to be updated counter: How many times this function has been called in sequence """ - - logger.info(f"Updating part pricing for {pricing.part}") + logger.info("Updating part pricing for %s", pricing.part) pricing.update_pricing(counter=counter) @@ -97,12 +90,11 @@ def check_missing_pricing(limit=250): Arguments: limit: Maximum number of parts to process at once """ - # Find parts for which pricing information has never been updated results = part.models.PartPricing.objects.filter(updated=None)[:limit] if results.count() > 0: - logger.info(f"Found {results.count()} parts with empty pricing") + logger.info("Found %s parts with empty pricing", results.count()) for pp in results: pp.schedule_for_update() @@ -114,7 +106,7 @@ def check_missing_pricing(limit=250): results = part.models.PartPricing.objects.filter(updated__lte=stale_date)[:limit] if results.count() > 0: - logger.info(f"Found {results.count()} stale pricing entries") + logger.info("Found %s stale pricing entries", results.count()) for pp in results: pp.schedule_for_update() @@ -124,7 +116,7 @@ def check_missing_pricing(limit=250): results = part.models.PartPricing.objects.exclude(currency=currency) if results.count() > 0: - logger.info(f"Found {results.count()} pricing entries in the wrong currency") + logger.info("Found %s pricing entries in the wrong currency", results.count()) for pp in results: pp.schedule_for_update() @@ -133,7 +125,7 @@ def check_missing_pricing(limit=250): results = part.models.Part.objects.filter(pricing_data=None)[:limit] if results.count() > 0: - logger.info(f"Found {results.count()} parts without pricing") + logger.info("Found %s parts without pricing", results.count()) for p in results: pricing = p.pricing @@ -141,242 +133,6 @@ def check_missing_pricing(limit=250): pricing.schedule_for_update() -def perform_stocktake(target: part.models.Part, user: User, note: str = '', commit=True, **kwargs): - """Perform stocktake action on a single part. - - arguments: - target: A single Part model instance - commit: If True (default) save the result to the database - user: User who requested this stocktake - - Returns: - PartStocktake: A new PartStocktake model instance (for the specified Part) - """ - - # Grab all "available" stock items for the Part - # We do not include variant stock when performing a stocktake, - # otherwise the stocktake entries will be duplicated - stock_entries = target.stock_entries(in_stock=True, include_variants=False) - - # Cache min/max pricing information for this Part - pricing = target.pricing - - if not pricing.is_valid: - # If pricing is not valid, let's update - logger.info(f"Pricing not valid for {target} - updating") - pricing.update_pricing(cascade=False) - pricing.refresh_from_db() - - base_currency = common.settings.currency_code_default() - - total_quantity = 0 - total_cost_min = Money(0, base_currency) - total_cost_max = Money(0, base_currency) - - for entry in stock_entries: - - # Update total quantity value - total_quantity += entry.quantity - - has_pricing = False - - # Update price range values - if entry.purchase_price: - # If purchase price is available, use that - try: - pp = convert_money(entry.purchase_price, base_currency) * entry.quantity - total_cost_min += pp - total_cost_max += pp - has_pricing = True - except MissingRate: - logger.warning(f"MissingRate exception occurred converting {entry.purchase_price} to {base_currency}") - - if not has_pricing: - # Fall back to the part pricing data - p_min = pricing.overall_min or pricing.overall_max - p_max = pricing.overall_max or pricing.overall_min - - if p_min or p_max: - try: - total_cost_min += convert_money(p_min, base_currency) * entry.quantity - total_cost_max += convert_money(p_max, base_currency) * entry.quantity - except MissingRate: - logger.warning(f"MissingRate exception occurred converting {p_min}:{p_max} to {base_currency}") - - # Construct PartStocktake instance - instance = part.models.PartStocktake( - part=target, - item_count=stock_entries.count(), - quantity=total_quantity, - cost_min=total_cost_min, - cost_max=total_cost_max, - note=note, - user=user, - ) - - if commit: - instance.save() - - return instance - - -def generate_stocktake_report(**kwargs): - """Generated a new stocktake report. - - Note that this method should be called only by the background worker process! - - Unless otherwise specified, the stocktake report is generated for *all* Part instances. - Optional filters can by supplied via the kwargs - - kwargs: - user: The user who requested this stocktake (set to None for automated stocktake) - part: Optional Part instance to filter by (including variant parts) - category: Optional PartCategory to filter results - location: Optional StockLocation to filter results - generate_report: If True, generate a stocktake report from the calculated data (default=True) - update_parts: If True, save stocktake information against each filtered Part (default = True) - """ - - parts = part.models.Part.objects.all() - user = kwargs.get('user', None) - - generate_report = kwargs.get('generate_report', True) - update_parts = kwargs.get('update_parts', True) - - # Filter by 'Part' instance - if p := kwargs.get('part', None): - variants = p.get_descendants(include_self=True) - parts = parts.filter( - pk__in=[v.pk for v in variants] - ) - - # Filter by 'Category' instance (cascading) - if category := kwargs.get('category', None): - categories = category.get_descendants(include_self=True) - parts = parts.filter(category__in=categories) - - # Filter by 'Location' instance (cascading) - # Stocktake report will be limited to parts which have stock items within this location - if location := kwargs.get('location', None): - # Extract flat list of all sublocations - locations = list(location.get_descendants(include_self=True)) - - # Items which exist within these locations - items = stock.models.StockItem.objects.filter(location__in=locations) - - # List of parts which exist within these locations - unique_parts = items.order_by().values('part').distinct() - - parts = parts.filter( - pk__in=[result['part'] for result in unique_parts] - ) - - # Exit if filters removed all parts - n_parts = parts.count() - - if n_parts == 0: - logger.info("No parts selected for stocktake report - exiting") - return - - logger.info(f"Generating new stocktake report for {n_parts} parts") - - base_currency = common.settings.currency_code_default() - - # Construct an initial dataset for the stocktake report - dataset = tablib.Dataset( - headers=[ - _('Part ID'), - _('Part Name'), - _('Part Description'), - _('Category ID'), - _('Category Name'), - _('Stock Items'), - _('Total Quantity'), - _('Total Cost Min') + f' ({base_currency})', - _('Total Cost Max') + f' ({base_currency})', - ] - ) - - parts = parts.prefetch_related('category', 'stock_items') - - # Simple profiling for this task - t_start = time.time() - - # Keep track of each individual "stocktake" we perform. - # They may be bulk-commited to the database afterwards - stocktake_instances = [] - - total_parts = 0 - - # Iterate through each Part which matches the filters above - for p in parts: - - # Create a new stocktake for this part (do not commit, this will take place later on) - stocktake = perform_stocktake(p, user, commit=False) - - if stocktake.quantity == 0: - # Skip rows with zero total quantity - continue - - total_parts += 1 - - stocktake_instances.append(stocktake) - - # Add a row to the dataset - dataset.append([ - p.pk, - p.full_name, - p.description, - p.category.pk if p.category else '', - p.category.name if p.category else '', - stocktake.item_count, - stocktake.quantity, - InvenTree.helpers.normalize(stocktake.cost_min.amount), - InvenTree.helpers.normalize(stocktake.cost_max.amount), - ]) - - # Save a new PartStocktakeReport instance - buffer = io.StringIO() - buffer.write(dataset.export('csv')) - - today = datetime.now().date().isoformat() - filename = f"InvenTree_Stocktake_{today}.csv" - report_file = ContentFile(buffer.getvalue(), name=filename) - - if generate_report: - report_instance = part.models.PartStocktakeReport.objects.create( - report=report_file, - part_count=total_parts, - user=user - ) - - # Notify the requesting user - if user: - - common.notifications.trigger_notification( - report_instance, - category='generate_stocktake_report', - context={ - 'name': _('Stocktake Report Available'), - 'message': _('A new stocktake report is available for download'), - }, - targets=[ - user, - ] - ) - - # If 'update_parts' is set, we save stocktake entries for each individual part - if update_parts: - # Use bulk_create for efficient insertion of stocktake - part.models.PartStocktake.objects.bulk_create( - stocktake_instances, - batch_size=500, - ) - - t_stocktake = time.time() - t_start - logger.info(f"Generated stocktake report for {total_parts} parts in {round(t_stocktake, 2)}s") - - @scheduled_task(ScheduledTask.DAILY) def scheduled_stocktake_reports(): """Scheduled tasks for creating automated stocktake reports. @@ -386,7 +142,6 @@ def scheduled_stocktake_reports(): - Delete 'old' stocktake report files after the specified period - Generate new reports at the specified period """ - # Sleep a random number of seconds to prevent worker conflict time.sleep(random.randint(1, 5)) @@ -396,7 +151,7 @@ def scheduled_stocktake_reports(): old_reports = part.models.PartStocktakeReport.objects.filter(date__lt=threshold) if old_reports.count() > 0: - logger.info(f"Deleting {old_reports.count()} stale stocktake reports") + logger.info("Deleting %s stale stocktake reports", old_reports.count()) old_reports.delete() # Next, check if stocktake functionality is enabled @@ -410,27 +165,15 @@ def scheduled_stocktake_reports(): logger.info("Stocktake auto reports are disabled, exiting") return - # How long ago was last full stocktake report generated? - last_report = common.models.InvenTreeSetting.get_setting('STOCKTAKE_RECENT_REPORT', '', cache=False) - - try: - last_report = datetime.fromisoformat(last_report) - except ValueError: - last_report = None - - if last_report: - # Do not attempt if the last report was within the minimum reporting period - threshold = datetime.now() - timedelta(days=report_n_days) - - if last_report > threshold: - logger.info("Automatic stocktake report was recently generated - exiting") - return + if not check_daily_holdoff('STOCKTAKE_RECENT_REPORT', report_n_days): + logger.info("Stocktake report was recently generated - exiting") + return # Let's start a new stocktake report for all parts - generate_stocktake_report(update_parts=True) + part.stocktake.generate_stocktake_report(update_parts=True) # Record the date of this report - common.models.InvenTreeSetting.set_setting('STOCKTAKE_RECENT_REPORT', datetime.now().isoformat(), None) + record_task_success('STOCKTAKE_RECENT_REPORT') def rebuild_parameters(template_id): @@ -439,7 +182,6 @@ def rebuild_parameters(template_id): This function is called when a base template is changed, which may cause the base unit to be adjusted. """ - try: template = part.models.PartParameterTemplate.objects.get(pk=template_id) except part.models.PartParameterTemplate.DoesNotExist: @@ -459,7 +201,8 @@ def rebuild_parameters(template_id): parameter.save() n += 1 - logger.info(f"Rebuilt {n} parameters for template '{template.name}'") + if n > 0: + logger.info("Rebuilt %s parameters for template '%s'", n, template.name) def rebuild_supplier_parts(part_id): @@ -468,7 +211,6 @@ def rebuild_supplier_parts(part_id): This function is called when a bart part is changed, which may cause the native units of any supplier parts to be updated """ - try: prt = part.models.Part.objects.get(pk=part_id) except part.models.Part.DoesNotExist: @@ -486,4 +228,5 @@ def rebuild_supplier_parts(part_id): except ValidationError: pass - logger.info(f"Rebuilt {n} supplier parts for part '{prt.name}'") + if n > 0: + logger.info("Rebuilt %s supplier parts for part '%s'", n, prt.name) diff --git a/InvenTree/part/templates/part/bom.html b/InvenTree/part/templates/part/bom.html index f9bcfc483a..e917cbd288 100644 --- a/InvenTree/part/templates/part/bom.html +++ b/InvenTree/part/templates/part/bom.html @@ -23,20 +23,7 @@ {% endif %}
-
- {% if roles.part.change %} - - - {% endif %} - {% include "filter_list.html" with id="bom" %} -
+ {% include "filter_list.html" with id="bom" %}
diff --git a/InvenTree/part/templates/part/category.html b/InvenTree/part/templates/part/category.html index c560eed392..cfa1f17023 100644 --- a/InvenTree/part/templates/part/category.html +++ b/InvenTree/part/templates/part/category.html @@ -25,10 +25,11 @@ {% endblock heading %} {% block actions %} -{% if category and user.is_staff and roles.part_category.change %} -{% url 'admin:part_partcategory_change' category.pk as url %} +{% if category %} +{% admin_url user "part.partcategory" category.pk as url %} {% include "admin_button.html" with url=url %} {% endif %} + {% settings_value "STOCKTAKE_ENABLE" as stocktake_enable %} {% if stocktake_enable and roles.stocktake.add %} - - - {% include "filter_list.html" with id="parts" %} - + {% include "filter_list.html" with id="parts" %}
@@ -209,9 +193,7 @@
-
- {% include "filter_list.html" with id="parameters" %} -
+ {% include "filter_list.html" with id="parameters" %}
@@ -235,9 +217,7 @@
-
- {% include "filter_list.html" with id="category" %} -
+ {% include "filter_list.html" with id="category" %}
@@ -260,8 +240,17 @@ generateStocktakeReport({ category: { {% if category %}value: {{ category.pk }},{% endif %} + tree_picker: { + url: '{% url "api-part-category-tree" %}', + default_icon: global_settings.PART_CATEGORY_DEFAULT_ICON, + }, + }, + location: { + tree_picker: { + url: '{% url "api-location-tree" %}', + default_icon: global_settings.STOCK_LOCATION_DEFAULT_ICON, + }, }, - location: {}, generate_report: {}, update_parts: {}, }); diff --git a/InvenTree/part/templates/part/detail.html b/InvenTree/part/templates/part/detail.html index 447c83ee01..6f9a11147b 100644 --- a/InvenTree/part/templates/part/detail.html +++ b/InvenTree/part/templates/part/detail.html @@ -93,9 +93,7 @@
-
- {% include "filter_list.html" with id="parttests" %} -
+ {% include "filter_list.html" with id="parttests" %}
@@ -116,9 +114,7 @@
-
- {% include "filter_list.html" with id="partpurchaseorders" %} -
+ {% include "filter_list.html" with id="partpurchaseorders" %}
@@ -132,9 +128,7 @@
-
- {% include "filter_list.html" with id="salesorder" %} -
+ {% include "filter_list.html" with id="salesorder" %}
@@ -145,11 +139,8 @@

{% trans "Sales Order Allocations" %}

-
-
- {% include "filter_list.html" with id="salesorderallocation" %} -
+ {% include "filter_list.html" with id="salesorderallocation" %}
@@ -190,11 +181,7 @@
-
-
- {% include "filter_list.html" with id="variants" %} -
-
+ {% include "filter_list.html" with id="variants" %}
@@ -218,11 +205,7 @@
-
-
- {% include "filter_list.html" with id="parameters" %} -
-
+ {% include "filter_list.html" with id="parameters" %}
@@ -259,9 +242,7 @@
@@ -317,9 +298,7 @@
-
- {% include "filter_list.html" with id="usedin" %} -
+ {% include "filter_list.html" with id="usedin" %}
@@ -346,9 +325,7 @@
-
- {% include "filter_list.html" with id="build" %} -
+ {% include "filter_list.html" with id="build" %}
@@ -362,9 +339,7 @@
-
- {% include "filter_list.html" with id="buildorderallocation" %} -
+ {% include "filter_list.html" with id="buildorderallocation" %}
@@ -385,17 +360,7 @@
-
-
- - -
- {% include "filter_list.html" with id="supplier-part" %} -
+ {% include "filter_list.html" with id="supplier-part" %}
@@ -416,15 +381,7 @@
-
-
- - - {% include "filter_list.html" with id="manufacturer-part" %} -
-
+ {% include "filter_list.html" with id="manufacturer-part" %}
@@ -479,7 +436,12 @@ part: { value: {{ part.pk }} }, - location: {}, + location: { + tree_picker: { + url: '{% url "api-location-tree" %}', + default_icon: global_settings.STOCK_LOCATION_DEFAULT_ICON, + }, + }, generate_report: { value: false, }, @@ -526,8 +488,6 @@ } ); - linkButtonsToSelection($("#supplier-part-table"), ['#supplier-part-options']); - loadManufacturerPartTable( '#manufacturer-part-table', "{% url 'api-manufacturer-part-list' %}", @@ -540,8 +500,6 @@ } ); - linkButtonsToSelection($("#manufacturer-part-table"), ['#manufacturer-part-options']); - $("#manufacturer-part-delete").click(function() { var selectionss = getTableData('#manufacturer-part-table'); @@ -625,12 +583,6 @@ sub_part_detail: true, }); - linkButtonsToSelection($("#bom-table"), - [ - "#bom-item-delete", - ] - ); - $('#bom-item-delete').click(function() { // Get a list of the selected BOM items @@ -822,9 +774,6 @@ part_detail: true, supplier_part_detail: true, }, - buttons: [ - '#stock-options', - ], }); $('#item-create').click(function () { diff --git a/InvenTree/part/templates/part/part_base.html b/InvenTree/part/templates/part/part_base.html index bf2142948f..3dcfeebb78 100644 --- a/InvenTree/part/templates/part/part_base.html +++ b/InvenTree/part/templates/part/part_base.html @@ -18,10 +18,8 @@ {% block actions %} -{% if user.is_staff and roles.part.change %} -{% url 'admin:part_part_change' part.pk as url %} +{% admin_url user "part.part" part.pk as url %} {% include "admin_button.html" with url=url %} -{% endif %} {% if starred_directly %}
-
- {% include "filter_list.html" with id="salesorderallocation" %} -
+ {% include "filter_list.html" with id="salesorderallocation" %}
@@ -71,6 +65,7 @@
{% if item.child_count > 0 %} + {% include "filter_list.html" with id="stock-childs" %} {% include "stock_table.html" with prefix="childs-" %} {% else %}
@@ -102,9 +97,7 @@
-
- {% include "filter_list.html" with id="stocktests" %} -
+ {% include "filter_list.html" with id="stocktests" %}
@@ -157,9 +150,7 @@
-
- {% include "filter_list.html" with id='installed-items' %} -
+ {% include "filter_list.html" with id='installed-items' %}
@@ -310,14 +301,11 @@ {% if item.child_count > 0 %} loadStockTable($("#childs-stock-table"), { params: { - location_detail: true, - part_detail: false, ancestor: {{ item.id }}, }, name: 'item-childs', - buttons: [ - '#stock-options', - ], + filterTarget: '#filter-list-stock-childs', + filterKey: 'stock', }); {% endif %} diff --git a/InvenTree/stock/templates/stock/item_base.html b/InvenTree/stock/templates/stock/item_base.html index 618413b562..5e36025014 100644 --- a/InvenTree/stock/templates/stock/item_base.html +++ b/InvenTree/stock/templates/stock/item_base.html @@ -25,10 +25,9 @@ {% block actions %} -{% if user.is_staff and roles.stock.change %} -{% url 'admin:stock_stockitem_change' item.pk as url %} +{% admin_url user "stock.stockitem" item.pk as url %} {% include "admin_button.html" with url=url %} -{% endif %} + {% mixin_available "locate" as locate_available %} {% if plugins_enabled and locate_available %}
{% endif %} @@ -221,9 +223,7 @@
-
- {% include "filter_list.html" with id="location" %} -
+ {% include "filter_list.html" with id="location" %}
@@ -239,9 +239,18 @@ {% if stocktake_enable and roles.stocktake.add %} $('#location-stocktake').click(function() { generateStocktakeReport({ - category: {}, + category: { + tree_picker: { + url: '{% url "api-part-category-tree" %}', + default_icon: global_settings.PART_CATEGORY_DEFAULT_ICON, + }, + }, location: { {% if location %}value: {{ location.pk }},{% endif %} + tree_picker: { + url: '{% url "api-location-tree" %}', + default_icon: global_settings.STOCK_LOCATION_DEFAULT_ICON, + }, }, generate_report: {}, update_parts: {}, @@ -270,13 +279,6 @@ }); }); - linkButtonsToSelection( - $('#sublocation-table'), - [ - '#location-print-options', - ] - ); - {% if labels_enabled %} $('#print-label').click(function() { @@ -291,6 +293,17 @@ }); {% endif %} + {% if report_enabled %} + $('#print-location-report').click(function() { + + printReports({ + items: [{{ location.pk }}], + key: 'location', + url: '{% url "api-stocklocation-report-list" %}', + }); + }); + {% endif %} + {% if location %} $("#barcode-scan-in-items").click(function() { barcodeCheckInStockItems({{ location.id }}); @@ -412,9 +425,6 @@ onPanelLoad('stock', function() { loadStockTable($("#stock-table"), { - buttons: [ - '#stock-options', - ], params: { {% if location %} location: {{ location.pk }}, diff --git a/InvenTree/stock/test_api.py b/InvenTree/stock/test_api.py index b96d5c660d..9d518179b3 100644 --- a/InvenTree/stock/test_api.py +++ b/InvenTree/stock/test_api.py @@ -16,10 +16,11 @@ from rest_framework import status import company.models import part.models from common.models import InvenTreeSetting -from InvenTree.status_codes import StockStatus +from InvenTree.status_codes import StockHistoryCode, StockStatus from InvenTree.unit_test import InvenTreeAPITestCase from part.models import Part -from stock.models import StockItem, StockItemTestResult, StockLocation +from stock.models import (StockItem, StockItemTestResult, StockLocation, + StockLocationType) class StockAPITestCase(InvenTreeAPITestCase): @@ -94,7 +95,10 @@ class StockLocationTest(StockAPITestCase): 'items', 'pathstring', 'owner', - 'url' + 'url', + 'icon', + 'location_type', + 'location_type_detail', ] response = self.get(self.list_url, expected_code=200) @@ -110,8 +114,8 @@ class StockLocationTest(StockAPITestCase): 'name': 'Location', 'description': 'Another location for stock' } - response = self.client.post(self.list_url, data, format='json') - self.assertEqual(response.status_code, status.HTTP_201_CREATED) + + self.post(self.list_url, data, expected_code=201) def test_stock_location_delete(self): """Test stock location deletion with different parameters""" @@ -133,11 +137,9 @@ class StockLocationTest(StockAPITestCase): delete_sub_locations: bool = False delete_stock_items: bool = False - if i == Target.move_sub_locations_to_parent_delete_stockitems \ - or i == Target.delete_sub_locations_delete_stockitems: + if i in (Target.move_sub_locations_to_parent_delete_stockitems, Target.delete_sub_locations_delete_stockitems): delete_stock_items = True - if i == Target.delete_sub_locations_move_stockitems_to_parent \ - or i == Target.delete_sub_locations_delete_stockitems: + if i in (Target.delete_sub_locations_move_stockitems_to_parent, Target.delete_sub_locations_delete_stockitems): delete_sub_locations = True # Create a parent stock location @@ -236,7 +238,6 @@ class StockLocationTest(StockAPITestCase): - Stock items cannot be located to structural locations - Check that stock location change to structural fails if items located into it """ - # Create our structural stock location structural_location = StockLocation.objects.create( name='Structural stock location', @@ -293,6 +294,88 @@ class StockLocationTest(StockAPITestCase): with self.assertRaises(ValidationError): non_structural_location.full_clean() + def test_stock_location_icon(self): + """Test stock location icon inheritance from StockLocationType.""" + parent_location = StockLocation.objects.create(name="Parent location") + + location_type = StockLocationType.objects.create(name="Box", description="This is a very cool type of box", icon="fas fa-box") + location = StockLocation.objects.create(name="Test location", custom_icon="fas fa-microscope", location_type=location_type, parent=parent_location) + + res = self.get(self.list_url, {"parent": str(parent_location.pk)}, expected_code=200).json() + self.assertEqual(res[0]["icon"], "fas fa-microscope", "Custom icon from location should be returned") + + location.custom_icon = "" + location.save() + res = self.get(self.list_url, {"parent": str(parent_location.pk)}, expected_code=200).json() + self.assertEqual(res[0]["icon"], "fas fa-box", "Custom icon is None, therefore it should inherit the location type icon") + + location_type.icon = "" + location_type.save() + res = self.get(self.list_url, {"parent": str(parent_location.pk)}, expected_code=200).json() + self.assertEqual(res[0]["icon"], "", "Custom icon and location type icon is None, None should be returned") + + def test_stock_location_list_filter(self): + """Test stock location list filters.""" + parent_location = StockLocation.objects.create(name="Parent location") + + location_type = StockLocationType.objects.create(name="Box", description="This is a very cool type of box", icon="fas fa-box") + location_type2 = StockLocationType.objects.create(name="Shelf", description="This is a very cool type of shelf", icon="fas fa-shapes") + StockLocation.objects.create(name="Test location w. type", location_type=location_type, parent=parent_location) + StockLocation.objects.create(name="Test location w. type 2", parent=parent_location, location_type=location_type2) + StockLocation.objects.create(name="Test location wo type", parent=parent_location) + + res = self.get(self.list_url, {"parent": str(parent_location.pk), "has_location_type": "1"}, expected_code=200).json() + self.assertEqual(len(res), 2) + self.assertEqual(res[0]["name"], "Test location w. type") + self.assertEqual(res[1]["name"], "Test location w. type 2") + + res = self.get(self.list_url, {"parent": str(parent_location.pk), "location_type": str(location_type.pk)}, expected_code=200).json() + self.assertEqual(len(res), 1) + self.assertEqual(res[0]["name"], "Test location w. type") + + res = self.get(self.list_url, {"parent": str(parent_location.pk), "has_location_type": "0"}, expected_code=200).json() + self.assertEqual(len(res), 1) + self.assertEqual(res[0]["name"], "Test location wo type") + + +class StockLocationTypeTest(StockAPITestCase): + """Tests for the StockLocationType API endpoints.""" + + list_url = reverse('api-location-type-list') + + def test_list(self): + """Test that the list endpoint works as expected.""" + location_types = [ + StockLocationType.objects.create(name="Type 1", description="Type 1 desc", icon="fas fa-box"), + StockLocationType.objects.create(name="Type 2", description="Type 2 desc", icon="fas fa-box"), + StockLocationType.objects.create(name="Type 3", description="Type 3 desc", icon="fas fa-box"), + ] + + StockLocation.objects.create(name="Loc 1", location_type=location_types[0]) + StockLocation.objects.create(name="Loc 2", location_type=location_types[0]) + StockLocation.objects.create(name="Loc 3", location_type=location_types[1]) + + res = self.get(self.list_url, expected_code=200).json() + self.assertEqual(len(res), 3) + self.assertCountEqual([r["location_count"] for r in res], [2, 1, 0]) + + def test_delete(self): + """Test that we can delete a location type via API.""" + location_type = StockLocationType.objects.create(name="Type 1", description="Type 1 desc", icon="fas fa-box") + self.delete(reverse('api-location-type-detail', kwargs={"pk": location_type.pk}), expected_code=204) + self.assertEqual(StockLocationType.objects.count(), 0) + + def test_create(self): + """Test that we can create a location type via API.""" + self.post(self.list_url, {"name": "Test Type 1", "description": "Test desc 1", "icon": "fas fa-box"}, expected_code=201) + self.assertIsNotNone(StockLocationType.objects.filter(name="Test Type 1").first()) + + def test_update(self): + """Test that we can update a location type via API.""" + location_type = StockLocationType.objects.create(name="Type 1", description="Type 1 desc", icon="fas fa-box") + res = self.patch(reverse('api-location-type-detail', kwargs={"pk": location_type.pk}), {"icon": "fas fa-shapes"}, expected_code=200).json() + self.assertEqual(res["icon"], "fas fa-shapes") + class StockItemListTest(StockAPITestCase): """Tests for the StockItem API LIST endpoint.""" @@ -310,7 +393,6 @@ class StockItemListTest(StockAPITestCase): def test_top_level_filtering(self): """Test filtering against "top level" stock location""" - # No filters, should return *all* items response = self.get(self.list_url, {}, expected_code=200) self.assertEqual(len(response.data), StockItem.objects.count()) @@ -612,43 +694,42 @@ class StockItemTest(StockAPITestCase): """Test the default location functionality, if a 'location' is not specified in the creation request.""" # The part 'R_4K7_0603' (pk=4) has a default location specified - response = self.client.post( + response = self.post( self.list_url, data={ 'part': 4, 'quantity': 10 - } + }, + expected_code=201 ) - self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.data['location'], 2) # What if we explicitly set the location to a different value? - response = self.client.post( + response = self.post( self.list_url, data={ 'part': 4, 'quantity': 20, 'location': 1, - } + }, + expected_code=201 ) - - self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.data['location'], 1) # And finally, what if we set the location explicitly to None? - response = self.client.post( + response = self.post( self.list_url, data={ 'part': 4, 'quantity': 20, 'location': '', - } + }, + expected_code=201 ) - self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.data['location'], None) def test_stock_item_create(self): @@ -703,7 +784,6 @@ class StockItemTest(StockAPITestCase): def test_stock_item_create_withsupplierpart(self): """Test creation of a StockItem via the API, including SupplierPart data.""" - # POST with non-existent supplier part response = self.post( self.list_url, @@ -884,18 +964,14 @@ class StockItemTest(StockAPITestCase): 'quantity': 10, } - response = self.client.post(self.list_url, data) - - self.assertEqual(response.status_code, status.HTTP_201_CREATED) + response = self.post(self.list_url, data, expected_code=201) self.assertIsNone(response.data['expiry_date']) # Second test - create a new StockItem with an explicit expiry date data['expiry_date'] = '2022-12-12' - response = self.client.post(self.list_url, data) - - self.assertEqual(response.status_code, status.HTTP_201_CREATED) + response = self.post(self.list_url, data, expected_code=201) self.assertIsNotNone(response.data['expiry_date']) self.assertEqual(response.data['expiry_date'], '2022-12-12') @@ -906,14 +982,19 @@ class StockItemTest(StockAPITestCase): 'quantity': 10 } - response = self.client.post(self.list_url, data) - self.assertEqual(response.status_code, status.HTTP_201_CREATED) + response = self.post(self.list_url, data, expected_code=201) # Expected expiry date is 10 days in the future expiry = datetime.now().date() + timedelta(10) self.assertEqual(response.data['expiry_date'], expiry.isoformat()) + # Test result when sending a blank value + data['expiry_date'] = None + + response = self.post(self.list_url, data, expected_code=201) + self.assertEqual(response.data['expiry_date'], expiry.isoformat()) + def test_purchase_price(self): """Test that we can correctly read and adjust purchase price information via the API.""" url = reverse('api-stock-detail', kwargs={'pk': 1}) @@ -1053,7 +1134,6 @@ class StockItemTest(StockAPITestCase): def test_return_from_customer(self): """Test that we can return a StockItem from a customer, via the API""" - # Assign item to customer item = StockItem.objects.get(pk=521) customer = company.models.Company.objects.get(pk=4) @@ -1092,7 +1172,6 @@ class StockItemTest(StockAPITestCase): def test_convert_to_variant(self): """Test that we can convert a StockItem to a variant part via the API""" - category = part.models.PartCategory.objects.get(pk=3) # First, construct a set of template / variant parts @@ -1153,6 +1232,50 @@ class StockItemTest(StockAPITestCase): stock_item.refresh_from_db() self.assertEqual(stock_item.part, variant) + def test_set_status(self): + """Test API endpoint for setting StockItem status""" + url = reverse('api-stock-change-status') + + prt = Part.objects.first() + + # Create a bunch of items + items = [ + StockItem.objects.create(part=prt, quantity=10) for _ in range(10) + ] + + for item in items: + item.refresh_from_db() + self.assertEqual(item.status, StockStatus.OK.value) + + data = { + 'items': [item.pk for item in items], + 'status': StockStatus.DAMAGED.value, + } + + self.post(url, data, expected_code=201) + + # Check that the item has been updated correctly + for item in items: + item.refresh_from_db() + self.assertEqual(item.status, StockStatus.DAMAGED.value) + self.assertEqual(item.tracking_info.count(), 1) + + # Same test, but with one item unchanged + items[0].status = StockStatus.ATTENTION.value + items[0].save() + + data['status'] = StockStatus.ATTENTION.value + + self.post(url, data, expected_code=201) + + for item in items: + item.refresh_from_db() + self.assertEqual(item.status, StockStatus.ATTENTION.value) + self.assertEqual(item.tracking_info.count(), 2) + + tracking = item.tracking_info.last() + self.assertEqual(tracking.tracking_type, StockHistoryCode.EDITED.value) + class StocktakeTest(StockAPITestCase): """Series of tests for the Stocktake API.""" @@ -1298,30 +1421,26 @@ class StockTestResultTest(StockAPITestCase): url = self.get_url() - response = self.client.post( + self.post( url, data={ 'test': 'A test', 'result': True, }, - format='json' + expected_code=400 ) - self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) - # This one should pass! - response = self.client.post( + self.post( url, data={ 'test': 'A test', 'stock_item': 105, 'result': True, }, - format='json' + expected_code=201 ) - self.assertEqual(response.status_code, status.HTTP_201_CREATED) - def test_post(self): """Test creation of a new test result.""" url = self.get_url() @@ -1337,9 +1456,7 @@ class StockTestResultTest(StockAPITestCase): 'notes': 'I guess there was just too much pressure?', } - response = self.client.post(url, data, format='json') - - self.assertEqual(response.status_code, status.HTTP_201_CREATED) + response = self.post(url, data, expected_code=201) response = self.client.get(url) self.assertEqual(len(response.data), n + 1) @@ -1379,7 +1496,6 @@ class StockTestResultTest(StockAPITestCase): } response = self.client.post(self.get_url(), data) - self.assertEqual(response.status_code, 201) # Check that an attachment has been uploaded @@ -1387,7 +1503,6 @@ class StockTestResultTest(StockAPITestCase): def test_bulk_delete(self): """Test that the BulkDelete endpoint works for this model""" - n = StockItemTestResult.objects.count() tests = [] @@ -1562,7 +1677,6 @@ class StockMergeTest(StockAPITestCase): @classmethod def setUpTestData(cls): """Setup for all tests.""" - super().setUpTestData() cls.part = part.models.Part.objects.get(pk=25) @@ -1752,7 +1866,6 @@ class StockMetadataAPITest(InvenTreeAPITestCase): def metatester(self, apikey, model): """Generic tester""" - modeldata = model.objects.first() # Useless test unless a model object is found @@ -1781,7 +1894,6 @@ class StockMetadataAPITest(InvenTreeAPITestCase): def test_metadata(self): """Test all endpoints""" - for apikey, model in { 'api-location-metadata': StockLocation, 'api-stock-test-result-metadata': StockItemTestResult, diff --git a/InvenTree/stock/test_migrations.py b/InvenTree/stock/test_migrations.py index 51e00c8093..e153344e8f 100644 --- a/InvenTree/stock/test_migrations.py +++ b/InvenTree/stock/test_migrations.py @@ -13,7 +13,6 @@ class TestSerialNumberMigration(MigratorTestCase): def prepare(self): """Create initial data for this migration""" - Part = self.old_state.apps.get_model('part', 'part') StockItem = self.old_state.apps.get_model('stock', 'stockitem') @@ -53,7 +52,6 @@ class TestSerialNumberMigration(MigratorTestCase): def test_migrations(self): """Test that the migrations have been applied correctly""" - StockItem = self.new_state.apps.get_model('stock', 'stockitem') # Check that the serial number integer conversion has been applied correctly @@ -77,7 +75,6 @@ class TestScheduledForDeletionMigration(MigratorTestCase): def prepare(self): """Create some initial stock items""" - Part = self.old_state.apps.get_model('part', 'part') StockItem = self.old_state.apps.get_model('stock', 'stockitem') @@ -124,7 +121,6 @@ class TestScheduledForDeletionMigration(MigratorTestCase): def test_migration(self): """Test that all stock items were actually removed""" - StockItem = self.new_state.apps.get_model('stock', 'stockitem') # All the "scheduled for deletion" items have been removed diff --git a/InvenTree/stock/test_views.py b/InvenTree/stock/test_views.py index be2c58733c..38a7afee01 100644 --- a/InvenTree/stock/test_views.py +++ b/InvenTree/stock/test_views.py @@ -39,7 +39,6 @@ class StockDetailTest(StockViewTestCase): def test_basic_info(self): """Test that basic stock item info is rendered""" - url = reverse('stock-item-detail', kwargs={'pk': 1}) response = self.client.get(url) diff --git a/InvenTree/stock/tests.py b/InvenTree/stock/tests.py index 06ae817ce9..6843ee8bce 100644 --- a/InvenTree/stock/tests.py +++ b/InvenTree/stock/tests.py @@ -55,7 +55,6 @@ class StockTest(StockTestBase): def test_pathstring(self): """Check that pathstring updates occur as expected""" - a = StockLocation.objects.create(name="A") b = StockLocation.objects.create(name="B", parent=a) c = StockLocation.objects.create(name="C", parent=b) @@ -131,7 +130,6 @@ class StockTest(StockTestBase): def test_link(self): """Test the link URL field validation""" - item = StockItem.objects.get(pk=1) # Check that invalid URLs fail @@ -178,7 +176,6 @@ class StockTest(StockTestBase): def test_serial_numbers(self): """Test serial number uniqueness""" - # Ensure that 'global uniqueness' setting is enabled InvenTreeSetting.set_setting('SERIAL_NUMBER_GLOBALLY_UNIQUE', True, self.user) @@ -284,7 +281,6 @@ class StockTest(StockTestBase): def test_parent_locations(self): """Test parent.""" - # Ensure pathstring gets updated self.drawer3.save() @@ -318,7 +314,6 @@ class StockTest(StockTestBase): def test_items(self): """Test has_items.""" - # Drawer 3 should have three stock items self.assertEqual(self.drawer3.stock_items.count(), 18) self.assertEqual(self.drawer3.item_count, 18) @@ -495,7 +490,6 @@ class StockTest(StockTestBase): def test_return_from_customer(self): """Test removing previous allocated stock from customer""" - it = StockItem.objects.get(pk=2) # First establish total stock for this part @@ -940,7 +934,6 @@ class StockBarcodeTest(StockTestBase): def test_stock_item_barcode_basics(self): """Simple tests for the StockItem barcode integration""" - item = StockItem.objects.get(pk=1) self.assertEqual(StockItem.barcode_model_type(), 'stockitem') @@ -957,7 +950,6 @@ class StockBarcodeTest(StockTestBase): def test_location_barcode_basics(self): """Simple tests for the StockLocation barcode integration""" - self.assertEqual(StockLocation.barcode_model_type(), 'stocklocation') loc = StockLocation.objects.get(pk=1) @@ -985,7 +977,6 @@ class VariantTest(StockTestBase): def test_serial_numbers(self): """Test serial number functionality for variant / template parts.""" - InvenTreeSetting.set_setting('SERIAL_NUMBER_GLOBALLY_UNIQUE', False, self.user) chair = Part.objects.get(pk=10000) diff --git a/InvenTree/templates/InvenTree/index.html b/InvenTree/templates/InvenTree/index.html index 94a0713957..4d7fecd67a 100644 --- a/InvenTree/templates/InvenTree/index.html +++ b/InvenTree/templates/InvenTree/index.html @@ -25,56 +25,6 @@ {{ block.super }} -function addHeaderTitle(title) { - - addSidebarHeader({ - text: title, - }); -} - -function addHeaderAction(label, title, icon, options) { - - // Construct a "badge" to add to the sidebar item - var badge = ` - - - - `; - - addSidebarItem({ - label: label, - text: title, - icon: icon, - content_after: badge - }); - - // Add a detail item to the detail item-panel - $("#detail-panels").append( - `
-
-

${title}

-
-
-
-
-
` - ); - - // Connect a callback to the table - $(`#table-${label}`).on('load-success.bs.table', function() { - var count = $(`#table-${label}`).bootstrapTable('getData').length; - - var badge = $(`#sidebar-badge-${label}`); - - badge.html(count); - - if (count > 0) { - badge.removeClass('bg-dark'); - badge.addClass('bg-primary'); - } - }); -} - {% settings_value 'HOMEPAGE_HIDE_INACTIVE' user=request.user as hide_inactive %} {% settings_value 'HOMEPAGE_PART_STARRED' user=request.user as setting_part_starred %} {% settings_value 'HOMEPAGE_CATEGORY_STARRED' user=request.user as setting_category_starred %} @@ -88,13 +38,13 @@ addHeaderTitle('{% trans "Parts" %}'); {% if setting_part_starred %} addHeaderAction('starred-parts', '{% trans "Subscribed Parts" %}', 'fa-bell'); loadSimplePartTable("#table-starred-parts", "{% url 'api-part-list' %}", { + name: 'starred-parts', params: { starred: true, {% if hide_inactive %} active: true, {% endif %} }, - name: 'starred_parts', }); {% endif %} @@ -111,9 +61,10 @@ loadPartCategoryTable($('#table-starred-categories'), { {% if setting_part_latest %} addHeaderAction('latest-parts', '{% trans "Latest Parts" %}', 'fa-newspaper'); loadSimplePartTable("#table-latest-parts", "{% url 'api-part-list' %}", { + name: 'latest-parts', params: { ordering: "-creation_date", - limit: {% settings_value "PART_RECENT_COUNT" user=request.user %}, + created_after: moment().subtract(1, 'months').format('YYYY-MM-DD'), {% if hide_inactive %} active: true, {% endif %} @@ -125,6 +76,7 @@ loadSimplePartTable("#table-latest-parts", "{% url 'api-part-list' %}", { {% if setting_bom_validation %} addHeaderAction('bom-validation', '{% trans "BOM Waiting Validation" %}', 'fa-times-circle'); loadSimplePartTable("#table-bom-validation", "{% url 'api-part-list' %}", { + name: 'parts-invalid-bom', params: { "bom_valid": false, {% if hide_inactive %} @@ -150,14 +102,15 @@ loadSimplePartTable("#table-bom-validation", "{% url 'api-part-list' %}", { {% endif %} {% if roles.stock.view %} - {% if setting_stock_recent %} addHeaderAction('recently-updated-stock', '{% trans "Recently Updated" %}', 'fa-clock'); loadStockTable($('#table-recently-updated-stock'), { + disableFilters: true, params: { + in_stock: true, part_detail: true, ordering: "-updated", - limit: {% settings_value "STOCK_RECENT_COUNT" user=request.user %}, + updated_after: moment().subtract(1, 'months').format('YYYY-MM-DD'), }, name: 'recently-updated-stock', }); @@ -166,6 +119,7 @@ loadStockTable($('#table-recently-updated-stock'), { {% if setting_stock_low %} addHeaderAction('low-stock', '{% trans "Low Stock" %}', 'fa-flag'); loadSimplePartTable("#table-low-stock", "{% url 'api-part-list' %}", { + name: 'parts-low-stock', params: { low_stock: true, {% if hide_inactive %} @@ -179,6 +133,7 @@ loadSimplePartTable("#table-low-stock", "{% url 'api-part-list' %}", { {% if setting_stock_depleted %} addHeaderAction('depleted-stock', '{% trans "Depleted Stock" %}', 'fa-times'); loadSimplePartTable("#table-depleted-stock", "{% url 'api-part-list' %}", { + name: 'parts-depleted-stock', params: { depleted_stock: true, {% if hide_inactive %} @@ -191,15 +146,8 @@ loadSimplePartTable("#table-depleted-stock", "{% url 'api-part-list' %}", { {% if setting_stock_needed %} addHeaderAction('stock-to-build', '{% trans "Required for Build Orders" %}', 'fa-bullhorn'); -loadSimplePartTable("#table-stock-to-build", "{% url 'api-part-list' %}", { - params: { - stock_to_build: true, - {% if hide_inactive %} - active: true, - {% endif %} - }, - name: "to_build_parts", -}); + +loadRequiredForBuildsPartsTable("#table-stock-to-build", {}); {% endif %} {% if expiry %} @@ -207,6 +155,7 @@ loadSimplePartTable("#table-stock-to-build", "{% url 'api-part-list' %}", { {% if setting_stock_expired %} addHeaderAction('expired-stock', '{% trans "Expired Stock" %}', 'fa-calendar-times'); loadStockTable($("#table-expired-stock"), { + disableFilters: true, params: { expired: true, location_detail: true, @@ -215,12 +164,14 @@ loadStockTable($("#table-expired-stock"), { active: true, {% endif %} }, + name: 'expired-stock', }); {% endif %} {% if setting_stock_stale %} addHeaderAction('stale-stock', '{% trans "Stale Stock" %}', 'fa-stopwatch'); loadStockTable($("#table-stale-stock"), { + disableFilters: true, params: { stale: true, expired: false, @@ -230,6 +181,7 @@ loadStockTable($("#table-stale-stock"), { active: true, {% endif %} }, + name: 'stale-stock', }); {% endif %} diff --git a/InvenTree/templates/InvenTree/notifications/history.html b/InvenTree/templates/InvenTree/notifications/history.html index adccdd88a1..ca8f24bee5 100644 --- a/InvenTree/templates/InvenTree/notifications/history.html +++ b/InvenTree/templates/InvenTree/notifications/history.html @@ -18,9 +18,7 @@ {% block content %}
-
- {% include "filter_list.html" with id="notifications-history" %} -
+ {% include "filter_list.html" with id="notifications-history" %}
diff --git a/InvenTree/templates/InvenTree/notifications/inbox.html b/InvenTree/templates/InvenTree/notifications/inbox.html index 832807ae1e..9ab28051f4 100644 --- a/InvenTree/templates/InvenTree/notifications/inbox.html +++ b/InvenTree/templates/InvenTree/notifications/inbox.html @@ -18,9 +18,7 @@ {% block content %}
-
- {% include "filter_list.html" with id="notifications-inbox" %} -
+ {% include "filter_list.html" with id="notifications-inbox" %}
diff --git a/InvenTree/templates/InvenTree/settings/part_parameters.html b/InvenTree/templates/InvenTree/settings/part_parameters.html index d2b15edf87..95812ef51e 100644 --- a/InvenTree/templates/InvenTree/settings/part_parameters.html +++ b/InvenTree/templates/InvenTree/settings/part_parameters.html @@ -4,22 +4,37 @@ {% block label %}part-parameters{% endblock label %} {% block heading %} -{% trans "Part Parameter Templates" %} +{% trans "Part Parameters" %} {% endblock heading %} -{% block actions %} - -{% endblock actions %} +{% block panel_content %} -{% block content %} -
-
- {% include "filter_list.html" with id="parameter-templates" %} -
-
- +
+ + {% include "InvenTree/settings/setting.html" with key="PART_PARAMETER_ENFORCE_UNITS" icon="fa-clipboard-check" %} +
-{% endblock content %} +
+
+

{% trans "Part Parameter Templates" %}

+ {% include "spacer.html" %} +
+ +
+
+
+ +
+
+
+ {% include "filter_list.html" with id="parameter-templates" %} +
+
+ +
+
+ +{% endblock panel_content %} diff --git a/InvenTree/templates/InvenTree/settings/part_stocktake.html b/InvenTree/templates/InvenTree/settings/part_stocktake.html index ad9e563a93..b13c7e27d3 100644 --- a/InvenTree/templates/InvenTree/settings/part_stocktake.html +++ b/InvenTree/templates/InvenTree/settings/part_stocktake.html @@ -13,6 +13,7 @@ {% include "InvenTree/settings/setting.html" with key="STOCKTAKE_ENABLE" icon="fa-clipboard-check" %} + {% include "InvenTree/settings/setting.html" with key="STOCKTAKE_EXCLUDE_EXTERNAL" icon="fa-sitemap" %} {% include "InvenTree/settings/setting.html" with key="STOCKTAKE_AUTO_DAYS" icon="fa-calendar-alt" %} {% include "InvenTree/settings/setting.html" with key="STOCKTAKE_DELETE_REPORT_DAYS" icon="fa-trash-alt" %} @@ -35,9 +36,7 @@
-
- {% include "filter_list.html" with id="stocktakereport" %} -
+ {% include "filter_list.html" with id="stocktakereport" %}
diff --git a/InvenTree/templates/InvenTree/settings/physical_units.html b/InvenTree/templates/InvenTree/settings/physical_units.html new file mode 100644 index 0000000000..2be0f68dbc --- /dev/null +++ b/InvenTree/templates/InvenTree/settings/physical_units.html @@ -0,0 +1,21 @@ +{% extends "panel.html" %} + +{% load i18n %} +{% load inventree_extras %} + +{% block label %}units{% endblock label %} + +{% block heading %}{% trans "Physical Units" %}{% endblock heading %} +{% block actions %} + +{% endblock actions %} + +{% block content %} + + +
+ +{% endblock content %} diff --git a/InvenTree/templates/InvenTree/settings/plugin.html b/InvenTree/templates/InvenTree/settings/plugin.html index 3813264176..5ba99b735b 100644 --- a/InvenTree/templates/InvenTree/settings/plugin.html +++ b/InvenTree/templates/InvenTree/settings/plugin.html @@ -35,7 +35,7 @@

{% trans "Plugins" %}

{% include "spacer.html" %}
- {% url 'admin:plugin_pluginconfig_changelist' as url %} + {% admin_url user "plugin.pluginconfig" None as url %} {% include "admin_button.html" with url=url %} {% if plug %} @@ -51,11 +51,7 @@ {% endif %}
-
-
- {% include "filter_list.html" with id="plugins" %} -
-
+ {% include "filter_list.html" with id="plugins" %}
diff --git a/InvenTree/templates/InvenTree/settings/plugin_settings.html b/InvenTree/templates/InvenTree/settings/plugin_settings.html index 21646a298e..32b0dcaa75 100644 --- a/InvenTree/templates/InvenTree/settings/plugin_settings.html +++ b/InvenTree/templates/InvenTree/settings/plugin_settings.html @@ -101,6 +101,13 @@ {% trans "This is a builtin plugin which cannot be disabled" %} {% else %} + {% if plugin.is_sample %} + + + {% trans "Sample" %} + {% trans "This is a sample plugin" %} + + {% endif %} {% trans "Commit Author" %}{{ plugin.package.author }} - {{ plugin.package.mail }}{% include "clip.html" %} diff --git a/InvenTree/templates/InvenTree/settings/pricing.html b/InvenTree/templates/InvenTree/settings/pricing.html index fbcf9ff9d4..cba117ad14 100644 --- a/InvenTree/templates/InvenTree/settings/pricing.html +++ b/InvenTree/templates/InvenTree/settings/pricing.html @@ -51,6 +51,13 @@
{% endif %} + + + {% include "InvenTree/settings/setting.html" with key="CURRENCY_UPDATE_PLUGIN" icon="fa-cog" %} + {% include "InvenTree/settings/setting.html" with key="CURRENCY_UPDATE_INTERVAL" icon="fa-calendar-alt" %} + +
+
diff --git a/InvenTree/templates/InvenTree/settings/setting.html b/InvenTree/templates/InvenTree/settings/setting.html index 13b0ea9c5e..54fc53002b 100644 --- a/InvenTree/templates/InvenTree/settings/setting.html +++ b/InvenTree/templates/InvenTree/settings/setting.html @@ -30,7 +30,9 @@ {% if setting.value == '' %} {% trans "No value set" %} {% else %} - {% if setting.is_choice %} + {% if setting.protected %} + *** + {% elif setting.is_choice %} {{ setting.as_choice }} {% else %} {{ setting.value }} diff --git a/InvenTree/templates/InvenTree/settings/settings.html b/InvenTree/templates/InvenTree/settings/settings.html index 6a90d5e8c5..b06d7d607c 100644 --- a/InvenTree/templates/InvenTree/settings/settings.html +++ b/InvenTree/templates/InvenTree/settings/settings.html @@ -32,6 +32,7 @@ {% include "InvenTree/settings/login.html" %} {% include "InvenTree/settings/barcode.html" %} {% include "InvenTree/settings/project_codes.html" %} +{% include "InvenTree/settings/physical_units.html" %} {% include "InvenTree/settings/notifications.html" %} {% include "InvenTree/settings/label.html" %} {% include "InvenTree/settings/report.html" %} diff --git a/InvenTree/templates/InvenTree/settings/settings_staff_js.html b/InvenTree/templates/InvenTree/settings/settings_staff_js.html index aa1b182151..f5e89462c8 100644 --- a/InvenTree/templates/InvenTree/settings/settings_staff_js.html +++ b/InvenTree/templates/InvenTree/settings/settings_staff_js.html @@ -52,6 +52,82 @@ onPanelLoad('pricing', function() { }); }); +// Javascript for units panel +onPanelLoad('units', function() { + + console.log("units panel"); + + // Construct the "units" table + $('#physical-units-table').bootstrapTable({ + url: '{% url "api-custom-unit-list" %}', + search: true, + columns: [ + { + field: 'name', + title: '{% trans "Name" %}', + }, + { + field: 'definition', + title: '{% trans "Definition" %}', + }, + { + field: 'symbol', + title: '{% trans "Symbol" %}', + formatter: function(value, row) { + let html = value; + let buttons = ''; + + buttons += makeEditButton('button-units-edit', row.pk, '{% trans "Edit" %}'); + buttons += makeDeleteButton('button-units-delete', row.pk, '{% trans "Delete" %}'); + + html += wrapButtons(buttons); + return html; + } + }, + ] + }); + + // Callback to edit a custom unit + $('#physical-units-table').on('click', '.button-units-edit', function() { + let pk = $(this).attr('pk'); + + constructForm(`{% url "api-custom-unit-list" %}${pk}/`, { + title: '{% trans "Edit Custom Unit" %}', + fields: { + name: {}, + definition: {}, + symbol: {}, + }, + refreshTable: '#physical-units-table', + }); + }); + + // Callback to delete a custom unit + $('#physical-units-table').on('click', '.button-units-delete', function() { + let pk = $(this).attr('pk'); + + constructForm(`{% url "api-custom-unit-list" %}${pk}/`, { + title: '{% trans "Delete Custom Unit" %}', + method: 'DELETE', + refreshTable: '#physical-units-table', + }); + }); + + // Callback to create a new custom unit + $('#custom-unit-create').click(function() { + constructForm('{% url "api-custom-unit-list" %}', { + fields: { + name: {}, + definition: {}, + symbol: {}, + }, + title: '{% trans "New Custom Unit" %}', + method: 'POST', + refreshTable: '#physical-units-table', + }); + }); +}); + // Javascript for project codes panel onPanelLoad('project-codes', function() { @@ -232,6 +308,10 @@ onPanelLoad('category', function() { parameter_template: {}, category: { icon: 'fa-sitemap', + tree_picker: { + url: '{% url "api-part-category-tree" %}', + default_icon: global_settings.PART_CATEGORY_DEFAULT_ICON, + }, }, default_value: {}, }, @@ -292,6 +372,10 @@ onPanelLoad('category', function() { category: { icon: 'fa-sitemap', value: pk, + tree_picker: { + url: '{% url "api-part-category-tree" %}', + default_icon: global_settings.PART_CATEGORY_DEFAULT_ICON, + }, }, default_value: {}, }, @@ -324,6 +408,82 @@ onPanelLoad('parts', function() { }); }); +// Javascript for the Stock settings panel +onPanelLoad("stock", function() { + + // Construct the stock location type table + $('#location-type-table').bootstrapTable({ + url: '{% url "api-location-type-list" %}', + search: true, + sortable: true, + formatNoMatches: function() { + return '{% trans "No stock location types found" %}'; + }, + columns: [ + { + field: 'name', + sortable: true, + title: '{% trans "Name" %}', + }, + { + field: 'description', + sortable: false, + title: '{% trans "Description" %}', + }, + { + field: 'icon', + sortable: true, + title: '{% trans "Icon" %}', + }, + { + field: 'location_count', + sortable: true, + title: '{% trans "Location count" %}', + formatter: function(value, row) { + let html = value; + let buttons = ''; + + buttons += makeEditButton('button-location-type-edit', row.pk, '{% trans "Edit Location Type" %}'); + buttons += makeDeleteButton('button-location-type-delete', row.pk, '{% trans "Delete Location type" %}'); + + html += wrapButtons(buttons); + return html; + } + } + ] + }); + + $('#location-type-table').on('click', '.button-location-type-edit', function() { + let pk = $(this).attr('pk'); + + constructForm(`{% url "api-location-type-list" %}${pk}/`, { + title: '{% trans "Edit Location Type" %}', + fields: stockLocationTypeFields(), + refreshTable: '#location-type-table', + }); + }); + + $('#location-type-table').on('click', '.button-location-type-delete', function() { + let pk = $(this).attr('pk'); + + constructForm(`{% url "api-location-type-list" %}${pk}/`, { + title: '{% trans "Delete Location Type" %}', + method: 'DELETE', + refreshTable: '#location-type-table', + }); + }); + + $('#new-location-type').click(function() { + // Construct a new location type + constructForm('{% url "api-location-type-list" %}', { + fields: stockLocationTypeFields(), + title: '{% trans "New Location Type" %}', + method: 'POST', + refreshTable: '#location-type-table', + }); + }); +}); + // Javascript for the Stocktake settings panel onPanelLoad('stocktake', function() { @@ -377,8 +537,18 @@ onPanelLoad('stocktake', function() { $('#btn-generate-stocktake').click(function() { generateStocktakeReport({ part: {}, - category: {}, - location: {}, + category: { + tree_picker: { + url: '{% url "api-part-category-tree" %}', + default_icon: global_settings.PART_CATEGORY_DEFAULT_ICON, + }, + }, + location: { + tree_picker: { + url: '{% url "api-location-tree" %}', + default_icon: global_settings.STOCK_LOCATION_DEFAULT_ICON, + }, + }, generate_report: {}, update_parts: {}, }); diff --git a/InvenTree/templates/InvenTree/settings/sidebar.html b/InvenTree/templates/InvenTree/settings/sidebar.html index 177a4e0a9b..5d29bdc9c8 100644 --- a/InvenTree/templates/InvenTree/settings/sidebar.html +++ b/InvenTree/templates/InvenTree/settings/sidebar.html @@ -32,6 +32,8 @@ {% include "sidebar_item.html" with label='barcodes' text=text icon="fa-qrcode" %} {% trans "Project Codes" as text %} {% include "sidebar_item.html" with label='project-codes' text=text icon="fa-list" %} +{% trans "Physical Units" as text %} +{% include "sidebar_item.html" with label='units' text=text icon="fa-balance-scale" %} {% trans "Notifications" as text %} {% include "sidebar_item.html" with label='global-notifications' text=text icon="fa-bell" %} {% trans "Pricing" as text %} diff --git a/InvenTree/templates/InvenTree/settings/stock.html b/InvenTree/templates/InvenTree/settings/stock.html index b0badca6de..388118555c 100644 --- a/InvenTree/templates/InvenTree/settings/stock.html +++ b/InvenTree/templates/InvenTree/settings/stock.html @@ -25,4 +25,19 @@ + +
+
+

{% trans "Stock Location Types" %}

+ {% include "spacer.html" %} +
+ +
+
+
+ +
+ {% endblock content %} diff --git a/InvenTree/templates/InvenTree/settings/user_display.html b/InvenTree/templates/InvenTree/settings/user_display.html index 8bec3e7c1e..7ae7ae19e3 100644 --- a/InvenTree/templates/InvenTree/settings/user_display.html +++ b/InvenTree/templates/InvenTree/settings/user_display.html @@ -74,7 +74,7 @@ {% if 'alllang' in request.GET %}{% define True as ALL_LANG %}{% endif %} {% for language in languages %} {% define language.code as lang_code %} - {% define locale_stats|keyvalue:lang_code as lang_translated %} + {% translation_stats lang_code as lang_translated %} {% if lang_translated > 10 or lang_code == 'en' or lang_code == LANGUAGE_CODE %}{% define True as use_lang %}{% else %}{% define False as use_lang %}{% endif %} {% if ALL_LANG or use_lang %}